diff --git a/doc/doc_files/nav_bottom.html b/doc/doc_files/nav_bottom.html
index a8769dc..1605e97 100644
--- a/doc/doc_files/nav_bottom.html
+++ b/doc/doc_files/nav_bottom.html
@@ -81,11 +81,11 @@ ul, #myUL {
- Console IO
@@ -95,37 +95,37 @@ ul, #myUL {
- Arrays
@@ -135,79 +135,79 @@ ul, #myUL {
- Math
@@ -217,57 +217,57 @@ ul, #myUL {
- Strings
@@ -277,29 +277,29 @@ ul, #myUL {
- Stacks
@@ -309,41 +309,41 @@ ul, #myUL {
- Files
@@ -353,19 +353,19 @@ ul, #myUL {
- Directories
@@ -375,17 +375,17 @@ ul, #myUL {
- Date and Time
@@ -395,105 +395,105 @@ ul, #myUL {
- Window Management
@@ -503,51 +503,51 @@ ul, #myUL {
- Canvases
@@ -557,33 +557,33 @@ ul, #myUL {
- GFX Primitives
@@ -593,63 +593,63 @@ ul, #myUL {
- Images
@@ -659,45 +659,45 @@ ul, #myUL {
- Keyboard and Mouse
@@ -707,79 +707,79 @@ ul, #myUL {
- Sound and Music
@@ -789,33 +789,33 @@ ul, #myUL {
- Joystick
@@ -825,21 +825,21 @@ ul, #myUL {
- Text Drawing
@@ -849,27 +849,27 @@ ul, #myUL {
- Touch and Sensors
@@ -879,41 +879,41 @@ ul, #myUL {
- Networking
@@ -923,39 +923,39 @@ ul, #myUL {
- Video Playback
@@ -965,47 +965,47 @@ ul, #myUL {
- System
@@ -1015,113 +1015,113 @@ ul, #myUL {
- Matrices
@@ -1131,11 +1131,11 @@ ul, #myUL {
- Clipboard
@@ -1145,15 +1145,15 @@ ul, #myUL {
- Text Editing
@@ -1163,57 +1163,57 @@ ul, #myUL {
- Sprites
@@ -1223,35 +1223,35 @@ ul, #myUL {
- Sprite Animation
@@ -1261,69 +1261,107 @@ ul, #myUL {
- Sprite Physics
@@ -1333,139 +1371,141 @@ ul, #myUL {
- 2D Constraints
@@ -1475,33 +1515,33 @@ ul, #myUL {
- Tile Maps
@@ -1511,25 +1551,25 @@ ul, #myUL {
- Meshes
@@ -1539,61 +1579,61 @@ ul, #myUL {
- Actors
@@ -1603,35 +1643,35 @@ ul, #myUL {
- Actor Animation
@@ -1641,123 +1681,123 @@ ul, #myUL {
- Actor Physics
@@ -1767,221 +1807,221 @@ ul, #myUL {
- 3D Constraints
@@ -1991,39 +2031,39 @@ ul, #myUL {
- Camera
@@ -2033,17 +2073,21 @@ ul, #myUL {
- Scene
@@ -2053,93 +2097,93 @@ ul, #myUL {
- Particles
@@ -2149,45 +2193,45 @@ ul, #myUL {
- Lights
@@ -2197,23 +2241,23 @@ ul, #myUL {
- Terrain
@@ -2223,123 +2267,123 @@ ul, #myUL {
- Materials
diff --git a/rcbasic_build/.~lock.rcbasic4_changes.ods# b/rcbasic_build/.~lock.rcbasic4_changes.ods#
index 1549637..c469f27 100644
--- a/rcbasic_build/.~lock.rcbasic4_changes.ods#
+++ b/rcbasic_build/.~lock.rcbasic4_changes.ods#
@@ -1 +1 @@
-,n00b,fedora,13.11.2024 20:17,file:///home/n00b/.config/libreoffice/4;
\ No newline at end of file
+,n00b,fedora,15.11.2024 20:29,file:///home/n00b/.config/libreoffice/4;
\ No newline at end of file
diff --git a/rcbasic_build/intern_lib/scene.bas b/rcbasic_build/intern_lib/scene.bas
index 67e5361..468099c 100644
--- a/rcbasic_build/intern_lib/scene.bas
+++ b/rcbasic_build/intern_lib/scene.bas
@@ -4,3 +4,5 @@ sub AddSceneSkyDomeEx( img, horiRes, vertRes, txPercentage, spherePercentage, ra
sub RemoveSceneSky( )
sub SetWorld3DMaxSubSteps( steps )
sub SetWorld3DTimeStep( ts )
+function GetWorld3DMaxSubSteps()
+function GetWorld3DTimeStep()
diff --git a/rcbasic_build/intern_lib/sprite_physics.bas b/rcbasic_build/intern_lib/sprite_physics.bas
index c3247fd..2df8303 100644
--- a/rcbasic_build/intern_lib/sprite_physics.bas
+++ b/rcbasic_build/intern_lib/sprite_physics.bas
@@ -30,3 +30,22 @@ sub setSpriteAwake( spr_id, flag)
function spriteIsAwake( spr_id)
sub setSpriteFixedRotation( spr_id, flag)
function spriteIsFixedRotation( spr_id)
+sub SetSpriteDensity( spr_id, density )
+function GetSpriteDensity( spr_id )
+sub SetSpriteFriction( spr_id, friction )
+function GetSpriteFriction( spr_id )
+sub SetSpriteRestitution( spr_id, restitution )
+function GetSpriteRestitution( spr_id )
+sub SetSpriteRestitutionThreshold( spr_id, threshold )
+function GetSpriteRestitutionThreshold( spr_id )
+sub GetSpriteAABB( spr_id, ByRef x1, ByRef y1, ByRef x2, ByRef y2 )
+sub SetGravity2D( x, y )
+sub GetGravity2D( ByRef x, ByRef y )
+sub SetWorld2DTimeStep( ts )
+sub SetWorld2DVelocityIterations( v )
+sub SetWorld2DPositionIterations( p )
+function GetWorld2DTimeStep()
+function GetWorld2DVelocityIterations()
+function GetWorld2DPositionIterations()
+sub SetWorld2DAutoClearForces( flag )
+function GetWorld2DAutoClearForces()
diff --git a/rcbasic_build/rcbasic.dbgi b/rcbasic_build/rcbasic.dbgi
index b130b8c..974818a 100644
--- a/rcbasic_build/rcbasic.dbgi
+++ b/rcbasic_build/rcbasic.dbgi
@@ -31,6 +31,7 @@ embedded_functions.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/tilemaps.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/mesh.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_animation.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_physics.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/constraint3D.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/camera.bas
@@ -39,5 +40,4 @@ embedded_functions.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/lights.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/terrain.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/water.bas
-/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_animation.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/materials.bas
diff --git a/rcbasic_build/rcbasic.dbgs b/rcbasic_build/rcbasic.dbgs
index d54ff08..eea89c5 100644
--- a/rcbasic_build/rcbasic.dbgs
+++ b/rcbasic_build/rcbasic.dbgs
@@ -331,12 +331,10 @@ N main.CanvasClip w 2
N main.CanvasClip h 3
N main.SetCanvasPhysics2D c_num 0
N main.SetCanvasPhysics2D state 1
-N main.OpenCanvasSpriteLayer w 0
-N main.OpenCanvasSpriteLayer h 1
-N main.OpenCanvasSpriteLayer viewport_x 2
-N main.OpenCanvasSpriteLayer viewport_y 3
-N main.OpenCanvasSpriteLayer viewport_w 4
-N main.OpenCanvasSpriteLayer viewport_h 5
+N main.OpenCanvasSpriteLayer viewport_x 0
+N main.OpenCanvasSpriteLayer viewport_y 1
+N main.OpenCanvasSpriteLayer viewport_w 2
+N main.OpenCanvasSpriteLayer viewport_h 3
N main.Circle x 0
N main.Circle y 1
N main.Circle radius 2
@@ -924,6 +922,319 @@ N main.NumSpriteAnimationLoops sprite 0
N main.SpriteAnimationIsPlaying sprite 0
N main.DeleteSpriteAnimation sprite 0
N main.DeleteSpriteAnimation animation 1
+N main.getSpriteCenter spr_id 0
+BN main.getSpriteCenter x 1
+BN main.getSpriteCenter y 2
+N main.setSpriteLinearVelocity spr_id 0
+N main.setSpriteLinearVelocity x 1
+N main.setSpriteLinearVelocity y 2
+N main.getSpriteLinearVelocity spr_id 0
+BN main.getSpriteLinearVelocity x 1
+BN main.getSpriteLinearVelocity y 2
+N main.setSpriteAngularVelocity spr_id 0
+N main.setSpriteAngularVelocity av 1
+N main.getSpriteAngularVelocity spr_id 0
+N main.applySpriteForce spr_id 0
+N main.applySpriteForce fX 1
+N main.applySpriteForce fY 2
+N main.applySpriteForce pX 3
+N main.applySpriteForce pY 4
+N main.applySpriteCentralForce spr_id 0
+N main.applySpriteCentralForce x 1
+N main.applySpriteCentralForce y 2
+N main.applySpriteTorque spr_id 0
+N main.applySpriteTorque torque 1
+N main.applySpriteLinearImpulse spr_id 0
+N main.applySpriteLinearImpulse iX 1
+N main.applySpriteLinearImpulse iY 2
+N main.applySpriteLinearImpulse pX 3
+N main.applySpriteLinearImpulse pY 4
+N main.applySpriteAngularImpulse spr_id 0
+N main.applySpriteAngularImpulse impulse 1
+N main.getSpriteMass spr_id 0
+N main.getSpriteInertia spr_id 0
+N main.getSpriteWorldPoint spr_id 0
+N main.getSpriteWorldPoint lX 1
+N main.getSpriteWorldPoint lY 2
+BN main.getSpriteWorldPoint x 3
+BN main.getSpriteWorldPoint y 4
+N main.getSpriteWorldVector spr_id 0
+N main.getSpriteWorldVector lX 1
+N main.getSpriteWorldVector lY 2
+BN main.getSpriteWorldVector x 3
+BN main.getSpriteWorldVector y 4
+N main.getSpriteLocalPoint spr_id 0
+N main.getSpriteLocalPoint wX 1
+N main.getSpriteLocalPoint wY 2
+BN main.getSpriteLocalPoint x 3
+BN main.getSpriteLocalPoint y 4
+N main.getSpriteLocalVector spr_id 0
+N main.getSpriteLocalVector wX 1
+N main.getSpriteLocalVector wY 2
+BN main.getSpriteLocalVector x 3
+BN main.getSpriteLocalVector y 4
+N main.getSpriteLinearVelocityFromLocalPoint spr_id 0
+N main.getSpriteLinearVelocityFromLocalPoint pX 1
+N main.getSpriteLinearVelocityFromLocalPoint pY 2
+BN main.getSpriteLinearVelocityFromLocalPoint x 3
+BN main.getSpriteLinearVelocityFromLocalPoint y 4
+N main.getSpriteLinearVelocityFromWorldPoint spr_id 0
+N main.getSpriteLinearVelocityFromWorldPoint wX 1
+N main.getSpriteLinearVelocityFromWorldPoint wY 2
+BN main.getSpriteLinearVelocityFromWorldPoint x 3
+BN main.getSpriteLinearVelocityFromWorldPoint y 4
+N main.getSpriteLinearDamping spr_id 0
+N main.setSpriteLinearDamping spr_id 0
+N main.setSpriteLinearDamping linearDamping 1
+N main.getSpriteAngularDamping spr_id 0
+N main.setSpriteAngularDamping spr_id 0
+N main.setSpriteAngularDamping angularDamping 1
+N main.getSpriteGravityScale spr_id 0
+N main.setSpriteGravityScale spr_id 0
+N main.setSpriteGravityScale g_scale 1
+N main.setSpriteBullet spr_id 0
+N main.setSpriteBullet flag 1
+N main.spriteIsBullet spr_id 0
+N main.setSpriteSleepAllowed spr_id 0
+N main.setSpriteSleepAllowed flag 1
+N main.spriteSleepAllowed spr_id 0
+N main.setSpriteAwake spr_id 0
+N main.setSpriteAwake flag 1
+N main.spriteIsAwake spr_id 0
+N main.setSpriteFixedRotation spr_id 0
+N main.setSpriteFixedRotation flag 1
+N main.spriteIsFixedRotation spr_id 0
+N main.SetSpriteDensity spr_id 0
+N main.SetSpriteDensity density 1
+N main.GetSpriteDensity spr_id 0
+N main.SetSpriteFriction spr_id 0
+N main.SetSpriteFriction friction 1
+N main.GetSpriteFriction spr_id 0
+N main.SetSpriteRestitution spr_id 0
+N main.SetSpriteRestitution restitution 1
+N main.GetSpriteRestitution spr_id 0
+N main.SetSpriteRestitutionThreshold spr_id 0
+N main.SetSpriteRestitutionThreshold threshold 1
+N main.GetSpriteAABB spr_id 0
+BN main.GetSpriteAABB x1 1
+BN main.GetSpriteAABB y1 2
+BN main.GetSpriteAABB x2 3
+BN main.GetSpriteAABB y2 4
+N main.SetGravity2D x 0
+N main.SetGravity2D y 1
+BN main.GetGravity2D x 0
+BN main.GetGravity2D y 1
+N main.SetWorld2DTimeStep ts 0
+N main.SetWorld2DVelocityIterations v 0
+N main.SetWorld2DPositionIterations p 0
+N main.SetWorld2DAutoClearForces flag 0
+N main.createDistanceJoint spriteA 0
+N main.createDistanceJoint spriteB 1
+N main.createDistanceJoint aX 2
+N main.createDistanceJoint aY 3
+N main.createDistanceJoint bX 4
+N main.createDistanceJoint bY 5
+N main.createDistanceJoint collide_connect 6
+N main.createFrictionJoint spriteA 0
+N main.createFrictionJoint spriteB 1
+N main.createFrictionJoint x 2
+N main.createFrictionJoint y 3
+N main.createFrictionJoint collide_connect 4
+N main.createGearJoint jointA 0
+N main.createGearJoint jointB 1
+N main.createGearJoint g_ratio 2
+N main.createGearJoint collide_connect 3
+N main.createMotorJoint spriteA 0
+N main.createMotorJoint spriteB 1
+N main.createMotorJoint collide_connect 2
+N main.createPrismaticJoint spriteA 0
+N main.createPrismaticJoint spriteB 1
+N main.createPrismaticJoint aX 2
+N main.createPrismaticJoint aY 3
+N main.createPrismaticJoint axisX 4
+N main.createPrismaticJoint axisY 5
+N main.createPrismaticJoint collide_connect 6
+N main.createPulleyJoint spriteA 0
+N main.createPulleyJoint spriteB 1
+N main.createPulleyJoint gaX 2
+N main.createPulleyJoint gaY 3
+N main.createPulleyJoint gbX 4
+N main.createPulleyJoint gbY 5
+N main.createPulleyJoint aX 6
+N main.createPulleyJoint aY 7
+N main.createPulleyJoint bX 8
+N main.createPulleyJoint bY 9
+N main.createPulleyJoint j_ratio 10
+N main #fn11 11
+N main.createPulleyJoint collide_connect 11
+N main.createRevoluteJoint spriteA 0
+N main.createRevoluteJoint spriteB 1
+N main.createRevoluteJoint x 2
+N main.createRevoluteJoint y 3
+N main.createRevoluteJoint collide_connect 4
+N main.createWeldJoint spriteA 0
+N main.createWeldJoint spriteB 1
+N main.createWeldJoint x 2
+N main.createWeldJoint y 3
+N main.createWeldJoint collide_connect 4
+N main.createWheelJoint spriteA 0
+N main.createWheelJoint spriteB 1
+N main.createWheelJoint aX 2
+N main.createWheelJoint aY 3
+N main.createWheelJoint axisX 4
+N main.createWheelJoint axisY 5
+N main.createWheelJoint collide_connect 6
+N main.getJointWorldAnchorA joint_id 0
+BN main.getJointWorldAnchorA x 1
+BN main.getJointWorldAnchorA y 2
+N main.getJointWorldAnchorB joint_id 0
+BN main.getJointWorldAnchorB x 1
+BN main.getJointWorldAnchorB y 2
+N main.getJointReactionForce joint_id 0
+N main.getJointReactionForce inv_dt 1
+BN main.getJointReactionForce x 2
+BN main.getJointReactionForce y 3
+N main.getJointReactionTorque joint_id 0
+N main.getJointReactionTorque inv_dt 1
+N main.getJointLocalAnchorA joint_id 0
+BN main.getJointLocalAnchorA x 1
+BN main.getJointLocalAnchorA y 2
+N main.getJointLocalAnchorB joint_id 0
+BN main.getJointLocalAnchorB x 1
+BN main.getJointLocalAnchorB y 2
+N main.setJointLength joint_id 0
+N main.setJointLength jlen 1
+N main.getJointLength joint_id 0
+N main.setJointMinLength joint_id 0
+N main.setJointMinLength jlen 1
+N main.getJointMinLength joint_id 0
+N main.setJointMaxLength joint_id 0
+N main.setJointMaxLength jlen 1
+N main.getJointMaxLength joint_id 0
+N main.getJointCurrentLength joint_id 0
+N main.setJointStiffness joint_id 0
+N main.setJointStiffness stiffness 1
+N main.getJointStiffness joint_id 0
+N main.setJointDamping joint_id 0
+N main.setJointDamping damping 1
+N main.getJointDamping joint_id 0
+N main.setJointMaxForce joint_id 0
+N main.setJointMaxForce force 1
+N main.getJointMaxForce joint_id 0
+N main.setJointMaxTorque joint_id 0
+N main.setJointMaxTorque torque 1
+N main.getJointMaxTorque joint_id 0
+N main.setJointCorrectionFactor joint_id 0
+N main.setJointCorrectionFactor factor 1
+N main.getJointCorrectionFactor joint_id 0
+N main.setJointRatio joint_id 0
+N main.setJointRatio j_ratio 1
+N main.getJointRatio joint_id 0
+N main.setJointLinearOffset joint_id 0
+N main.setJointLinearOffset x 1
+N main.setJointLinearOffset y 2
+N main.getJointLinearOffset joint_id 0
+BN main.getJointLinearOffset x 1
+BN main.getJointLinearOffset y 2
+N main.setJointAngularOffset joint_id 0
+N main.setJointAngularOffset angleOffset 1
+N main.getJointAngularOffset joint_id 0
+N main.getJointLocalAxisA joint_id 0
+BN main.getJointLocalAxisA x 1
+BN main.getJointLocalAxisA y 2
+N main.getJointReferenceAngle joint_id 0
+N main.getJointTranslation joint_id 0
+N main.getJointSpeed joint_id 0
+N main.jointIsLimitEnabled joint_id 0
+N main.enableJointLimit joint_id 0
+N main.enableJointLimit flag 1
+N main.getJointLowerLimit joint_id 0
+N main.getJointUpperLimit joint_id 0
+N main.setJointLimits joint_id 0
+N main.setJointLimits lower_limit 1
+N main.setJointLimits upper_limit 2
+N main.jointMotorIsEnabled joint_id 0
+N main.enableJointMotor joint_id 0
+N main.enableJointMotor flag 1
+N main.setJointMotorSpeed joint_id 0
+N main.setJointMotorSpeed speed 1
+N main.getJointMotorSpeed joint_id 0
+N main.setJointMaxMotorForce joint_id 0
+N main.setJointMaxMotorForce force 1
+N main.getJointMaxMotorForce joint_id 0
+N main.getJointMotorForce joint_id 0
+N main.getJointMotorForce inv_dt 1
+N main.setJointMaxMotorTorque joint_id 0
+N main.setJointMaxMotorTorque torque 1
+N main.getJointMaxMotorTorque joint_id 0
+N main.getJointMotorTorque joint_id 0
+N main.getJointMotorTorque inv_dt 1
+N main.getJointGroundAnchorA joint_id 0
+BN main.getJointGroundAnchorA x 1
+BN main.getJointGroundAnchorA y 2
+N main.getJointGroundAnchorB joint_id 0
+BN main.getJointGroundAnchorB x 1
+BN main.getJointGroundAnchorB y 2
+N main.getJointLengthA joint_id 0
+N main.getJointLengthB joint_id 0
+N main.getJointCurrentLengthA joint_id 0
+N main.getJointCurrentLengthB joint_id 0
+N main.setJointOrigin joint_id 0
+N main.setJointOrigin x 1
+N main.setJointOrigin y 2
+N main.getJointAngle joint_id 0
+N main.getJointLinearSpeed joint_id 0
+N main.getJointAngularSpeed joint_id 0
+N main.DeleteJoint joint_id 0
+N main.CreateTileSet img_id 0
+N main.CreateTileSet tile_w 1
+N main.CreateTileSet tile_h 2
+N main.SetTileAnimationLength tileset 0
+N main.SetTileAnimationLength base_tile 1
+N main.SetTileAnimationLength num_frames 2
+N main.GetTileAnimationLength tileset 0
+N main.GetTileAnimationLength base_tile 1
+N main.SetTileAnimationFrame tileset 0
+N main.SetTileAnimationFrame base_tile 1
+N main.SetTileAnimationFrame anim_frame 2
+N main.SetTileAnimationFrame tile_frame 3
+N main.GetTileAnimationFrame tileset 0
+N main.GetTileAnimationFrame base_tile 1
+N main.GetTileAnimationFrame anim_frame 2
+N main.SetTileAnimationSpeed tileset 0
+N main.SetTileAnimationSpeed base_tile 1
+N main.SetTileAnimationSpeed speed 2
+N main.GetTileAnimationSpeed tileset 0
+N main.GetTileAnimationSpeed base_tile 1
+N main.CreateTileMap tileset 0
+N main.CreateTileMap widthInTiles 1
+N main.CreateTileMap heightInTiles 2
+N main.SetTileMapSize tilemap 0
+N main.SetTileMapSize widthInTiles 1
+N main.SetTileMapSize heightInTiles 2
+N main.GetTileMapSize tilemap 0
+BN main.GetTileMapSize widthInTiles 1
+BN main.GetTileMapSize heightInTiles 2
+N main.SetTile tilemap 0
+N main.SetTile tile 1
+N main.SetTile x 2
+N main.SetTile y 3
+N main.GetTile tilemap 0
+N main.GetTile x 1
+N main.GetTile y 2
+N main.FillTile tilemap 0
+N main.FillTile tile 1
+N main.FillTile x 2
+N main.FillTile y 3
+N main.FillTile widthInTiles 4
+N main.FillTile heightInTiles 5
+N main.DrawTileMap tilemap 0
+N main.DrawTileMap x 1
+N main.DrawTileMap y 2
+N main.DrawTileMap w 3
+N main.DrawTileMap h 4
+N main.DrawTileMap offset_x 5
+N main.DrawTileMap offset_y 6
S main.LoadMesh mesh_file$ 0
N main.DeleteMesh mesh 0
N main.AddMeshBuffer mesh 0
@@ -1007,6 +1318,40 @@ N main.GetActorAutoCulling actor 0
N main.AddActorShadow actor 0
N main.RemoveActorShadow actor 0
N main.ActorExists actor 0
+N main.CreateActorAnimation actor 0
+N main.CreateActorAnimation start_frame 1
+N main.CreateActorAnimation end_frame 2
+N main.CreateActorAnimation speed 3
+N main.SetActorAnimation actor 0
+N main.SetActorAnimation animation 1
+N main.SetActorAnimation num_loops 2
+N main.SetActorAnimationSpeed actor 0
+N main.SetActorAnimationSpeed animation 1
+N main.SetActorAnimationSpeed speed 2
+N main.SetActorAnimationFrames actor 0
+N main.SetActorAnimationFrames animation 1
+N main.SetActorAnimationFrames start_frame 2
+N main.SetActorAnimationFrames end_frame 3
+N main.GetActorCurrentAnimation actor 0
+N main.GetActorAnimationSpeed actor 0
+N main.GetActorAnimationSpeed animation 1
+N main.GetActorAnimationStartFrame actor 0
+N main.GetActorAnimationStartFrame animation 1
+N main.GetActorAnimationEndFrame actor 0
+N main.GetActorAnimationEndFrame animation 1
+N main.SetActorFrame actor 0
+N main.SetActorFrame frame 1
+N main.GetActorFrame actor 0
+N main.ActorAnimationIsPlaying actor 0
+N main.NumActorAnimationLoops actor 0
+N main.SetActorMD2Animation actor 0
+N main.SetActorMD2Animation anim 1
+N main.SetActorMD2Animation num_loops 2
+N main.SetActorMD2AnimationByName actor 0
+S main.SetActorMD2AnimationByName anim_name$ 0
+N main.SetActorMD2AnimationByName num_loops 1
+N main.DeleteActorAnimation actor 0
+N main.DeleteActorAnimation animation 1
N main.SetGravity3D x 0
N main.SetGravity3D y 1
N main.SetGravity3D z 2
@@ -1136,10 +1481,10 @@ N main.applyActorImpulseWorld rel_y 5
N main.applyActorImpulseWorld rel_z 6
N main.clearActorForces actor 0
N main.updateActorInertiaTensor actor 0
-N main.getActorCOMPosition actor 0
-BN main.getActorCOMPosition x 1
-BN main.getActorCOMPosition y 2
-BN main.getActorCOMPosition z 3
+N main.getActorCenter actor 0
+BN main.getActorCenter x 1
+BN main.getActorCenter y 2
+BN main.getActorCenter z 3
N main.getActorRotationQ actor 0
BN main.getActorRotationQ x 1
BN main.getActorRotationQ y 2
@@ -1169,13 +1514,13 @@ N main.setActorAngularVelocityWorld actor 0
N main.setActorAngularVelocityWorld x 1
N main.setActorAngularVelocityWorld y 2
N main.setActorAngularVelocityWorld z 3
-N main.getActorLocalPointVelocity actor 0
-N main.getActorLocalPointVelocity rel_x 1
-N main.getActorLocalPointVelocity rel_y 2
-N main.getActorLocalPointVelocity rel_z 3
-BN main.getActorLocalPointVelocity x 4
-BN main.getActorLocalPointVelocity y 5
-BN main.getActorLocalPointVelocity z 6
+N main.getActorVelocityInLocalPoint actor 0
+N main.getActorVelocityInLocalPoint rel_x 1
+N main.getActorVelocityInLocalPoint rel_y 2
+N main.getActorVelocityInLocalPoint rel_z 3
+BN main.getActorVelocityInLocalPoint x 4
+BN main.getActorVelocityInLocalPoint y 5
+BN main.getActorVelocityInLocalPoint z 6
N main.getActorLinearVelocityLocal actor 0
BN main.getActorLinearVelocityLocal x 1
BN main.getActorLinearVelocityLocal y 2
@@ -1655,40 +2000,6 @@ N main.SetTerrainPatchLOD actor 0
N main.SetTerrainPatchLOD patchX 1
N main.SetTerrainPatchLOD patchZ 2
N main.SetTerrainPatchLOD LOD 3
-N main.CreateActorAnimation actor 0
-N main.CreateActorAnimation start_frame 1
-N main.CreateActorAnimation end_frame 2
-N main.CreateActorAnimation speed 3
-N main.SetActorAnimation actor 0
-N main.SetActorAnimation animation 1
-N main.SetActorAnimation num_loops 2
-N main.SetActorAnimationSpeed actor 0
-N main.SetActorAnimationSpeed animation 1
-N main.SetActorAnimationSpeed speed 2
-N main.SetActorAnimationFrames actor 0
-N main.SetActorAnimationFrames animation 1
-N main.SetActorAnimationFrames start_frame 2
-N main.SetActorAnimationFrames end_frame 3
-N main.GetActorCurrentAnimation actor 0
-N main.GetActorAnimationSpeed actor 0
-N main.GetActorAnimationSpeed animation 1
-N main.GetActorAnimationStartFrame actor 0
-N main.GetActorAnimationStartFrame animation 1
-N main.GetActorAnimationEndFrame actor 0
-N main.GetActorAnimationEndFrame animation 1
-N main.SetActorFrame actor 0
-N main.SetActorFrame frame 1
-N main.GetActorFrame actor 0
-N main.ActorAnimationIsPlaying actor 0
-N main.NumActorAnimationLoops actor 0
-N main.SetActorMD2Animation actor 0
-N main.SetActorMD2Animation anim 1
-N main.SetActorMD2Animation num_loops 2
-N main.SetActorMD2AnimationByName actor 0
-S main.SetActorMD2AnimationByName anim_name$ 0
-N main.SetActorMD2AnimationByName num_loops 1
-N main.DeleteActorAnimation actor 0
-N main.DeleteActorAnimation animation 1
N main.deleteMaterial material_id 0
N main.setActorMaterial actor 0
N main.setActorMaterial material_num 1
diff --git a/rcbasic_runtime/rc_base_actor.h b/rcbasic_runtime/rc_base_actor.h
index 6312610..96a78c4 100644
--- a/rcbasic_runtime/rc_base_actor.h
+++ b/rcbasic_runtime/rc_base_actor.h
@@ -307,6 +307,9 @@ int rc_createAnimatedActor(int mesh_id)
animation.frame_start_time = SDL_GetTicks();
animation.frame_swap_time = 1000/60;
rc_actor[actor_id].animation.push_back(animation);
+ rc_actor[actor_id].current_animation = 0;
+ rc_actor[actor_id].current_animation_loop = 0;
+ rc_actor[actor_id].num_animation_loops = 0;
rc_animEndCallBack* anim_callback = new rc_animEndCallBack();
anim_callback->ref_actor = &rc_actor[actor_id];
anim_callback->OnAnimationEnd(node);
diff --git a/rcbasic_runtime/rc_gfx_core.h b/rcbasic_runtime/rc_gfx_core.h
index 210602f..30d453f 100644
--- a/rcbasic_runtime/rc_gfx_core.h
+++ b/rcbasic_runtime/rc_gfx_core.h
@@ -583,12 +583,34 @@ class rc_animEndCallBack : public IAnimationEndCallBack
//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())
+ if(animation == RC_ANIMATION_MD2)
+ {
+ int start_frame = node->getStartFrame();
+ int end_frame = node->getEndFrame();
+ node->setFrameLoop(start_frame, end_frame);
+ ref_actor->current_animation_loop++;
+ }
+ else if(animation == RC_ANIMATION_TRANSITION)
+ {
+ //TODO: Transitions are currently broken
+ }
+ else 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
+ {
+ if(!ref_actor->animation[animation].active)
+ {
+ ref_actor->isPlaying = false;
+ ref_actor->current_animation_loop = 0;
+ 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
{
diff --git a/rcbasic_runtime/rcbasic_runtime.depend b/rcbasic_runtime/rcbasic_runtime.depend
index 6e3ba3c..a715949 100755
--- a/rcbasic_runtime/rcbasic_runtime.depend
+++ b/rcbasic_runtime/rcbasic_runtime.depend
@@ -1,5 +1,5 @@
# depslib dependency file v1.0
-1731681709 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
+1731722537 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
"rc_os_defines.h"
@@ -32,10 +32,10 @@
"rc_func130_cases.h"
-1731717801 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
+1731726964 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
-1731684932 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
+1731722537 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
"rc_os_defines.h"
@@ -1247,7 +1247,7 @@
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
-1731712885 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
+1731722537 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
"SDL.h"
@@ -1271,7 +1271,7 @@
"rc_joints.h"
-1731709491 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
+1731727042 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
"SDL.h"
"btBulletDynamicsCommon.h"
"BulletSoftBody/btSoftRigidDynamicsWorld.h"
@@ -2272,7 +2272,7 @@
"rc_gfx_core.h"
-1731711022 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
+1731722537 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp
"irrBullet.h"
@@ -2487,7 +2487,7 @@
-1731693546 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h
+1731722537 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h
"SDL.h"
"rc_sprite2D.h"
@@ -2505,7 +2505,7 @@
-1731693615 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_sprite_physics.h
+1731722537 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_sprite_physics.h
"rc_sprite2D.h"
1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_joints.h
@@ -2514,14 +2514,14 @@
"rc_sprite2D.h"
"rc_gfx_core.h"
-1731695180 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_physics3D_base.h
+1731722537 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_physics3D_base.h
"rc_gfx_core.h"
-1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_base_actor.h
+1731725236 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_base_actor.h
1731710840 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_material.h
-1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_animation.h
+1731727068 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_animation.h
1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_actor_physics.h