88 lines
2.3 KiB
Plaintext
Executable File
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
|
|
) |