Files
2025-09-29 00:52:08 +02:00

151 lines
3.7 KiB
Python
Executable File

USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_hud.sch"
ENUM SCRIPT_STAGE_ENUM
STAGE_SETUP = 0,
STAGE_PROCESS,
STAGE_CLEANUP
ENDENUM
SCRIPT_STAGE_ENUM eStage = STAGE_SETUP
STRUCT RENDERTARGETDATA
STRING name
float X
float Y
float deltaX
float deltaY
int RED
int GREEN
int BLUE
int targetId
ENDSTRUCT
RENDERTARGETDATA RTs[8]
PROC INITRT(INT id, STRING rtname, STRING name, int red, int green, int blue)
RTs[id].name = name
RTs[id].X = GET_RANDOM_FLOAT_IN_RANGE(0.0,1.0)
RTs[id].Y = GET_RANDOM_FLOAT_IN_RANGE(0.0,1.0)
RTs[id].deltaX = GET_RANDOM_FLOAT_IN_RANGE(0.0,0.25)
RTs[id].deltaY = GET_RANDOM_FLOAT_IN_RANGE(0.0,0.25)
RTs[id].RED = red
RTs[id].GREEN = green
RTs[id].BLUE = blue
REGISTER_NAMED_RENDERTARGET(rtname)
RTs[id].targetId = GET_NAMED_RENDERTARGET_RENDER_ID(rtname)
ENDPROC
PROC RENDERRT(INT id)
SET_TEXT_RENDER_ID((RTs[id].targetId))
DRAW_RECT(0.0,0.0,2.0,2.0,0,0,0,255)
SET_TEXT_FONT(FONT_STANDARD)
SET_TEXT_SCALE(1.0, 1.0)
SET_TEXT_WRAP(1.0, 1.0)
SET_TEXT_COLOUR(RTs[id].RED, RTs[id].GREEN, RTs[id].BLUE, 128)
SET_TEXT_USE_UNDERSCORE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.0, 0.0, "STRING", RTs[id].name )
SET_TEXT_USE_UNDERSCORE(FALSE)
DRAW_RECT(RTs[id].x, RTs[id].y, 0.1, 0.1, RTs[id].RED, RTs[id].GREEN, RTs[id].BLUE, 128)
RTs[id].x += RTs[id].deltaX
RTs[id].y += RTs[id].deltaY
IF RTs[id].x > 1.0 OR RTs[id].x < 0.0
RTs[id].deltaX = -RTs[id].deltaX
ENDIF
IF RTs[id].y > 1.0 OR RTs[id].y < 0.0
RTs[id].deltaY = -RTs[id].deltaY
ENDIF
ENDPROC
PROC LINK_RENDERTARGET(STRING ModelNameString)
INT ModelHash = GET_HASH_KEY(ModelNameString)
MODEL_NAMES ModelName = INT_TO_ENUM(MODEL_NAMES, ModelHash)
IF IS_MODEL_IN_CDIMAGE(ModelName)
LINK_NAMED_RENDERTARGET(ModelName)
ELSE
PRINTSTRING("LINK_RENDERTARGET - Couldn't find a model with the name ")
PRINTSTRING(ModelNameString)
PRINTNL()
SCRIPT_ASSERT("LINK_RENDERTARGET - Couldn't find a model with the name listed in the TTY")
ENDIF
ENDPROC
PROC DO_SETUP()
INITRT(0,"4","Yellow",255,255,0)
INITRT(1,"5","Magenta",255,0,255)
INITRT(2,"6_1555mips","Cyan",0,255,255)
INITRT(3,"6_1555nomips","Yellow",255,255,0)
INITRT(4,"7_8888mips","Yellow",255,255,0)
INITRT(5,"7_8888nomips","Magenta",255,0,255)
INITRT(6,"8_565mips","Magenta",255,0,255)
INITRT(7,"8_565nomips","Cyan",0,255,255)
// Use the names of the models so that we don't need to list cptestbed.xml in enum_maker.txt
LINK_RENDERTARGET("SCRIPT_RT_TESTCUBE_1")
LINK_RENDERTARGET("SCRIPT_RT_TESTCUBE_2")
LINK_RENDERTARGET("SCRIPT_RT_TESTCUBE_003")
LINK_RENDERTARGET("SCRIPT_RT_TESTCUBE_004")
LINK_RENDERTARGET("SCRIPT_RT_TESTCUBE_005")
eStage = STAGE_PROCESS
ENDPROC
PROC DO_PROCESS()
RENDERRT(0)
RENDERRT(1)
RENDERRT(2)
RENDERRT(3)
RENDERRT(4)
RENDERRT(5)
RENDERRT(6)
RENDERRT(7)
ENDPROC
PROC DO_CLEANUP()
PRINTSTRING("\nTEST SCRIPT TERMINATING")PRINTNL()
RELEASE_NAMED_RENDERTARGET("4")
RELEASE_NAMED_RENDERTARGET("5")
RELEASE_NAMED_RENDERTARGET("6_1555mips")
RELEASE_NAMED_RENDERTARGET("6_1555nomips")
RELEASE_NAMED_RENDERTARGET("7_8888mips")
RELEASE_NAMED_RENDERTARGET("7_8888nomips")
RELEASE_NAMED_RENDERTARGET("8_565mips")
RELEASE_NAMED_RENDERTARGET("8_565nomips")
TERMINATE_THIS_THREAD()
ENDPROC
SCRIPT
PRINTSTRING("\nRT TEST SCRIPT STARTING")PRINTNL()
IF HAS_FORCE_CLEANUP_OCCURRED()
DO_CLEANUP()
ENDIF
// Main loop
WHILE TRUE
WAIT(0)
SWITCH eStage
CASE STAGE_SETUP
DO_SETUP()
BREAK
CASE STAGE_PROCESS
DO_PROCESS()
BREAK
CASE STAGE_CLEANUP
DO_CLEANUP()
BREAK
ENDSWITCH
ENDWHILE
ENDSCRIPT