Merge pull request #9 from n00b87/actor_animation

Actor animation
This commit is contained in:
Rodney Cunningham
2024-10-20 20:11:49 -04:00
committed by GitHub
36 changed files with 2929 additions and 1648 deletions

View File

@@ -0,0 +1,6 @@
#title ActorAnimationIsPlaying [RCBasic Doc]
#header function ActorAnimationIsPlaying(actor)
Returns true if an actor is currently playing an animation
Note: If the number of loops in the animation is set to -1 then this will always be true since it does not return false until it plays the last frame in the last loop

View File

@@ -0,0 +1,4 @@
#title CreateActorAnimation [RCBasic Doc]
#header Function CreateActorAnimation(actor, start_frame, end_frame, speed)

View File

@@ -0,0 +1,10 @@
#title CreateAnimatedActor [RCBasic Doc]
#header function CreateAnimatedActor( mesh )
Returns a new animated actor composed of a mesh
The mesh can either be created using CreateMesh() or Loaded using LoadMesh()
#ref CreateMesh LoadMesh LoadMeshFromAN8
<br>
#ref CreateOctreeActor CreateCubeActor CreateSphereActor CreateWaterActor CreateLightActor CreateBillboardActor CreateTerrainActor

View File

@@ -4,3 +4,5 @@
Returns a billboard actor
Billboard actors are flat textured planes that are always facing the camera.
#ref CreateAnimatedActor CreateOctreeActor CreateSphereActor CreateWaterActor CreateLightActor CreateCubeActor CreateTerrainActor

View File

@@ -3,4 +3,4 @@
Returns an actor with a cube mesh of the specified size ( cube_size x cube_size x cube_size )
#ref CreateMeshActor CreateMeshOctreeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
#ref CreateAnimatedActor CreateOctreeActor CreateSphereActor CreateWaterActor CreateLightActor CreateBillboardActor CreateTerrainActor

View File

@@ -1,10 +1,10 @@
#title CreateMeshActor [RCBasic Doc]
#header function CreateMeshActor( mesh )
#title CreateAnimatedActor [RCBasic Doc]
#header function CreateAnimatedActor( mesh )
Returns a new actor composed of a mesh
Returns a new animated actor composed of a mesh
The mesh can either be created using CreateMesh() or Loaded using LoadMesh()
#ref CreateMesh LoadMesh
#ref CreateMesh LoadMesh LoadMeshFromAN8
<br>
#ref CreateMeshOctreeActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
#ref CreateOctreeActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor

View File

@@ -0,0 +1,8 @@
#title CreateOctreeActor [RCBasic Doc]
#header function CreateOctreeActor( mesh )
Returns a mesh actor optimized for large objects (such as levels)
#ref CreateMesh LoadMesh
<br>
#ref CreateAnimatedActor CreateCubeActor CreateSphereActor CreateWaterActor CreateLightActor CreateBillboardActor CreateTerrainActor

View File

@@ -3,4 +3,4 @@
Returns an actor composed of a sphere mesh
#ref CreateMeshActor CreateMeshOctreeActor CreateCubeActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
#ref CreateAnimatedActor CreateOctreeActor CreateBillboardActor CreateWaterActor CreateLightActor CreateCubeActor CreateTerrainActor

View File

@@ -5,4 +5,4 @@ Returns terrain generated from a height map
Note: Height Maps can be any supported image format
#ref CreateMeshActor CreateMeshOctreeActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor
#ref CreateAnimatedActor CreateOctreeActor CreateSphereActor CreateWaterActor CreateLightActor CreateCubeActor CreateBillboardActor

View File

@@ -2,3 +2,5 @@
#header function CreateWaterActor( mesh, waveHeight, waveSpeed, waveLength )
Creates an actor with water properties set on a base mesh
#ref CreateAnimatedActor CreateOctreeActor CreateSphereActor CreateCubeActor CreateLightActor CreateBillboardActor CreateTerrainActor

View File

@@ -0,0 +1,4 @@
#title DeleteActorAnimation [RCBasic Doc]
#header sub DeleteActorAnimation(actor, animation)
Deletes an actor's animation

View File

@@ -0,0 +1,6 @@
#title DeleteSpriteAnimation [RCBasic Doc]
#header Sub DeleteSpriteAnimation(sprite, animation)
Delete's a sprite's animation
#ref CreateSpriteAnimation

View File

@@ -0,0 +1,6 @@
#title GetActorAnimationEndFrame [RCBasic Doc]
#header Function GetActorAnimationEndFrame(actor, animation)
Returns the last frame in an actor's animation
#ref SetActorAnimationFrames

View File

@@ -1,4 +1,6 @@
#title GetActorAnimationSpeed [RCBasic Doc]
#header function GetActorAnimationSpeed( actor )
#header function GetActorAnimationSpeed( actor, animation )
Returns actors animation speed in frames per second
Returns actor's animation speed in frames per second
#ref SetActorAnimationSpeed

View File

@@ -0,0 +1,6 @@
#title GetActorAnimationStartFrame [RCBasic Doc]
#header Function GetActorAnimationStartFrame(actor, animation)
Returns the first frame in an actor's animation
#ref SetActorAnimationFrames

View File

@@ -0,0 +1,8 @@
#title GetActorCurrentAnimation [RCBasic Doc]
#header Function GetActorCurrentAnimation(actor)
Returns the current animation set on an actor
Note: Current animation will be 0 if the actor's frame was set with SetActorFrame()
#ref SetActorAnimation SetActorFrame

View File

@@ -0,0 +1,7 @@
#title GetActorFrame [RCBasic Doc]
#header function GetActorFrame(actor)
Returns the current frame number an actor is currently rendering
#ref SetActorFrame GetActorAnimationFrame

View File

@@ -0,0 +1,5 @@
#title NumActorAnimationLoops [RCBasic Doc]
#header function NumActorAnimationLoops(actor)
Returns the total number of loops the actor is set to repeat the animation for

View File

@@ -1,8 +1,12 @@
#title SetActorAnimation [RCBasic Doc]
#header sub SetActorAnimation( actor, start_frame, end_frame)
#header sub SetActorAnimation( actor, animation, num_loops)
Sets the start frame and end frame that an actor will loop through
Sets the current animation for an actor to start playing
Note: Use LoopActorAnimation() to enable or disable animation looping
Notes on num_loops
#list ol
#li <b>num_loops</b> is the number of times to loop the animation after its done playing. To play the animation once, set num_loops to 0.
#li To loop an animation infinitely, set num_loops to -1
#/list
#ref LoopActorAnimation SetActorFrame
#ref CreateActorAnimation

View File

@@ -0,0 +1,6 @@
#title SetActorAnimationFrames [RCBasic Doc]
#header sub SetActorAnimationFrames(actor, animation, start_frame, end_frame)
Changes the frames that plays in an actor's animation
#ref CreateActorAnimation

View File

@@ -1,5 +1,5 @@
#title SetActorAnimationSpeed [RCBasic Doc]
#header sub SetActorAnimationSpeed( actor, speed )
#header sub SetActorAnimationSpeed( actor, animation, speed )
Set the FPS of an actor animation

View File

@@ -2,3 +2,8 @@
#header sub SetActorFrame( actor, frame )
Sets the current frame of an actor
Note: This function will set the actor's animation to 0 which is a default 1 frame animation that is created when the actor is created.
#ref GetActorFrame

View File

@@ -0,0 +1,4 @@
#title SpriteAnimationIsPlaying [RCBasic Doc]
#header Function SpriteAnimationIsPlaying(sprite)

View File

@@ -172,6 +172,7 @@ rc_setWindowAlwaysOnTop( SETWINDOWALWAYSONTOP_FLAG )
rc_setMouseRelative( SETMOUSERELATIVE_FLAG )
rc_flashWindow( FLASHWINDOW_FLAG )
rc_windowIsGrabbed( )
rc_preUpdate( )
rc_canvasOpen( OPENCANVAS_W, OPENCANVAS_H, OPENCANVAS_VIEWPORT_X, OPENCANVAS_VIEWPORT_Y, OPENCANVAS_VIEWPORT_W, OPENCANVAS_VIEWPORT_H, OPENCANVAS_MODE )
rc_canvasClose( CLOSECANVAS_C_NUM )
rc_canvasOpen3D( OPENCANVAS3D_VIEWPORT_X, OPENCANVAS3D_VIEWPORT_Y, OPENCANVAS3D_VIEWPORT_W, OPENCANVAS3D_VIEWPORT_H, OPENCANVAS3D_MODE )
@@ -190,7 +191,7 @@ rc_setCanvasColorMod( SETCANVASCOLORMOD_C_NUM, SETCANVASCOLORMOD_C )
rc_getCanvasColorMod( GETCANVASCOLORMOD_C_NUM )
rc_cloneCanvas( CLONECANVAS_C_NUM, CLONECANVAS_MODE )
rc_setCanvasZ( SETCANVASZ_C_NUM, SETCANVASZ_Z )
rc_getCanvasZ( GETCANVASZ_C_NUM )
rc_getCanvasZ( CANVASZ_C_NUM )
rc_canvasClip( CANVASCLIP_X, CANVASCLIP_Y, CANVASCLIP_W, CANVASCLIP_H )
rc_activeCanvas( )
rc_setCanvasPhysics2D( SETCANVASPHYSICS2D_C_NUM, SETCANVASPHYSICS2D_STATE )
@@ -315,8 +316,8 @@ rc_fontExists( FONTEXISTS_SLOT )
rc_setFont( SETFONT_SLOT )
rc_drawText( DRAWTEXT_TXT$, DRAWTEXT_X, DRAWTEXT_Y )
rc_getTextSize( GETTEXTSIZE_TXT$, &GETTEXTSIZE_W, &GETTEXTSIZE_H )
rc_getTextWidth( GETTEXTWIDTH_TXT$ )
rc_getTextHeight( GETTEXTHEIGHT_TXT$ )
rc_getTextWidth( TEXTWIDTH_TXT$ )
rc_getTextHeight( TEXTHEIGHT_TXT$ )
rc_touchPressure( )
rc_getTouch( &GETTOUCH_STATUS, &GETTOUCH_X, &GETTOUCH_Y, &GETTOUCH_DX, &GETTOUCH_DY )
rc_getMultiTouch( &GETMULTITOUCH_STATUS, &GETMULTITOUCH_X, &GETMULTITOUCH_Y, &GETMULTITOUCH_FINGERS, &GETMULTITOUCH_DIST, &GETMULTITOUCH_THETA )
@@ -446,17 +447,59 @@ rc_readInput_Stop( )
rc_readInput_Text( )
rc_readInput_SetText( READINPUT_SETTEXT_TXT$ )
rc_readInput_ToggleBackspace( READINPUT_TOGGLEBACKSPACE_FLAG )
rc_createSprite( CREATESPRITE_IMG )
rc_createSprite( CREATESPRITE_IMG, CREATESPRITE_FRAME_W, CREATESPRITE_FRAME_H )
rc_deleteSprite( DELETESPRITE_SPRITE )
rc_setSpritePosition( SETSPRITEPOSITION_SPRITE, SETSPRITEPOSITION_X, SETSPRITEPOSITION_Y )
rc_translateSprite( TRANSLATESPRITE_SPRITE, TRANSLATESPRITE_X, TRANSLATESPRITE_Y )
rc_getSpritePosition( GETSPRITEPOSITION_SPRITE, &GETSPRITEPOSITION_X, &GETSPRITEPOSITION_Y )
rc_spriteX( SPRITEX_SPRITE )
rc_spriteY( SPRITEY_SPRITE )
rc_setSpriteRotation( SETSPRITEROTATION_SPRITE, SETSPRITEROTATION_ANGLE )
rc_rotateSprite( ROTATESPRITE_SPRITE, ROTATESPRITE_ANGLE )
rc_getSpriteRotation( GETSPRITEROTATION_SPRITE )
rc_setSpriteScale( SETSPRITESCALE_SPRITE, SETSPRITESCALE_X, SETSPRITESCALE_Y )
rc_scaleSprite( SCALESPRITE_SPRITE, SCALESPRITE_X, SCALESPRITE_Y )
rc_getSpriteScale( GETSPRITESCALE_SPRITE, &GETSPRITESCALE_X, &GETSPRITESCALE_Y )
rc_setSpriteZ( SETSPRITEZ_SPRITE, SETSPRITEZ_Z )
rc_spriteZ( SPRITEZ_SPRITE )
rc_getSpriteSize( GETSPRITESIZE_SPRITE, &GETSPRITESIZE_W, &GETSPRITESIZE_H )
rc_spriteWidth( SPRITEWIDTH_SPRITE )
rc_spriteHeight( SPRITEHEIGHT_SPRITE )
rc_setSpriteVisible( SETSPRITEVISIBLE_SPRITE, SETSPRITEVISIBLE_FLAG )
rc_spriteIsVisible( SPRITEISVISIBLE_SPRITE )
rc_setSpriteSolid( SETSPRITESOLID_SPRITE, SETSPRITESOLID_FLAG )
rc_spriteIsSolid( SPRITEISSOLID_SPRITE )
rc_setSpriteType( SETSPRITETYPE_SPRITE, SETSPRITETYPE_SPRITE_TYPE )
rc_getSpriteType( GETSPRITETYPE_SPRITE )
rc_setSpriteSource( SETSPRITESOURCE_SPRITE, SETSPRITESOURCE_IMG )
rc_getSpriteSource( GETSPRITESOURCE_SPRITE )
rc_createSpriteAnimation( CREATESPRITEANIMATION_SPRITE, CREATESPRITEANIMATION_ANIM_LENGTH, CREATESPRITEANIMATION_SPEED )
rc_setSpriteFrame( SETSPRITEFRAME_SPRITE, SETSPRITEFRAME_FRAME )
rc_getSpriteFrame( GETSPRITEFRAME_SPRITE )
rc_setSpriteAnimationFrame( SETSPRITEANIMATIONFRAME_SPRITE, SETSPRITEANIMATIONFRAME_ANIMATION, SETSPRITEANIMATIONFRAME_ANIM_FRAME, SETSPRITEANIMATIONFRAME_FRAME )
rc_getSpriteAnimationFrame( GETSPRITEANIMATIONFRAME_SPRITE, GETSPRITEANIMATIONFRAME_ANIMATION, GETSPRITEANIMATIONFRAME_ANIM_FRAME )
rc_setSpriteAnimationLength( SETSPRITEANIMATIONLENGTH_SPRITE, SETSPRITEANIMATIONLENGTH_ANIMATION, SETSPRITEANIMATIONLENGTH_ANIM_LENGTH )
rc_getSpriteAnimationLength( GETSPRITEANIMATIONLENGTH_SPRITE, GETSPRITEANIMATIONLENGTH_ANIMATION )
rc_setSpriteAnimationSpeed( SETSPRITEANIMATIONSPEED_SPRITE, SETSPRITEANIMATIONSPEED_ANIMATION, SETSPRITEANIMATIONSPEED_SPEED )
rc_getSpriteAnimationSpeed( GETSPRITEANIMATIONSPEED_SPRITE, GETSPRITEANIMATIONSPEED_ANIMATION )
rc_setSpriteAnimation( SETSPRITEANIMATION_SPRITE, SETSPRITEANIMATION_ANIMATION, SETSPRITEANIMATION_NUM_LOOPS )
rc_getSpriteAnimation( GETSPRITEANIMATION_SPRITE )
rc_getSpriteCurrentAnimationFrame( GETSPRITECURRENTANIMATIONFRAME_SPRITE )
rc_numSpriteAnimationLoops( NUMSPRITEANIMATIONLOOPS_SPRITE )
rc_spriteAnimationIsPlaying( SPRITEANIMATIONISPLAYING_SPRITE )
rc_deleteSpriteAnimation( DELETESPRITEANIMATION_SPRITE, DELETESPRITEANIMATION_ANIMATION )
rc_loadMesh( LOADMESH_MESH_FILE$ )
rc_deleteMesh( DELETEMESH_MESH )
rc_createMesh( )
rc_addMeshBuffer( ADDMESHBUFFER_MESH, ADDMESHBUFFER_VERTEX_COUNT, &ADDMESHBUFFER_VERTEX_DATA, &ADDMESHBUFFER_NORMAL_DATA, &ADDMESHBUFFER_UV_DATA, ADDMESHBUFFER_INDEX_COUNT, &ADDMESHBUFFER_INDEX_DATA )
rc_loadMeshFromArchive( LOADMESHFROMARCHIVE_ARCHIVE$, LOADMESHFROMARCHIVE_MESH_FILE$ )
rc_createPlaneMesh( CREATEPLANEMESH_W, CREATEPLANEMESH_H, CREATEPLANEMESH_TILECOUNT_W, CREATEPLANEMESH_TILECOUNT_H )
rc_createMeshActor( CREATEMESHACTOR_MESH )
rc_createMeshOctreeActor( CREATEMESHOCTREEACTOR_MESH )
rc_loadAN8( LOADAN8_AN8_FILE$ )
rc_loadMeshFromAN8( LOADMESHFROMAN8_AN8_PROJECT, LOADMESHFROMAN8_AN8_SCENE$ )
rc_getNumAN8Scenes( GETNUMAN8SCENES_AN8_PROJECT )
rc_getAN8SceneName( GETAN8SCENENAME$_AN8_PROJECT, GETAN8SCENENAME$_SCENE_NUM )
rc_createAnimatedActor( CREATEANIMATEDACTOR_MESH )
rc_createOctreeActor( CREATEOCTREEACTOR_MESH )
rc_createCubeActor( CREATECUBEACTOR_CUBE_SIZE )
rc_createSphereActor( CREATESPHEREACTOR_RADIUS )
rc_createWaterActor( CREATEWATERACTOR_MESH, CREATEWATERACTOR_WAVEHEIGHT, CREATEWATERACTOR_WAVESPEED, CREATEWATERACTOR_WAVELENGTH )
@@ -664,6 +707,9 @@ rc_setCameraFarValue( SETCAMERAFARVALUE_ZF )
rc_getCameraFarValue( )
rc_setCameraNearValue( SETCAMERANEARVALUE_ZN )
rc_getCameraNearValue( )
rc_setProjectionMatrix( SETPROJECTIONMATRIX_MATA, SETPROJECTIONMATRIX_PROJECTION_TYPE )
rc_getProjectionMatrix( GETPROJECTIONMATRIX_MATA )
rc_getWorldToViewportPosition( GETWORLDTOVIEWPORTPOSITION_X, GETWORLDTOVIEWPORTPOSITION_Y, GETWORLDTOVIEWPORTPOSITION_Z, &GETWORLDTOVIEWPORTPOSITION_VX, &GETWORLDTOVIEWPORTPOSITION_VY )
rc_addSceneSkyBox( ADDSCENESKYBOX_IMG_TOP, ADDSCENESKYBOX_IMG_BOTTOM, ADDSCENESKYBOX_IMG_LEFT, ADDSCENESKYBOX_IMG_RIGHT, ADDSCENESKYBOX_IMG_FRONT, ADDSCENESKYBOX_IMG_BACK )
rc_addSceneSkyDome( ADDSCENESKYDOME_IMG )
rc_addSceneSkyDomeEx( ADDSCENESKYDOMEEX_IMG, ADDSCENESKYDOMEEX_HORIRES, ADDSCENESKYDOMEEX_VERTRES, ADDSCENESKYDOMEEX_TXPERCENTAGE, ADDSCENESKYDOMEEX_SPHEREPERCENTAGE, ADDSCENESKYDOMEEX_RADIUS )
@@ -743,21 +789,21 @@ rc_scaleTerrainTexture( SCALETERRAINTEXTURE_ACTOR, SCALETERRAINTEXTURE_SCALE,
rc_setTerrainCameraMovementDelta( SETTERRAINCAMERAMOVEMENTDELTA_ACTOR, SETTERRAINCAMERAMOVEMENTDELTA_DELTA )
rc_setTerrainCameraRotationDelta( SETTERRAINCAMERAROTATIONDELTA_ACTOR, SETTERRAINCAMERAROTATIONDELTA_DELTA )
rc_setTerrainPatchLOD( SETTERRAINPATCHLOD_ACTOR, SETTERRAINPATCHLOD_PATCHX, SETTERRAINPATCHLOD_PATCHZ, SETTERRAINPATCHLOD_LOD )
rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_START_FRAME, SETACTORANIMATION_END_FRAME )
rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_SPEED )
rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED )
rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS )
rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED )
rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME )
rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR )
rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION )
rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION )
rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION )
rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME )
rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM )
rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ )
rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR )
rc_getActorEndFrame( GETACTORENDFRAME_ACTOR )
rc_getActorCurrentFrame( GETACTORCURRENTFRAME_ACTOR )
rc_getActorStartFrame( GETACTORSTARTFRAME_ACTOR )
rc_startActorTransition( STARTACTORTRANSITION_ACTOR, STARTACTORTRANSITION_FRAME, STARTACTORTRANSITION_TRANSITION_TIME )
rc_stopActorTransition( STOPACTORTRANSITION_ACTOR )
rc_actorIsInTransition( ACTORISINTRANSITION_ACTOR )
rc_getActorTransitionTime( GETACTORTRANSITIONTIME_ACTOR )
rc_actorAnimationIsLooped( ACTORANIMATIONISLOOPED_ACTOR )
rc_loopActorAnimation( LOOPACTORANIMATION_ACTOR, LOOPACTORANIMATION_FLAG )
rc_getActorFrame( GETACTORFRAME_ACTOR )
rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR )
rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR )
rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS )
rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS )
rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION )
rc_createMaterial( )
rc_deleteMaterial( DELETEMATERIAL_MATERIAL_ID )
rc_setActorMaterial( SETACTORMATERIAL_ACTOR, SETACTORMATERIAL_MATERIAL_NUM, SETACTORMATERIAL_MATERIAL_ID )

View File

@@ -442,6 +442,7 @@ void init_embedded_functions()
embed_function("FlashWindow", ID_TYPE_FN_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("WindowIsGrabbed", ID_TYPE_FN_NUM);
embed_function("PreUpdate", ID_TYPE_SUB);
embed_function("OpenCanvas", ID_TYPE_FN_NUM);
add_embedded_arg("w", ID_TYPE_NUM);
add_embedded_arg("h", ID_TYPE_NUM);
@@ -506,7 +507,7 @@ void init_embedded_functions()
embed_function("SetCanvasZ", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
embed_function("GetCanvasZ", ID_TYPE_FN_NUM);
embed_function("CanvasZ", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("CanvasClip", ID_TYPE_FN_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
@@ -887,9 +888,9 @@ void init_embedded_functions()
add_embedded_arg("txt$", ID_TYPE_STR);
add_embedded_arg("w", ID_TYPE_BYREF_NUM);
add_embedded_arg("h", ID_TYPE_BYREF_NUM);
embed_function("GetTextWidth", ID_TYPE_FN_NUM);
embed_function("TextWidth", ID_TYPE_FN_NUM);
add_embedded_arg("txt$", ID_TYPE_STR);
embed_function("GetTextHeight", ID_TYPE_FN_NUM);
embed_function("TextHeight", ID_TYPE_FN_NUM);
add_embedded_arg("txt$", ID_TYPE_STR);
embed_function("TouchPressure", ID_TYPE_FN_NUM);
embed_function("GetTouch", ID_TYPE_SUB);
@@ -1283,12 +1284,126 @@ void init_embedded_functions()
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("CreateSprite", ID_TYPE_FN_NUM);
add_embedded_arg("img", ID_TYPE_NUM);
add_embedded_arg("frame_w", ID_TYPE_NUM);
add_embedded_arg("frame_h", ID_TYPE_NUM);
embed_function("DeleteSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpritePosition", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("TranslateSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("GetSpritePosition", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
embed_function("SpriteX", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SpriteY", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteRotation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("angle", ID_TYPE_NUM);
embed_function("RotateSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("angle", ID_TYPE_NUM);
embed_function("GetSpriteRotation", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteScale", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("ScaleSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("GetSpriteScale", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
embed_function("SetSpriteZ", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
embed_function("SpriteZ", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("GetSpriteSize", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("w", ID_TYPE_BYREF_NUM);
add_embedded_arg("h", ID_TYPE_BYREF_NUM);
embed_function("SpriteWidth", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SpriteHeight", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteVisible", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("SpriteIsVisible", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteSolid", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("SpriteIsSolid", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteType", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("sprite_type", ID_TYPE_NUM);
embed_function("GetSpriteType", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteSource", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("img", ID_TYPE_NUM);
embed_function("GetSpriteSource", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("CreateSpriteAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("anim_length", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("SetSpriteFrame", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
embed_function("GetSpriteFrame", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteAnimationFrame", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("anim_frame", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
embed_function("GetSpriteAnimationFrame", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("anim_frame", ID_TYPE_NUM);
embed_function("SetSpriteAnimationLength", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("anim_length", ID_TYPE_NUM);
embed_function("GetSpriteAnimationLength", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetSpriteAnimationSpeed", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("GetSpriteAnimationSpeed", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetSpriteAnimation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("GetSpriteAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("GetSpriteCurrentAnimationFrame", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("NumSpriteAnimationLoops", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SpriteAnimationIsPlaying", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("DeleteSpriteAnimation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("LoadMesh", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_file$", ID_TYPE_STR);
embed_function("DeleteMesh", ID_TYPE_SUB);
@@ -1310,9 +1425,19 @@ void init_embedded_functions()
add_embedded_arg("h", ID_TYPE_NUM);
add_embedded_arg("tileCount_w", ID_TYPE_NUM);
add_embedded_arg("tileCount_h", ID_TYPE_NUM);
embed_function("CreateMeshActor", ID_TYPE_FN_NUM);
embed_function("LoadAN8", ID_TYPE_FN_NUM);
add_embedded_arg("an8_file$", ID_TYPE_STR);
embed_function("LoadMeshFromAN8", ID_TYPE_FN_NUM);
add_embedded_arg("an8_project", ID_TYPE_NUM);
add_embedded_arg("an8_scene$", ID_TYPE_STR);
embed_function("GetNumAN8Scenes", ID_TYPE_FN_NUM);
add_embedded_arg("an8_project", ID_TYPE_NUM);
embed_function("GetAN8SceneName$", ID_TYPE_FN_STR);
add_embedded_arg("an8_project", ID_TYPE_NUM);
add_embedded_arg("scene_num", ID_TYPE_NUM);
embed_function("CreateAnimatedActor", ID_TYPE_FN_NUM);
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("CreateMeshOctreeActor", ID_TYPE_FN_NUM);
embed_function("CreateOctreeActor", ID_TYPE_FN_NUM);
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("CreateCubeActor", ID_TYPE_FN_NUM);
add_embedded_arg("cube_size", ID_TYPE_NUM);
@@ -2041,6 +2166,17 @@ void init_embedded_functions()
embed_function("SetCameraNearValue", ID_TYPE_SUB);
add_embedded_arg("zn", ID_TYPE_NUM);
embed_function("GetCameraNearValue", ID_TYPE_FN_NUM);
embed_function("SetProjectionMatrix", ID_TYPE_SUB);
add_embedded_arg("matA", ID_TYPE_NUM);
add_embedded_arg("projection_type", ID_TYPE_NUM);
embed_function("GetProjectionMatrix", ID_TYPE_SUB);
add_embedded_arg("matA", ID_TYPE_NUM);
embed_function("GetWorldToViewportPosition", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
embed_function("AddSceneSkyBox", ID_TYPE_SUB);
add_embedded_arg("img_top", ID_TYPE_NUM);
add_embedded_arg("img_bottom", ID_TYPE_NUM);
@@ -2300,45 +2436,55 @@ void init_embedded_functions()
add_embedded_arg("patchX", ID_TYPE_NUM);
add_embedded_arg("patchZ", ID_TYPE_NUM);
add_embedded_arg("LOD", ID_TYPE_NUM);
embed_function("SetActorAnimation", ID_TYPE_SUB);
embed_function("CreateActorAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("start_frame", ID_TYPE_NUM);
add_embedded_arg("end_frame", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("SetActorAnimation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("SetActorAnimationSpeed", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("SetActorAnimationFrames", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("start_frame", ID_TYPE_NUM);
add_embedded_arg("end_frame", ID_TYPE_NUM);
embed_function("GetActorCurrentAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("GetActorAnimationStartFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("GetActorAnimationEndFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetActorFrame", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
embed_function("GetActorFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("ActorAnimationIsPlaying", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("NumActorAnimationLoops", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("SetActorMD2Animation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("anim", ID_TYPE_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("SetActorMD2AnimationByName", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("anim_name$", ID_TYPE_STR);
embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("DeleteActorAnimation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorEndFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorCurrentFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorStartFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("StartActorTransition", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
add_embedded_arg("transition_time", ID_TYPE_NUM);
embed_function("StopActorTransition", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("ActorIsInTransition", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorTransitionTime", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("actorAnimationIsLooped", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("loopActorAnimation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("createMaterial", ID_TYPE_FN_NUM);
embed_function("deleteMaterial", ID_TYPE_SUB);
add_embedded_arg("material_id", ID_TYPE_NUM);

Binary file not shown.

View File

@@ -436,6 +436,7 @@ add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("FlashWindow", ID_TYPE_FN_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("WindowIsGrabbed", ID_TYPE_FN_NUM);
embed_function("PreUpdate", ID_TYPE_SUB);
embed_function("OpenCanvas", ID_TYPE_FN_NUM);
add_embedded_arg("w", ID_TYPE_NUM);
add_embedded_arg("h", ID_TYPE_NUM);
@@ -500,7 +501,7 @@ add_embedded_arg("mode", ID_TYPE_NUM);
embed_function("SetCanvasZ", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
embed_function("GetCanvasZ", ID_TYPE_FN_NUM);
embed_function("CanvasZ", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("CanvasClip", ID_TYPE_FN_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
@@ -881,9 +882,9 @@ embed_function("GetTextSize", ID_TYPE_SUB);
add_embedded_arg("txt$", ID_TYPE_STR);
add_embedded_arg("w", ID_TYPE_BYREF_NUM);
add_embedded_arg("h", ID_TYPE_BYREF_NUM);
embed_function("GetTextWidth", ID_TYPE_FN_NUM);
embed_function("TextWidth", ID_TYPE_FN_NUM);
add_embedded_arg("txt$", ID_TYPE_STR);
embed_function("GetTextHeight", ID_TYPE_FN_NUM);
embed_function("TextHeight", ID_TYPE_FN_NUM);
add_embedded_arg("txt$", ID_TYPE_STR);
embed_function("TouchPressure", ID_TYPE_FN_NUM);
embed_function("GetTouch", ID_TYPE_SUB);
@@ -1277,12 +1278,126 @@ embed_function("ReadInput_ToggleBackspace", ID_TYPE_SUB);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("CreateSprite", ID_TYPE_FN_NUM);
add_embedded_arg("img", ID_TYPE_NUM);
add_embedded_arg("frame_w", ID_TYPE_NUM);
add_embedded_arg("frame_h", ID_TYPE_NUM);
embed_function("DeleteSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpritePosition", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("TranslateSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("GetSpritePosition", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
embed_function("SpriteX", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SpriteY", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteRotation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("angle", ID_TYPE_NUM);
embed_function("RotateSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("angle", ID_TYPE_NUM);
embed_function("GetSpriteRotation", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteScale", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("ScaleSprite", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("GetSpriteScale", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
embed_function("SetSpriteZ", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
embed_function("SpriteZ", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("GetSpriteSize", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("w", ID_TYPE_BYREF_NUM);
add_embedded_arg("h", ID_TYPE_BYREF_NUM);
embed_function("SpriteWidth", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SpriteHeight", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteVisible", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("SpriteIsVisible", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteSolid", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("SpriteIsSolid", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteType", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("sprite_type", ID_TYPE_NUM);
embed_function("GetSpriteType", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteSource", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("img", ID_TYPE_NUM);
embed_function("GetSpriteSource", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("CreateSpriteAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("anim_length", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("SetSpriteFrame", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
embed_function("GetSpriteFrame", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SetSpriteAnimationFrame", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("anim_frame", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
embed_function("GetSpriteAnimationFrame", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("anim_frame", ID_TYPE_NUM);
embed_function("SetSpriteAnimationLength", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("anim_length", ID_TYPE_NUM);
embed_function("GetSpriteAnimationLength", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetSpriteAnimationSpeed", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("GetSpriteAnimationSpeed", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetSpriteAnimation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("GetSpriteAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("GetSpriteCurrentAnimationFrame", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("NumSpriteAnimationLoops", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("SpriteAnimationIsPlaying", ID_TYPE_FN_NUM);
add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("DeleteSpriteAnimation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("LoadMesh", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_file$", ID_TYPE_STR);
embed_function("DeleteMesh", ID_TYPE_SUB);
@@ -1304,9 +1419,19 @@ add_embedded_arg("w", ID_TYPE_NUM);
add_embedded_arg("h", ID_TYPE_NUM);
add_embedded_arg("tileCount_w", ID_TYPE_NUM);
add_embedded_arg("tileCount_h", ID_TYPE_NUM);
embed_function("CreateMeshActor", ID_TYPE_FN_NUM);
embed_function("LoadAN8", ID_TYPE_FN_NUM);
add_embedded_arg("an8_file$", ID_TYPE_STR);
embed_function("LoadMeshFromAN8", ID_TYPE_FN_NUM);
add_embedded_arg("an8_project", ID_TYPE_NUM);
add_embedded_arg("an8_scene$", ID_TYPE_STR);
embed_function("GetNumAN8Scenes", ID_TYPE_FN_NUM);
add_embedded_arg("an8_project", ID_TYPE_NUM);
embed_function("GetAN8SceneName$", ID_TYPE_FN_STR);
add_embedded_arg("an8_project", ID_TYPE_NUM);
add_embedded_arg("scene_num", ID_TYPE_NUM);
embed_function("CreateAnimatedActor", ID_TYPE_FN_NUM);
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("CreateMeshOctreeActor", ID_TYPE_FN_NUM);
embed_function("CreateOctreeActor", ID_TYPE_FN_NUM);
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("CreateCubeActor", ID_TYPE_FN_NUM);
add_embedded_arg("cube_size", ID_TYPE_NUM);
@@ -2035,6 +2160,17 @@ embed_function("GetCameraFarValue", ID_TYPE_FN_NUM);
embed_function("SetCameraNearValue", ID_TYPE_SUB);
add_embedded_arg("zn", ID_TYPE_NUM);
embed_function("GetCameraNearValue", ID_TYPE_FN_NUM);
embed_function("SetProjectionMatrix", ID_TYPE_SUB);
add_embedded_arg("matA", ID_TYPE_NUM);
add_embedded_arg("projection_type", ID_TYPE_NUM);
embed_function("GetProjectionMatrix", ID_TYPE_SUB);
add_embedded_arg("matA", ID_TYPE_NUM);
embed_function("GetWorldToViewportPosition", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
embed_function("AddSceneSkyBox", ID_TYPE_SUB);
add_embedded_arg("img_top", ID_TYPE_NUM);
add_embedded_arg("img_bottom", ID_TYPE_NUM);
@@ -2294,45 +2430,55 @@ add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("patchX", ID_TYPE_NUM);
add_embedded_arg("patchZ", ID_TYPE_NUM);
add_embedded_arg("LOD", ID_TYPE_NUM);
embed_function("SetActorAnimation", ID_TYPE_SUB);
embed_function("CreateActorAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("start_frame", ID_TYPE_NUM);
add_embedded_arg("end_frame", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("SetActorAnimation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("SetActorAnimationSpeed", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("speed", ID_TYPE_NUM);
embed_function("SetActorAnimationFrames", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
add_embedded_arg("start_frame", ID_TYPE_NUM);
add_embedded_arg("end_frame", ID_TYPE_NUM);
embed_function("GetActorCurrentAnimation", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("GetActorAnimationStartFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("GetActorAnimationEndFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetActorFrame", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
embed_function("GetActorFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("ActorAnimationIsPlaying", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("NumActorAnimationLoops", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("SetActorMD2Animation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("anim", ID_TYPE_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("SetActorMD2AnimationByName", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("anim_name$", ID_TYPE_STR);
embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
add_embedded_arg("num_loops", ID_TYPE_NUM);
embed_function("DeleteActorAnimation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorEndFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorCurrentFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorStartFrame", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("StartActorTransition", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("frame", ID_TYPE_NUM);
add_embedded_arg("transition_time", ID_TYPE_NUM);
embed_function("StopActorTransition", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("ActorIsInTransition", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("GetActorTransitionTime", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("actorAnimationIsLooped", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("loopActorAnimation", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("createMaterial", ID_TYPE_FN_NUM);
embed_function("deleteMaterial", ID_TYPE_SUB);
add_embedded_arg("material_id", ID_TYPE_NUM);

File diff suppressed because it is too large Load Diff

View File

@@ -547,6 +547,9 @@ case FN_FlashWindow: //Number Function
case FN_WindowIsGrabbed: //Number Function
rc_push_num(rc_windowIsGrabbed( ));
break;
case FN_PreUpdate: //Sub Procedure
rc_preUpdate( );
break;
case FN_OpenCanvas: //Number Function
rc_push_num(rc_canvasOpen( OPENCANVAS_W, OPENCANVAS_H, OPENCANVAS_VIEWPORT_X, OPENCANVAS_VIEWPORT_Y, OPENCANVAS_VIEWPORT_W, OPENCANVAS_VIEWPORT_H, OPENCANVAS_MODE ));
break;
@@ -601,8 +604,8 @@ case FN_CloneCanvas: //Number Function
case FN_SetCanvasZ: //Sub Procedure
rc_setCanvasZ( SETCANVASZ_C_NUM, SETCANVASZ_Z );
break;
case FN_GetCanvasZ: //Number Function
rc_push_num(rc_getCanvasZ( GETCANVASZ_C_NUM ));
case FN_CanvasZ: //Number Function
rc_push_num(rc_getCanvasZ( CANVASZ_C_NUM ));
break;
case FN_CanvasClip: //Number Function
rc_push_num(rc_canvasClip( CANVASCLIP_X, CANVASCLIP_Y, CANVASCLIP_W, CANVASCLIP_H ));
@@ -976,11 +979,11 @@ case FN_DrawText: //Sub Procedure
case FN_GetTextSize: //Sub Procedure
rc_getTextSize( GETTEXTSIZE_TXT$, &GETTEXTSIZE_W, &GETTEXTSIZE_H );
break;
case FN_GetTextWidth: //Number Function
rc_push_num(rc_getTextWidth( GETTEXTWIDTH_TXT$ ));
case FN_TextWidth: //Number Function
rc_push_num(rc_getTextWidth( TEXTWIDTH_TXT$ ));
break;
case FN_GetTextHeight: //Number Function
rc_push_num(rc_getTextHeight( GETTEXTHEIGHT_TXT$ ));
case FN_TextHeight: //Number Function
rc_push_num(rc_getTextHeight( TEXTHEIGHT_TXT$ ));
break;
case FN_TouchPressure: //Number Function
rc_push_num(rc_touchPressure( ));
@@ -1371,7 +1374,7 @@ case FN_ReadInput_ToggleBackspace: //Sub Procedure
rc_readInput_ToggleBackspace( READINPUT_TOGGLEBACKSPACE_FLAG );
break;
case FN_CreateSprite: //Number Function
rc_push_num(rc_createSprite( CREATESPRITE_IMG ));
rc_push_num(rc_createSprite( CREATESPRITE_IMG, CREATESPRITE_FRAME_W, CREATESPRITE_FRAME_H ));
break;
case FN_DeleteSprite: //Sub Procedure
rc_deleteSprite( DELETESPRITE_SPRITE );
@@ -1379,6 +1382,120 @@ case FN_DeleteSprite: //Sub Procedure
case FN_SetSpritePosition: //Sub Procedure
rc_setSpritePosition( SETSPRITEPOSITION_SPRITE, SETSPRITEPOSITION_X, SETSPRITEPOSITION_Y );
break;
case FN_TranslateSprite: //Sub Procedure
rc_translateSprite( TRANSLATESPRITE_SPRITE, TRANSLATESPRITE_X, TRANSLATESPRITE_Y );
break;
case FN_GetSpritePosition: //Sub Procedure
rc_getSpritePosition( GETSPRITEPOSITION_SPRITE, &GETSPRITEPOSITION_X, &GETSPRITEPOSITION_Y );
break;
case FN_SpriteX: //Number Function
rc_push_num(rc_spriteX( SPRITEX_SPRITE ));
break;
case FN_SpriteY: //Number Function
rc_push_num(rc_spriteY( SPRITEY_SPRITE ));
break;
case FN_SetSpriteRotation: //Sub Procedure
rc_setSpriteRotation( SETSPRITEROTATION_SPRITE, SETSPRITEROTATION_ANGLE );
break;
case FN_RotateSprite: //Sub Procedure
rc_rotateSprite( ROTATESPRITE_SPRITE, ROTATESPRITE_ANGLE );
break;
case FN_GetSpriteRotation: //Number Function
rc_push_num(rc_getSpriteRotation( GETSPRITEROTATION_SPRITE ));
break;
case FN_SetSpriteScale: //Sub Procedure
rc_setSpriteScale( SETSPRITESCALE_SPRITE, SETSPRITESCALE_X, SETSPRITESCALE_Y );
break;
case FN_ScaleSprite: //Sub Procedure
rc_scaleSprite( SCALESPRITE_SPRITE, SCALESPRITE_X, SCALESPRITE_Y );
break;
case FN_GetSpriteScale: //Sub Procedure
rc_getSpriteScale( GETSPRITESCALE_SPRITE, &GETSPRITESCALE_X, &GETSPRITESCALE_Y );
break;
case FN_SetSpriteZ: //Sub Procedure
rc_setSpriteZ( SETSPRITEZ_SPRITE, SETSPRITEZ_Z );
break;
case FN_SpriteZ: //Number Function
rc_push_num(rc_spriteZ( SPRITEZ_SPRITE ));
break;
case FN_GetSpriteSize: //Sub Procedure
rc_getSpriteSize( GETSPRITESIZE_SPRITE, &GETSPRITESIZE_W, &GETSPRITESIZE_H );
break;
case FN_SpriteWidth: //Number Function
rc_push_num(rc_spriteWidth( SPRITEWIDTH_SPRITE ));
break;
case FN_SpriteHeight: //Number Function
rc_push_num(rc_spriteHeight( SPRITEHEIGHT_SPRITE ));
break;
case FN_SetSpriteVisible: //Sub Procedure
rc_setSpriteVisible( SETSPRITEVISIBLE_SPRITE, SETSPRITEVISIBLE_FLAG );
break;
case FN_SpriteIsVisible: //Number Function
rc_push_num(rc_spriteIsVisible( SPRITEISVISIBLE_SPRITE ));
break;
case FN_SetSpriteSolid: //Sub Procedure
rc_setSpriteSolid( SETSPRITESOLID_SPRITE, SETSPRITESOLID_FLAG );
break;
case FN_SpriteIsSolid: //Number Function
rc_push_num(rc_spriteIsSolid( SPRITEISSOLID_SPRITE ));
break;
case FN_SetSpriteType: //Sub Procedure
rc_setSpriteType( SETSPRITETYPE_SPRITE, SETSPRITETYPE_SPRITE_TYPE );
break;
case FN_GetSpriteType: //Number Function
rc_push_num(rc_getSpriteType( GETSPRITETYPE_SPRITE ));
break;
case FN_SetSpriteSource: //Sub Procedure
rc_setSpriteSource( SETSPRITESOURCE_SPRITE, SETSPRITESOURCE_IMG );
break;
case FN_GetSpriteSource: //Number Function
rc_push_num(rc_getSpriteSource( GETSPRITESOURCE_SPRITE ));
break;
case FN_CreateSpriteAnimation: //Number Function
rc_push_num(rc_createSpriteAnimation( CREATESPRITEANIMATION_SPRITE, CREATESPRITEANIMATION_ANIM_LENGTH, CREATESPRITEANIMATION_SPEED ));
break;
case FN_SetSpriteFrame: //Sub Procedure
rc_setSpriteFrame( SETSPRITEFRAME_SPRITE, SETSPRITEFRAME_FRAME );
break;
case FN_GetSpriteFrame: //Number Function
rc_push_num(rc_getSpriteFrame( GETSPRITEFRAME_SPRITE ));
break;
case FN_SetSpriteAnimationFrame: //Sub Procedure
rc_setSpriteAnimationFrame( SETSPRITEANIMATIONFRAME_SPRITE, SETSPRITEANIMATIONFRAME_ANIMATION, SETSPRITEANIMATIONFRAME_ANIM_FRAME, SETSPRITEANIMATIONFRAME_FRAME );
break;
case FN_GetSpriteAnimationFrame: //Number Function
rc_push_num(rc_getSpriteAnimationFrame( GETSPRITEANIMATIONFRAME_SPRITE, GETSPRITEANIMATIONFRAME_ANIMATION, GETSPRITEANIMATIONFRAME_ANIM_FRAME ));
break;
case FN_SetSpriteAnimationLength: //Sub Procedure
rc_setSpriteAnimationLength( SETSPRITEANIMATIONLENGTH_SPRITE, SETSPRITEANIMATIONLENGTH_ANIMATION, SETSPRITEANIMATIONLENGTH_ANIM_LENGTH );
break;
case FN_GetSpriteAnimationLength: //Number Function
rc_push_num(rc_getSpriteAnimationLength( GETSPRITEANIMATIONLENGTH_SPRITE, GETSPRITEANIMATIONLENGTH_ANIMATION ));
break;
case FN_SetSpriteAnimationSpeed: //Sub Procedure
rc_setSpriteAnimationSpeed( SETSPRITEANIMATIONSPEED_SPRITE, SETSPRITEANIMATIONSPEED_ANIMATION, SETSPRITEANIMATIONSPEED_SPEED );
break;
case FN_GetSpriteAnimationSpeed: //Number Function
rc_push_num(rc_getSpriteAnimationSpeed( GETSPRITEANIMATIONSPEED_SPRITE, GETSPRITEANIMATIONSPEED_ANIMATION ));
break;
case FN_SetSpriteAnimation: //Sub Procedure
rc_setSpriteAnimation( SETSPRITEANIMATION_SPRITE, SETSPRITEANIMATION_ANIMATION, SETSPRITEANIMATION_NUM_LOOPS );
break;
case FN_GetSpriteAnimation: //Number Function
rc_push_num(rc_getSpriteAnimation( GETSPRITEANIMATION_SPRITE ));
break;
case FN_GetSpriteCurrentAnimationFrame: //Number Function
rc_push_num(rc_getSpriteCurrentAnimationFrame( GETSPRITECURRENTANIMATIONFRAME_SPRITE ));
break;
case FN_NumSpriteAnimationLoops: //Number Function
rc_push_num(rc_numSpriteAnimationLoops( NUMSPRITEANIMATIONLOOPS_SPRITE ));
break;
case FN_SpriteAnimationIsPlaying: //Number Function
rc_push_num(rc_spriteAnimationIsPlaying( SPRITEANIMATIONISPLAYING_SPRITE ));
break;
case FN_DeleteSpriteAnimation: //Sub Procedure
rc_deleteSpriteAnimation( DELETESPRITEANIMATION_SPRITE, DELETESPRITEANIMATION_ANIMATION );
break;
case FN_LoadMesh: //Number Function
rc_push_num(rc_loadMesh( LOADMESH_MESH_FILE$ ));
break;
@@ -1397,11 +1514,23 @@ case FN_LoadMeshFromArchive: //Number Function
case FN_CreatePlaneMesh: //Number Function
rc_push_num(rc_createPlaneMesh( CREATEPLANEMESH_W, CREATEPLANEMESH_H, CREATEPLANEMESH_TILECOUNT_W, CREATEPLANEMESH_TILECOUNT_H ));
break;
case FN_CreateMeshActor: //Number Function
rc_push_num(rc_createMeshActor( CREATEMESHACTOR_MESH ));
case FN_LoadAN8: //Number Function
rc_push_num(rc_loadAN8( LOADAN8_AN8_FILE$ ));
break;
case FN_CreateMeshOctreeActor: //Number Function
rc_push_num(rc_createMeshOctreeActor( CREATEMESHOCTREEACTOR_MESH ));
case FN_LoadMeshFromAN8: //Number Function
rc_push_num(rc_loadMeshFromAN8( LOADMESHFROMAN8_AN8_PROJECT, LOADMESHFROMAN8_AN8_SCENE$ ));
break;
case FN_GetNumAN8Scenes: //Number Function
rc_push_num(rc_getNumAN8Scenes( GETNUMAN8SCENES_AN8_PROJECT ));
break;
case FN_GetAN8SceneName$: //String Function
rc_push_str(rc_getAN8SceneName( GETAN8SCENENAME$_AN8_PROJECT, GETAN8SCENENAME$_SCENE_NUM ));
break;
case FN_CreateAnimatedActor: //Number Function
rc_push_num(rc_createAnimatedActor( CREATEANIMATEDACTOR_MESH ));
break;
case FN_CreateOctreeActor: //Number Function
rc_push_num(rc_createOctreeActor( CREATEOCTREEACTOR_MESH ));
break;
case FN_CreateCubeActor: //Number Function
rc_push_num(rc_createCubeActor( CREATECUBEACTOR_CUBE_SIZE ));
@@ -2024,6 +2153,15 @@ case FN_SetCameraNearValue: //Sub Procedure
case FN_GetCameraNearValue: //Number Function
rc_push_num(rc_getCameraNearValue( ));
break;
case FN_SetProjectionMatrix: //Sub Procedure
rc_setProjectionMatrix( SETPROJECTIONMATRIX_MATA, SETPROJECTIONMATRIX_PROJECTION_TYPE );
break;
case FN_GetProjectionMatrix: //Sub Procedure
rc_getProjectionMatrix( GETPROJECTIONMATRIX_MATA );
break;
case FN_GetWorldToViewportPosition: //Sub Procedure
rc_getWorldToViewportPosition( GETWORLDTOVIEWPORTPOSITION_X, GETWORLDTOVIEWPORTPOSITION_Y, GETWORLDTOVIEWPORTPOSITION_Z, &GETWORLDTOVIEWPORTPOSITION_VX, &GETWORLDTOVIEWPORTPOSITION_VY );
break;
case FN_AddSceneSkyBox: //Sub Procedure
rc_addSceneSkyBox( ADDSCENESKYBOX_IMG_TOP, ADDSCENESKYBOX_IMG_BOTTOM, ADDSCENESKYBOX_IMG_LEFT, ADDSCENESKYBOX_IMG_RIGHT, ADDSCENESKYBOX_IMG_FRONT, ADDSCENESKYBOX_IMG_BACK );
break;
@@ -2261,50 +2399,50 @@ case FN_SetTerrainCameraRotationDelta: //Sub Procedure
case FN_SetTerrainPatchLOD: //Sub Procedure
rc_setTerrainPatchLOD( SETTERRAINPATCHLOD_ACTOR, SETTERRAINPATCHLOD_PATCHX, SETTERRAINPATCHLOD_PATCHZ, SETTERRAINPATCHLOD_LOD );
break;
case FN_CreateActorAnimation: //Number Function
rc_push_num(rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED ));
break;
case FN_SetActorAnimation: //Sub Procedure
rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_START_FRAME, SETACTORANIMATION_END_FRAME );
rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS );
break;
case FN_SetActorAnimationSpeed: //Sub Procedure
rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_SPEED );
rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED );
break;
case FN_SetActorAnimationFrames: //Sub Procedure
rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME );
break;
case FN_GetActorCurrentAnimation: //Number Function
rc_push_num(rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR ));
break;
case FN_GetActorAnimationSpeed: //Number Function
rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION ));
break;
case FN_GetActorAnimationStartFrame: //Number Function
rc_push_num(rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION ));
break;
case FN_GetActorAnimationEndFrame: //Number Function
rc_push_num(rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION ));
break;
case FN_SetActorFrame: //Sub Procedure
rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME );
break;
case FN_GetActorFrame: //Number Function
rc_push_num(rc_getActorFrame( GETACTORFRAME_ACTOR ));
break;
case FN_ActorAnimationIsPlaying: //Number Function
rc_push_num(rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR ));
break;
case FN_NumActorAnimationLoops: //Number Function
rc_push_num(rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR ));
break;
case FN_SetActorMD2Animation: //Sub Procedure
rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM );
rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS );
break;
case FN_SetActorMD2AnimationByName: //Sub Procedure
rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ );
rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS );
break;
case FN_GetActorAnimationSpeed: //Number Function
rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR ));
break;
case FN_GetActorEndFrame: //Number Function
rc_push_num(rc_getActorEndFrame( GETACTORENDFRAME_ACTOR ));
break;
case FN_GetActorCurrentFrame: //Number Function
rc_push_num(rc_getActorCurrentFrame( GETACTORCURRENTFRAME_ACTOR ));
break;
case FN_GetActorStartFrame: //Number Function
rc_push_num(rc_getActorStartFrame( GETACTORSTARTFRAME_ACTOR ));
break;
case FN_StartActorTransition: //Sub Procedure
rc_startActorTransition( STARTACTORTRANSITION_ACTOR, STARTACTORTRANSITION_FRAME, STARTACTORTRANSITION_TRANSITION_TIME );
break;
case FN_StopActorTransition: //Sub Procedure
rc_stopActorTransition( STOPACTORTRANSITION_ACTOR );
break;
case FN_ActorIsInTransition: //Number Function
rc_push_num(rc_actorIsInTransition( ACTORISINTRANSITION_ACTOR ));
break;
case FN_GetActorTransitionTime: //Number Function
rc_push_num(rc_getActorTransitionTime( GETACTORTRANSITIONTIME_ACTOR ));
break;
case FN_actorAnimationIsLooped: //Number Function
rc_push_num(rc_actorAnimationIsLooped( ACTORANIMATIONISLOOPED_ACTOR ));
break;
case FN_loopActorAnimation: //Sub Procedure
rc_loopActorAnimation( LOOPACTORANIMATION_ACTOR, LOOPACTORANIMATION_FLAG );
case FN_DeleteActorAnimation: //Sub Procedure
rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION );
break;
case FN_createMaterial: //Number Function
rc_push_num(rc_createMaterial( ));

File diff suppressed because it is too large Load Diff

View File

@@ -547,6 +547,9 @@ case FN_FlashWindow: //Number Function
case FN_WindowIsGrabbed: //Number Function
rc_push_num(rc_windowIsGrabbed( ));
break;
case FN_PreUpdate: //Sub Procedure
rc_preUpdate( );
break;
case FN_OpenCanvas: //Number Function
rc_push_num(rc_canvasOpen( OPENCANVAS_W, OPENCANVAS_H, OPENCANVAS_VIEWPORT_X, OPENCANVAS_VIEWPORT_Y, OPENCANVAS_VIEWPORT_W, OPENCANVAS_VIEWPORT_H, OPENCANVAS_MODE ));
break;
@@ -601,8 +604,8 @@ case FN_CloneCanvas: //Number Function
case FN_SetCanvasZ: //Sub Procedure
rc_setCanvasZ( SETCANVASZ_C_NUM, SETCANVASZ_Z );
break;
case FN_GetCanvasZ: //Number Function
rc_push_num(rc_getCanvasZ( GETCANVASZ_C_NUM ));
case FN_CanvasZ: //Number Function
rc_push_num(rc_getCanvasZ( CANVASZ_C_NUM ));
break;
case FN_CanvasClip: //Number Function
rc_push_num(rc_canvasClip( CANVASCLIP_X, CANVASCLIP_Y, CANVASCLIP_W, CANVASCLIP_H ));
@@ -976,11 +979,11 @@ case FN_DrawText: //Sub Procedure
case FN_GetTextSize: //Sub Procedure
rc_getTextSize( GETTEXTSIZE_TXT$, &GETTEXTSIZE_W, &GETTEXTSIZE_H );
break;
case FN_GetTextWidth: //Number Function
rc_push_num(rc_getTextWidth( GETTEXTWIDTH_TXT$ ));
case FN_TextWidth: //Number Function
rc_push_num(rc_getTextWidth( TEXTWIDTH_TXT$ ));
break;
case FN_GetTextHeight: //Number Function
rc_push_num(rc_getTextHeight( GETTEXTHEIGHT_TXT$ ));
case FN_TextHeight: //Number Function
rc_push_num(rc_getTextHeight( TEXTHEIGHT_TXT$ ));
break;
case FN_TouchPressure: //Number Function
rc_push_num(rc_touchPressure( ));
@@ -1371,7 +1374,7 @@ case FN_ReadInput_ToggleBackspace: //Sub Procedure
rc_readInput_ToggleBackspace( READINPUT_TOGGLEBACKSPACE_FLAG );
break;
case FN_CreateSprite: //Number Function
rc_push_num(rc_createSprite( CREATESPRITE_IMG, 0, 0 ));
rc_push_num(rc_createSprite( CREATESPRITE_IMG, CREATESPRITE_FRAME_W, CREATESPRITE_FRAME_H ));
break;
case FN_DeleteSprite: //Sub Procedure
rc_deleteSprite( DELETESPRITE_SPRITE );
@@ -1379,6 +1382,120 @@ case FN_DeleteSprite: //Sub Procedure
case FN_SetSpritePosition: //Sub Procedure
rc_setSpritePosition( SETSPRITEPOSITION_SPRITE, SETSPRITEPOSITION_X, SETSPRITEPOSITION_Y );
break;
case FN_TranslateSprite: //Sub Procedure
rc_translateSprite( TRANSLATESPRITE_SPRITE, TRANSLATESPRITE_X, TRANSLATESPRITE_Y );
break;
case FN_GetSpritePosition: //Sub Procedure
rc_getSpritePosition( GETSPRITEPOSITION_SPRITE, &GETSPRITEPOSITION_X, &GETSPRITEPOSITION_Y );
break;
case FN_SpriteX: //Number Function
rc_push_num(rc_spriteX( SPRITEX_SPRITE ));
break;
case FN_SpriteY: //Number Function
rc_push_num(rc_spriteY( SPRITEY_SPRITE ));
break;
case FN_SetSpriteRotation: //Sub Procedure
rc_setSpriteRotation( SETSPRITEROTATION_SPRITE, SETSPRITEROTATION_ANGLE );
break;
case FN_RotateSprite: //Sub Procedure
rc_rotateSprite( ROTATESPRITE_SPRITE, ROTATESPRITE_ANGLE );
break;
case FN_GetSpriteRotation: //Number Function
rc_push_num(rc_getSpriteRotation( GETSPRITEROTATION_SPRITE ));
break;
case FN_SetSpriteScale: //Sub Procedure
rc_setSpriteScale( SETSPRITESCALE_SPRITE, SETSPRITESCALE_X, SETSPRITESCALE_Y );
break;
case FN_ScaleSprite: //Sub Procedure
rc_scaleSprite( SCALESPRITE_SPRITE, SCALESPRITE_X, SCALESPRITE_Y );
break;
case FN_GetSpriteScale: //Sub Procedure
rc_getSpriteScale( GETSPRITESCALE_SPRITE, &GETSPRITESCALE_X, &GETSPRITESCALE_Y );
break;
case FN_SetSpriteZ: //Sub Procedure
rc_setSpriteZ( SETSPRITEZ_SPRITE, SETSPRITEZ_Z );
break;
case FN_SpriteZ: //Number Function
rc_push_num(rc_spriteZ( SPRITEZ_SPRITE ));
break;
case FN_GetSpriteSize: //Sub Procedure
rc_getSpriteSize( GETSPRITESIZE_SPRITE, &GETSPRITESIZE_W, &GETSPRITESIZE_H );
break;
case FN_SpriteWidth: //Number Function
rc_push_num(rc_spriteWidth( SPRITEWIDTH_SPRITE ));
break;
case FN_SpriteHeight: //Number Function
rc_push_num(rc_spriteHeight( SPRITEHEIGHT_SPRITE ));
break;
case FN_SetSpriteVisible: //Sub Procedure
rc_setSpriteVisible( SETSPRITEVISIBLE_SPRITE, SETSPRITEVISIBLE_FLAG );
break;
case FN_SpriteIsVisible: //Number Function
rc_push_num(rc_spriteIsVisible( SPRITEISVISIBLE_SPRITE ));
break;
case FN_SetSpriteSolid: //Sub Procedure
rc_setSpriteSolid( SETSPRITESOLID_SPRITE, SETSPRITESOLID_FLAG );
break;
case FN_SpriteIsSolid: //Number Function
rc_push_num(rc_spriteIsSolid( SPRITEISSOLID_SPRITE ));
break;
case FN_SetSpriteType: //Sub Procedure
rc_setSpriteType( SETSPRITETYPE_SPRITE, SETSPRITETYPE_SPRITE_TYPE );
break;
case FN_GetSpriteType: //Number Function
rc_push_num(rc_getSpriteType( GETSPRITETYPE_SPRITE ));
break;
case FN_SetSpriteSource: //Sub Procedure
rc_setSpriteSource( SETSPRITESOURCE_SPRITE, SETSPRITESOURCE_IMG );
break;
case FN_GetSpriteSource: //Number Function
rc_push_num(rc_getSpriteSource( GETSPRITESOURCE_SPRITE ));
break;
case FN_CreateSpriteAnimation: //Number Function
rc_push_num(rc_createSpriteAnimation( CREATESPRITEANIMATION_SPRITE, CREATESPRITEANIMATION_ANIM_LENGTH, CREATESPRITEANIMATION_SPEED ));
break;
case FN_SetSpriteFrame: //Sub Procedure
rc_setSpriteFrame( SETSPRITEFRAME_SPRITE, SETSPRITEFRAME_FRAME );
break;
case FN_GetSpriteFrame: //Number Function
rc_push_num(rc_getSpriteFrame( GETSPRITEFRAME_SPRITE ));
break;
case FN_SetSpriteAnimationFrame: //Sub Procedure
rc_setSpriteAnimationFrame( SETSPRITEANIMATIONFRAME_SPRITE, SETSPRITEANIMATIONFRAME_ANIMATION, SETSPRITEANIMATIONFRAME_ANIM_FRAME, SETSPRITEANIMATIONFRAME_FRAME );
break;
case FN_GetSpriteAnimationFrame: //Number Function
rc_push_num(rc_getSpriteAnimationFrame( GETSPRITEANIMATIONFRAME_SPRITE, GETSPRITEANIMATIONFRAME_ANIMATION, GETSPRITEANIMATIONFRAME_ANIM_FRAME ));
break;
case FN_SetSpriteAnimationLength: //Sub Procedure
rc_setSpriteAnimationLength( SETSPRITEANIMATIONLENGTH_SPRITE, SETSPRITEANIMATIONLENGTH_ANIMATION, SETSPRITEANIMATIONLENGTH_ANIM_LENGTH );
break;
case FN_GetSpriteAnimationLength: //Number Function
rc_push_num(rc_getSpriteAnimationLength( GETSPRITEANIMATIONLENGTH_SPRITE, GETSPRITEANIMATIONLENGTH_ANIMATION ));
break;
case FN_SetSpriteAnimationSpeed: //Sub Procedure
rc_setSpriteAnimationSpeed( SETSPRITEANIMATIONSPEED_SPRITE, SETSPRITEANIMATIONSPEED_ANIMATION, SETSPRITEANIMATIONSPEED_SPEED );
break;
case FN_GetSpriteAnimationSpeed: //Number Function
rc_push_num(rc_getSpriteAnimationSpeed( GETSPRITEANIMATIONSPEED_SPRITE, GETSPRITEANIMATIONSPEED_ANIMATION ));
break;
case FN_SetSpriteAnimation: //Sub Procedure
rc_setSpriteAnimation( SETSPRITEANIMATION_SPRITE, SETSPRITEANIMATION_ANIMATION, SETSPRITEANIMATION_NUM_LOOPS );
break;
case FN_GetSpriteAnimation: //Number Function
rc_push_num(rc_getSpriteAnimation( GETSPRITEANIMATION_SPRITE ));
break;
case FN_GetSpriteCurrentAnimationFrame: //Number Function
rc_push_num(rc_getSpriteCurrentAnimationFrame( GETSPRITECURRENTANIMATIONFRAME_SPRITE ));
break;
case FN_NumSpriteAnimationLoops: //Number Function
rc_push_num(rc_numSpriteAnimationLoops( NUMSPRITEANIMATIONLOOPS_SPRITE ));
break;
case FN_SpriteAnimationIsPlaying: //Number Function
rc_push_num(rc_spriteAnimationIsPlaying( SPRITEANIMATIONISPLAYING_SPRITE ));
break;
case FN_DeleteSpriteAnimation: //Sub Procedure
rc_deleteSpriteAnimation( DELETESPRITEANIMATION_SPRITE, DELETESPRITEANIMATION_ANIMATION );
break;
case FN_LoadMesh: //Number Function
rc_push_num(rc_loadMesh( LOADMESH_MESH_FILE$ ));
break;
@@ -1397,11 +1514,23 @@ case FN_LoadMeshFromArchive: //Number Function
case FN_CreatePlaneMesh: //Number Function
rc_push_num(rc_createPlaneMesh( CREATEPLANEMESH_W, CREATEPLANEMESH_H, CREATEPLANEMESH_TILECOUNT_W, CREATEPLANEMESH_TILECOUNT_H ));
break;
case FN_CreateMeshActor: //Number Function
rc_push_num(rc_createMeshActor( CREATEMESHACTOR_MESH ));
case FN_LoadAN8: //Number Function
rc_push_num(rc_loadAN8( LOADAN8_AN8_FILE$ ));
break;
case FN_CreateMeshOctreeActor: //Number Function
rc_push_num(rc_createMeshOctreeActor( CREATEMESHOCTREEACTOR_MESH ));
case FN_LoadMeshFromAN8: //Number Function
rc_push_num(rc_loadMeshFromAN8( LOADMESHFROMAN8_AN8_PROJECT, LOADMESHFROMAN8_AN8_SCENE$ ));
break;
case FN_GetNumAN8Scenes: //Number Function
rc_push_num(rc_getNumAN8Scenes( GETNUMAN8SCENES_AN8_PROJECT ));
break;
case FN_GetAN8SceneName$: //String Function
rc_push_str(rc_getAN8SceneName( GETAN8SCENENAME$_AN8_PROJECT, GETAN8SCENENAME$_SCENE_NUM ));
break;
case FN_CreateAnimatedActor: //Number Function
rc_push_num(rc_createAnimatedActor( CREATEANIMATEDACTOR_MESH ));
break;
case FN_CreateOctreeActor: //Number Function
rc_push_num(rc_createOctreeActor( CREATEOCTREEACTOR_MESH ));
break;
case FN_CreateCubeActor: //Number Function
rc_push_num(rc_createCubeActor( CREATECUBEACTOR_CUBE_SIZE ));
@@ -2024,6 +2153,15 @@ case FN_SetCameraNearValue: //Sub Procedure
case FN_GetCameraNearValue: //Number Function
rc_push_num(rc_getCameraNearValue( ));
break;
case FN_SetProjectionMatrix: //Sub Procedure
rc_setProjectionMatrix( SETPROJECTIONMATRIX_MATA, SETPROJECTIONMATRIX_PROJECTION_TYPE );
break;
case FN_GetProjectionMatrix: //Sub Procedure
rc_getProjectionMatrix( GETPROJECTIONMATRIX_MATA );
break;
case FN_GetWorldToViewportPosition: //Sub Procedure
rc_getWorldToViewportPosition( GETWORLDTOVIEWPORTPOSITION_X, GETWORLDTOVIEWPORTPOSITION_Y, GETWORLDTOVIEWPORTPOSITION_Z, &GETWORLDTOVIEWPORTPOSITION_VX, &GETWORLDTOVIEWPORTPOSITION_VY );
break;
case FN_AddSceneSkyBox: //Sub Procedure
rc_addSceneSkyBox( ADDSCENESKYBOX_IMG_TOP, ADDSCENESKYBOX_IMG_BOTTOM, ADDSCENESKYBOX_IMG_LEFT, ADDSCENESKYBOX_IMG_RIGHT, ADDSCENESKYBOX_IMG_FRONT, ADDSCENESKYBOX_IMG_BACK );
break;
@@ -2261,50 +2399,50 @@ case FN_SetTerrainCameraRotationDelta: //Sub Procedure
case FN_SetTerrainPatchLOD: //Sub Procedure
rc_setTerrainPatchLOD( SETTERRAINPATCHLOD_ACTOR, SETTERRAINPATCHLOD_PATCHX, SETTERRAINPATCHLOD_PATCHZ, SETTERRAINPATCHLOD_LOD );
break;
case FN_CreateActorAnimation: //Number Function
rc_push_num(rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED ));
break;
case FN_SetActorAnimation: //Sub Procedure
rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_START_FRAME, SETACTORANIMATION_END_FRAME );
rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS );
break;
case FN_SetActorAnimationSpeed: //Sub Procedure
rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_SPEED );
rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED );
break;
case FN_SetActorAnimationFrames: //Sub Procedure
rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME );
break;
case FN_GetActorCurrentAnimation: //Number Function
rc_push_num(rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR ));
break;
case FN_GetActorAnimationSpeed: //Number Function
rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION ));
break;
case FN_GetActorAnimationStartFrame: //Number Function
rc_push_num(rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION ));
break;
case FN_GetActorAnimationEndFrame: //Number Function
rc_push_num(rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION ));
break;
case FN_SetActorFrame: //Sub Procedure
rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME );
break;
case FN_GetActorFrame: //Number Function
rc_push_num(rc_getActorFrame( GETACTORFRAME_ACTOR ));
break;
case FN_ActorAnimationIsPlaying: //Number Function
rc_push_num(rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR ));
break;
case FN_NumActorAnimationLoops: //Number Function
rc_push_num(rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR ));
break;
case FN_SetActorMD2Animation: //Sub Procedure
rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM );
rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS );
break;
case FN_SetActorMD2AnimationByName: //Sub Procedure
rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ );
rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS );
break;
case FN_GetActorAnimationSpeed: //Number Function
rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR ));
break;
case FN_GetActorEndFrame: //Number Function
rc_push_num(rc_getActorEndFrame( GETACTORENDFRAME_ACTOR ));
break;
case FN_GetActorCurrentFrame: //Number Function
rc_push_num(rc_getActorCurrentFrame( GETACTORCURRENTFRAME_ACTOR ));
break;
case FN_GetActorStartFrame: //Number Function
rc_push_num(rc_getActorStartFrame( GETACTORSTARTFRAME_ACTOR ));
break;
case FN_StartActorTransition: //Sub Procedure
rc_startActorTransition( STARTACTORTRANSITION_ACTOR, STARTACTORTRANSITION_FRAME, STARTACTORTRANSITION_TRANSITION_TIME );
break;
case FN_StopActorTransition: //Sub Procedure
rc_stopActorTransition( STOPACTORTRANSITION_ACTOR );
break;
case FN_ActorIsInTransition: //Number Function
rc_push_num(rc_actorIsInTransition( ACTORISINTRANSITION_ACTOR ));
break;
case FN_GetActorTransitionTime: //Number Function
rc_push_num(rc_getActorTransitionTime( GETACTORTRANSITIONTIME_ACTOR ));
break;
case FN_actorAnimationIsLooped: //Number Function
rc_push_num(rc_actorAnimationIsLooped( ACTORANIMATIONISLOOPED_ACTOR ));
break;
case FN_loopActorAnimation: //Sub Procedure
rc_loopActorAnimation( LOOPACTORANIMATION_ACTOR, LOOPACTORANIMATION_FLAG );
case FN_DeleteActorAnimation: //Sub Procedure
rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION );
break;
case FN_createMaterial: //Number Function
rc_push_num(rc_createMaterial( ));

View File

@@ -2998,6 +2998,28 @@ int rc_canvasClip(int x, int y, int w, int h)
void rc_preUpdate()
{
//3D World Update
rc_physics3D.DeltaTime = device->getTimer()->getTime() - rc_physics3D.TimeStamp;
rc_physics3D.TimeStamp = device->getTimer()->getTime();
rc_physics3D.world->stepSimulation(rc_physics3D.DeltaTime*0.001f, rc_physics3D.maxSubSteps, rc_physics3D.fixedTimeStep);
for(int i = 0; i < rc_canvas.size(); i++)
{
if(rc_canvas[i].type != RC_CANVAS_TYPE_SPRITE)
continue;
float step = rc_canvas[i].physics2D.timeStep;
int32 velocityIterations = rc_canvas[i].physics2D.velocityIterations;
int32 positionIterations = rc_canvas[i].physics2D.positionIterations;
if(rc_canvas[i].physics2D.enabled)
rc_canvas[i].physics2D.world->Step(step, velocityIterations, positionIterations);
}
hasPreUpdated = true;
}
bool rc_update()
{
@@ -3348,23 +3370,34 @@ bool rc_update()
irr::core::vector2d<irr::f32> screenSize( (irr::f32) rc_canvas[0].dimension.Width, (irr::f32) rc_canvas[0].dimension.Height );
double frame_current_time = ((double)SDL_GetTicks())/1000.0;
Uint32 current_time_ms = SDL_GetTicks();
double frame_current_time = ((double)current_time_ms)/1000.0;
for(int i = 0; i < rc_transition_actor.size();)
{
if((frame_current_time - rc_actor[i].transition_start_time) >= rc_actor[i].transition_time)
int t_actor = rc_transition_actor[i];
if((frame_current_time - rc_actor[t_actor].transition_start_time) >= rc_actor[t_actor].transition_time)
{
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[i].mesh_node;
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[t_actor].mesh_node;
node->setTransitionTime(0);
node->setJointMode(irr::scene::EJUOR_NONE);
rc_actor[i].transition = false;
rc_actor[i].transition_time = 0;
rc_actor[i].transition_start_time = 0;
rc_transition_actor.erase(i);
rc_actor[t_actor].transition = false;
rc_actor[t_actor].transition_time = 0;
rc_actor[t_actor].transition_start_time = 0;
rc_transition_actor.erase(t_actor);
rc_actor[t_actor].animation[0].start_frame = (int)rc_actor[t_actor].transition_frame;
rc_actor[t_actor].animation[0].end_frame = (int)rc_actor[t_actor].transition_frame;
rc_actor[t_actor].animation[0].fps = 0;
rc_actor[t_actor].current_animation_loop = 0;
rc_actor[t_actor].isPlaying = true;
rc_actor[t_actor].current_animation = 0;
}
else
{
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[i].mesh_node;
//std::cout << "Animate dammit" << std::endl;
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[t_actor].mesh_node;
node->animateJoints();
i++;
}
@@ -3373,9 +3406,12 @@ bool rc_update()
VideoDriver->beginScene(true, true);
rc_physics3D.DeltaTime = device->getTimer()->getTime() - rc_physics3D.TimeStamp;
rc_physics3D.TimeStamp = device->getTimer()->getTime();
rc_physics3D.world->stepSimulation(rc_physics3D.DeltaTime*0.001f, rc_physics3D.maxSubSteps, rc_physics3D.fixedTimeStep);
if(!hasPreUpdated)
{
rc_physics3D.DeltaTime = device->getTimer()->getTime() - rc_physics3D.TimeStamp;
rc_physics3D.TimeStamp = device->getTimer()->getTime();
rc_physics3D.world->stepSimulation(rc_physics3D.DeltaTime*0.001f, rc_physics3D.maxSubSteps, rc_physics3D.fixedTimeStep);
}
for(int i = 0; i < rc_canvas.size(); i++)
{
@@ -3446,6 +3482,8 @@ bool rc_update()
rc_setActiveCanvas(rc_active_canvas);
}
hasPreUpdated = false; //Will be set to true if PreUpdate() is called
#ifdef RC_WEB
emscripten_sleep(0);
#else

View File

@@ -562,7 +562,7 @@ bool rc_getActorCollision(int actor1, int actor2)
//add mesh actor to scene
int rc_createMeshActor(int mesh_id)
int rc_createAnimatedActor(int mesh_id)
{
if(mesh_id < 0 || mesh_id >= rc_mesh.size())
return -1;
@@ -604,6 +604,23 @@ int rc_createMeshActor(int mesh_id)
rc_actor[actor_id] = actor;
}
//animation
rc_actor_animation_obj animation;
animation.start_frame = 0;
animation.end_frame = 0;
animation.fps = 60.0;
animation.frame_start_time = SDL_GetTicks();
animation.frame_swap_time = 1000/60;
rc_actor[actor_id].animation.push_back(animation);
rc_animEndCallBack* anim_callback = new rc_animEndCallBack();
anim_callback->ref_actor = &rc_actor[actor_id];
anim_callback->OnAnimationEnd(node);
node->setAnimationEndCallback(anim_callback);
node->setLoopMode(false);
node->setFrameLoop(0, 0);
anim_callback->drop();
//Actor RigidBody
rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
rc_actor[actor_id].physics.rigid_body = NULL;
@@ -616,7 +633,7 @@ int rc_createMeshActor(int mesh_id)
//add mesh actor to scene
int rc_createMeshOctreeActor(int mesh_id)
int rc_createOctreeActor(int mesh_id)
{
if(mesh_id < 0 || mesh_id >= rc_mesh.size())
return -1;
@@ -4952,21 +4969,97 @@ void rc_setWorld3DTimeStep(double ts)
//set actor animation [TODO]
void rc_setActorAnimation(int actor, int start_frame, int end_frame)
int rc_createActorAnimation(int actor, int start_frame, int end_frame, double speed)
{
if(actor < 0 || actor >= rc_actor.size())
return -1;
rc_actor_animation_obj animation;
animation.active = true;
animation.start_frame = start_frame;
animation.end_frame = end_frame;
animation.fps = speed;
animation.frame_swap_time = 1000/speed;
int animation_id = rc_actor[actor].animation.size();
if(rc_actor[actor].deleted_animation.size() > 0)
{
animation_id = rc_actor[actor].deleted_animation[0];
rc_actor[actor].deleted_animation.erase(0);
rc_actor[actor].animation[animation_id] = animation;
}
else
rc_actor[actor].animation.push_back(animation);
return animation_id;
}
void rc_deleteActorAnimation(int actor, int animation)
{
if(actor < 0 || actor >= rc_actor.size())
return;
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return;
if(!rc_actor[actor].animation[animation].active)
return;
rc_actor[actor].animation[animation].active = false;
rc_actor[actor].deleted_animation.push_back(animation);
}
void rc_setActorAnimation(int actor, int animation, int num_loops)
{
if(actor < 0 || actor >= rc_actor.size())
return;
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
int start_frame = rc_actor[actor].animation[animation].start_frame;
int end_frame = rc_actor[actor].animation[animation].end_frame;
rc_actor[actor].current_animation = animation;
rc_actor[actor].current_animation_loop = 0;
rc_actor[actor].num_animation_loops = num_loops;
rc_actor[actor].isPlaying = true;
node->setCurrentFrame(start_frame);
node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame );
node->setAnimationSpeed(rc_actor[actor].animation[animation].fps);
break;
}
}
void rc_setActorMD2Animation(int actor, int md2_animation)
int rc_getActorCurrentAnimation(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return -1;
return rc_actor[actor].current_animation;
}
int rc_numActorAnimationLoops(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return -1;
return rc_actor[actor].num_animation_loops;
}
bool rc_actorAnimationIsPlaying(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return -1;
return rc_actor[actor].isPlaying;
}
void rc_setActorMD2Animation(int actor, int md2_animation, int num_loops)
{
if(actor < 0 || actor >= rc_actor.size())
return;
@@ -4976,11 +5069,21 @@ void rc_setActorMD2Animation(int actor, int md2_animation)
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setMD2Animation( (irr::scene::EMD2_ANIMATION_TYPE) md2_animation );
//int start_frame = node->getStartFrame();
//int end_frame = node->getEndFrame();
rc_actor[actor].current_animation = RC_ANIMATION_MD2;
rc_actor[actor].current_animation_loop = 0;
rc_actor[actor].num_animation_loops = num_loops;
rc_actor[actor].isPlaying = true;
//node->setCurrentFrame(start_frame);
//node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame ); //setMD2Animation() does this for me
node->setAnimationSpeed(node->getMesh()->getAnimationSpeed());
break;
}
}
void rc_setActorMD2AnimationByName(int actor, std::string animation_name)
void rc_setActorMD2AnimationByName(int actor, std::string animation_name, int num_loops)
{
if(actor < 0 || actor >= rc_actor.size())
return;
@@ -4990,41 +5093,71 @@ void rc_setActorMD2AnimationByName(int actor, std::string animation_name)
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setMD2Animation( animation_name.c_str() );
//int start_frame = node->getStartFrame();
//int end_frame = node->getEndFrame();
rc_actor[actor].current_animation = RC_ANIMATION_MD2;
rc_actor[actor].current_animation_loop = 0;
rc_actor[actor].num_animation_loops = num_loops;
rc_actor[actor].isPlaying = true;
//node->setCurrentFrame(start_frame);
//node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame ); //setMD2Animation() does this for me
node->setAnimationSpeed(node->getMesh()->getAnimationSpeed());
break;
}
}
int rc_getActorStartFrame(int actor)
int rc_getActorAnimationStartFrame(int actor, int animation)
{
if(actor < 0 || actor >= rc_actor.size())
return 0;
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return 0;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
return node->getStartFrame();
if(rc_actor[actor].current_animation == animation)
{
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
return node->getStartFrame();
}
else
{
return rc_actor[actor].animation[animation].start_frame;
}
}
return 0;
}
int rc_getActorEndFrame(int actor)
int rc_getActorAnimationEndFrame(int actor, int animation)
{
if(actor < 0 || actor >= rc_actor.size())
return 0;
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return 0;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
return node->getEndFrame();
if(rc_actor[actor].current_animation == animation)
{
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
return node->getEndFrame();
}
else
{
return rc_actor[actor].animation[animation].end_frame;
}
}
return 0;
}
int rc_getActorCurrentFrame(int actor)
int rc_getActorFrame(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return 0;
@@ -5040,33 +5173,37 @@ int rc_getActorCurrentFrame(int actor)
}
//set actor animation speed
void rc_setActorAnimationSpeed(int actor, double speed)
void rc_setActorAnimationSpeed(int actor, int animation, double speed)
{
if(actor < 0 || actor >= rc_actor.size())
return;
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setAnimationSpeed( (irr::f32)speed );
rc_actor[actor].animation[animation].fps = speed;
if(animation == rc_actor[actor].current_animation)
{
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setAnimationSpeed( (irr::f32)speed );
}
break;
}
}
double rc_getActorAnimationSpeed(int actor)
double rc_getActorAnimationSpeed(int actor, int animation)
{
if(actor < 0 || actor >= rc_actor.size())
return 0;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
return node->getAnimationSpeed();
}
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return 0;
return 0;
return rc_actor[actor].animation[animation].fps;
}
void rc_setActorFrame(int actor, int frame)
@@ -5078,11 +5215,117 @@ void rc_setActorFrame(int actor, int frame)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
rc_actor[actor].animation[0].start_frame = frame;
rc_actor[actor].animation[0].end_frame = frame;
rc_actor[actor].animation[0].fps = 0;
rc_actor[actor].current_animation_loop = 0;
rc_actor[actor].isPlaying = true;
rc_actor[actor].current_animation = 0;
node->setCurrentFrame(frame);
break;
}
}
void rc_setActorAnimationFrames(int actor, int animation, int start_frame, int end_frame)
{
if(actor < 0 || actor >= rc_actor.size())
return;
if(animation < 0 || animation >= rc_actor[actor].animation.size())
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
rc_actor[actor].animation[animation].start_frame = start_frame;
rc_actor[actor].animation[animation].end_frame = end_frame;
if(animation == rc_actor[actor].current_animation)
{
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setFrameLoop(start_frame, end_frame);
}
break;
}
}
void rc_startActorTransition(int actor, double frame, double transition_time)
{
if(actor < 0 || actor >= rc_actor.size())
return;
if(rc_actor[actor].transition)
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setTransitionTime(transition_time);
//node->setJointMode(irr::scene::EJUOR_CONTROL); //This is actually called in setTransitionTime()
node->setCurrentFrame(frame);
rc_actor[actor].transition_frame = frame;
rc_actor[actor].transition = true;
rc_actor[actor].transition_time = transition_time;
rc_actor[actor].transition_start_time = ((double)SDL_GetTicks())/1000.0;
rc_actor[actor].current_animation = RC_ANIMATION_TRANSITION;
rc_transition_actor.push_back(actor);
}
}
double rc_getActorTransitionTime(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return 0;
if(rc_actor[actor].transition)
return rc_actor[actor].transition_time;
return 0;
}
void rc_stopActorTransition(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setTransitionTime(0);
node->setJointMode(irr::scene::EJUOR_NONE);
rc_actor[actor].transition = false;
rc_actor[actor].transition_time = 0;
rc_setActorFrame(actor, rc_actor[actor].transition_frame);
for(int i = 0; i < rc_transition_actor.size();)
{
if(rc_transition_actor[i] == actor)
{
rc_transition_actor.erase(i);
}
else
i++;
}
}
}
bool rc_actorIsInTransition(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return false;
return rc_actor[actor].transition;
}
//set actor animation speed
void rc_setActorAutoCulling(int actor, int cull_type)
{
@@ -5458,34 +5701,7 @@ Uint32 rc_getLightSpecularColor(int actor)
}
void rc_loopActorAnimation(int actor, bool flag)
{
if(actor < 0 || actor >= rc_actor.size())
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setLoopMode(flag);
break;
}
}
bool rc_actorAnimationIsLooped(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return false;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
return node->getLoopMode();
}
return false;
}
//set actor animation speed
void rc_setActorVisible(int actor, bool flag)
@@ -5505,75 +5721,6 @@ bool rc_actorIsVisible(int actor)
return rc_actor[actor].mesh_node->isVisible();
}
void rc_startActorTransition(int actor, double frame, double transition_time)
{
if(actor < 0 || actor >= rc_actor.size())
return;
if(rc_actor[actor].transition)
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setTransitionTime(transition_time);
node->setJointMode(irr::scene::EJUOR_CONTROL);
node->setCurrentFrame(frame);
rc_actor[actor].transition = true;
rc_actor[actor].transition_time = transition_time;
rc_actor[actor].transition_start_time = ((double)SDL_GetTicks())/1000.0;
rc_transition_actor.push_back(actor);
}
}
double rc_getActorTransitionTime(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return 0;
if(rc_actor[actor].transition)
return rc_actor[actor].transition_time;
return 0;
}
void rc_stopActorTransition(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return;
switch(rc_actor[actor].node_type)
{
case RC_NODE_TYPE_MESH:
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
node->setTransitionTime(0);
node->setJointMode(irr::scene::EJUOR_NONE);
rc_actor[actor].transition = false;
rc_actor[actor].transition_time = 0;
for(int i = 0; i < rc_transition_actor.size();)
{
if(rc_transition_actor[i] == actor)
{
rc_transition_actor.erase(i);
}
else
i++;
}
}
}
bool rc_actorIsInTransition(int actor)
{
if(actor < 0 || actor >= rc_actor.size())
return false;
return rc_actor[actor].transition;
}
void rc_getTerrainPatchAABB(int actor, double patch_x, double patch_z, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
{
@@ -6717,7 +6864,7 @@ double rc_getCameraNearValue()
return rc_canvas[rc_active_canvas].camera.camera->getNearValue();
}
void rc_setCameraProjectionMatrix(int proj_matrix, int proj_type)
void rc_setProjectionMatrix(int proj_matrix, int proj_type)
{
if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
return;
@@ -6733,7 +6880,7 @@ void rc_setCameraProjectionMatrix(int proj_matrix, int proj_type)
rc_canvas[rc_active_canvas].camera.camera->setProjectionMatrix(irr_mat, isOrtho);
}
void rc_getCameraProjectionMatrix(int proj_matrix)
void rc_getProjectionMatrix(int proj_matrix)
{
if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
return;

View File

@@ -307,7 +307,7 @@ struct rc_physicsWorld2D_obj
b2World* world;
rc_contactListener_obj* contact_listener;
float timeStep = 1/20.0; //the length of time passed to simulate (seconds)
float timeStep = 1/60.0; //the length of time passed to simulate (seconds)
int velocityIterations = 8; //how strongly to correct velocity
int positionIterations = 3; //how strongly to correct position
};
@@ -355,6 +355,7 @@ struct rc_canvas_obj
irr::core::array<rc_canvas_obj> rc_canvas;
irr::core::array<u32> rc_canvas_zOrder;
int rc_active_canvas = -1;
bool hasPreUpdated = false;
irr::video::SColor rc_active_color(0,0,0,0);
irr::video::SColor rc_clear_color(0,0,0,0);
@@ -516,6 +517,19 @@ struct rc_particle_properties_obj
bool outlineOnly;
};
#define RC_ANIMATION_MD2 -2
#define RC_ANIMATION_TRANSITION -3
struct rc_actor_animation_obj
{
bool active;
int start_frame;
int end_frame;
double fps;
irr::u32 frame_start_time;
irr::u32 frame_swap_time;
};
struct rc_scene_node
{
int node_type = 0;
@@ -525,12 +539,20 @@ struct rc_scene_node
rc_node_physics physics;
bool transition;
double transition_frame;
double transition_time;
double transition_start_time;
rc_particle_properties_obj particle_properties;
int material_ref_index = -1;
int current_animation;
int num_animation_loops;
int current_animation_loop;
bool isPlaying;
irr::core::array<int> deleted_animation;
irr::core::array<rc_actor_animation_obj> animation;
};
irr::core::array<rc_scene_node> rc_actor;
@@ -538,6 +560,35 @@ irr::core::array<rc_scene_node> rc_actor;
irr::core::array<int> rc_transition_actor;
class rc_animEndCallBack : public IAnimationEndCallBack
{
public:
rc_scene_node* ref_actor;
void OnAnimationEnd( IAnimatedMeshSceneNode *node)
{
if(ref_actor->current_animation_loop < ref_actor->num_animation_loops || ref_actor->num_animation_loops < 0)
{
//std::cout << "animating" << std::endl;
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*) ref_actor->mesh_node;
int animation = ref_actor->current_animation;
if(animation < 0 || animation >= ref_actor->animation.size())
return;
int start_frame = ref_actor->animation[animation].start_frame;
int end_frame = ref_actor->animation[animation].end_frame;
node->setFrameLoop(start_frame, end_frame);
ref_actor->current_animation_loop++;
}
else
{
ref_actor->isPlaying = false;
}
//std::cout << "The animation has ended!" << std::endl;
// Your callback code goes there.
}
};
void myTickCallback2(btSoftRigidDynamicsWorld* dynamicsWorld, btScalar timeStep)
{
rc_collisions.clear();

View File

@@ -51,6 +51,7 @@ struct rc_sprite2D_obj
int num_animation_loops;
int current_animation_loop;
bool isPlaying;
irr::core::array<int> deleted_sprites;
irr::core::array<rc_sprite2D_animation_obj> animation;
int parent_canvas = -1;

View File

@@ -32,11 +32,29 @@ int rc_createSpriteAnimation(int spr_id, int anim_length, double fps)
animation.frames.push_back(0);
int animation_id = rc_sprite[spr_id].animation.size();
rc_sprite[spr_id].animation.push_back(animation);
if(rc_sprite[spr_id].deleted_sprites.size() > 0)
{
animation_id = rc_sprite[spr_id].deleted_sprites[0];
rc_sprite[spr_id].deleted_sprites.erase(0);
rc_sprite[spr_id].animation[animation_id] = animation;
}
else
rc_sprite[spr_id].animation.push_back(animation);
return animation_id;
}
void rc_deleteSpriteAnimation(int spr_id, int animation)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return;
if(!rc_sprite[spr_id].active)
return;
rc_sprite[spr_id].deleted_sprites.push_back(animation);
}
void rc_setSpriteFrame(int spr_id, int frame)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
@@ -176,7 +194,7 @@ double rc_getSpriteAnimationSpeed(int spr_id, int animation)
return rc_sprite[spr_id].animation[animation].fps;
}
void rc_setSpriteAnimation(int spr_id, int animation)
void rc_setSpriteAnimation(int spr_id, int animation, int num_loops)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return;
@@ -191,6 +209,7 @@ void rc_setSpriteAnimation(int spr_id, int animation)
rc_sprite[spr_id].animation[animation].current_frame = 0;
rc_sprite[spr_id].isPlaying = true;
rc_sprite[spr_id].animation[animation].frame_start_time = SDL_GetTicks();
rc_sprite[spr_id].num_animation_loops = num_loops;
}
int rc_getSpriteAnimation(int spr_id)
@@ -238,6 +257,17 @@ int rc_numSpriteAnimationLoops(int spr_id)
return rc_sprite[spr_id].num_animation_loops;
}
bool rc_spriteAnimationIsPlaying(int spr_id)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return false;
if(!rc_sprite[spr_id].active)
return false;
return rc_sprite[spr_id].isPlaying;
}
//------------------------------SPRITES-------------------------------------------------------
//Larger z gets drawn first
void sortSpriteZ(int canvas_id)
@@ -575,7 +605,7 @@ void rc_setSpriteScale(int spr_id, double x, double y)
rc_sprite[spr_id].scale.set(x, y);
if(rc_sprite[spr_id].isSolid)
if(true) //(rc_sprite[spr_id].isSolid) //I probably originally planned on not having a fixture for non-solid sprites but then I discovered sensors
{
if(rc_sprite[spr_id].physics.fixture)
{
@@ -650,6 +680,19 @@ void rc_scaleSprite(int spr_id, double x, double y)
rc_setSpriteScale(spr_id, scale_x, scale_y);
}
void rc_getSpriteScale(int spr_id, double* x, double* y)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return;
if(!rc_sprite[spr_id].active)
return;
*x = rc_sprite[spr_id].scale.X;
*y = rc_sprite[spr_id].scale.Y;
}
double rc_spriteWidth(int spr_id)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
@@ -748,7 +791,7 @@ void drawSprites(int canvas_id)
int32 velocityIterations = rc_canvas[canvas_id].physics2D.velocityIterations;
int32 positionIterations = rc_canvas[canvas_id].physics2D.positionIterations;
if(rc_canvas[canvas_id].physics2D.enabled)
if(rc_canvas[canvas_id].physics2D.enabled && (!hasPreUpdated))
rc_canvas[canvas_id].physics2D.world->Step(step, velocityIterations, positionIterations);
//Setting the render target to the current canvas. NOTE: I might change this target to a separate sprite layer later.