Files
gtav-src/tools_ng/dcc/debug/max2011/scripts/rockstar/util/terrain.ms
T
2025-09-29 00:52:08 +02:00

88 lines
2.3 KiB
Plaintext
Executable File

-- Rockstar Map Export
-- Rockstar North
-- 30/10/2008
-- by Luke Openshaw
-- Utilities for manipulating the terrain shader
filein "rockstar/util/shader_config_loader.ms"
global TexColList = #( color 0 0 0, color 0 0 255, color 0 255 0, color 0 255 255, color 255 0 0, color 255 0 255, color 255 255 0, color 255 255 255 )
fn RsCopyDxMatParamsToRageMatParams ragemat dxmat shader = (
global gmat = dxmat
textureList = #()
errorlist = #()
i = 1
for shadervar in shader.shadervars do (
try (
matvar = execute ("gmat." + shadervar.name)
) catch (
append errorlist ((getCurrentException()) + " " + shadervar.name )
)
if matvar != undefined then (
-- Check if the variable has changed rather than wholesale copy and gc()
-- since it seems to leak
if shadervar.type == "difftex" or shadervar.type == "bumptex" then (
if matvar.filename != RstGetVariable ragemat (shadervar.id as integer) then
(
RstSetVariable ragemat (shadervar.id as integer) matvar.filename
gc()
)
)
else (
if matvar != RstGetVariable ragemat (shadervar.id as integer) then
RstSetVariable ragemat (shadervar.id as integer) matvar
)
)
)
)
fn RsDxRageSwitcherooInner mat = (
dxshadername = RsRemovePathAndExtension mat.effectfile
shader = RsLoadShaderFromXml "terrain" dxshadername
RsCopyDxMatParamsToRageMatParams mat.rendermaterial mat shader
--return mat.rendermaterial
)
fn RsDxRageSwitcheroo obj = (
print ("RsDxRageSwitcheroo called on " + obj.name)
dxmat = undefined
if classof obj.mat == MultiMaterial then (
for submat in obj.mat.materiallist do (
if classof submat == DirectX_9_Shader then (
--dxmat = submat
--submat = RsDxRageSwitcherooInner submat
--RsDxRageSwitcherooInner submat
)
)
)
else if classof obj.mat == DirectX_9_Shader then (
--dxmat = obj.mat
--obj.mat = RsDxRageSwitcherooInner obj.mat
RsDxRageSwitcherooInner obj.mat
)
--return dxmat
)
fn RsIsTerrainMaterial mat = (
-- Doing a string based test sucks but Im not sure of another way to determine if
-- it is a terrain shader
if classof mat == Rage_Shader then (
matname = RstGetShadername mat
if findString matname "terrain_cb" != undefined then return true
)
false
)