Added new physics functions

* Added some new physics functions
* Added new documentation
* Added some auto checks for OS to rc_os_defines.h
* Fixed bugs on settting and getting position of sprites
This commit is contained in:
n00b
2024-11-15 20:42:08 -05:00
parent 3f4a1ce1cc
commit 40ca65cb3f
37 changed files with 1652 additions and 987 deletions

View File

@@ -520,6 +520,25 @@ rc_setSpriteAwake( SETSPRITEAWAKE_SPR_ID, SETSPRITEAWAKE_FLAG )
rc_spriteIsAwake( SPRITEISAWAKE_SPR_ID )
rc_setSpriteFixedRotation( SETSPRITEFIXEDROTATION_SPR_ID, SETSPRITEFIXEDROTATION_FLAG )
rc_spriteIsFixedRotation( SPRITEISFIXEDROTATION_SPR_ID )
rc_setSpriteDensity( SETSPRITEDENSITY_SPR_ID, SETSPRITEDENSITY_DENSITY )
rc_getSpriteDensity( GETSPRITEDENSITY_SPR_ID )
rc_setSpriteFriction( SETSPRITEFRICTION_SPR_ID, SETSPRITEFRICTION_FRICTION )
rc_getSpriteFriction( GETSPRITEFRICTION_SPR_ID )
rc_setSpriteRestitution( SETSPRITERESTITUTION_SPR_ID, SETSPRITERESTITUTION_RESTITUTION )
rc_getSpriteRestitution( GETSPRITERESTITUTION_SPR_ID )
rc_setSpriteRestitutionThreshold( SETSPRITERESTITUTIONTHRESHOLD_SPR_ID, SETSPRITERESTITUTIONTHRESHOLD_THRESHOLD )
rc_getSpriteRestitutionThreshold( GETSPRITERESTITUTIONTHRESHOLD_SPR_ID )
rc_getSpriteAABB( GETSPRITEAABB_SPR_ID, &GETSPRITEAABB_X1, &GETSPRITEAABB_Y1, &GETSPRITEAABB_X2, &GETSPRITEAABB_Y2 )
rc_setGravity2D( SETGRAVITY2D_X, SETGRAVITY2D_Y )
rc_getGravity2D( &GETGRAVITY2D_X, &GETGRAVITY2D_Y )
rc_setWorld2DTimeStep( SETWORLD2DTIMESTEP_TS )
rc_setWorld2DVelocityIterations( SETWORLD2DVELOCITYITERATIONS_V )
rc_setWorld2DPositionIterations( SETWORLD2DPOSITIONITERATIONS_P )
rc_getWorld2DTimeStep( )
rc_getWorld2DVelocityIterations( )
rc_getWorld2DPositionIterations( )
rc_setWorld2DAutoClearForces( SETWORLD2DAUTOCLEARFORCES_FLAG )
rc_getWorld2DAutoClearForces( )
rc_createDistanceJoint( CREATEDISTANCEJOINT_SPRITEA, CREATEDISTANCEJOINT_SPRITEB, CREATEDISTANCEJOINT_AX, CREATEDISTANCEJOINT_AY, CREATEDISTANCEJOINT_BX, CREATEDISTANCEJOINT_BY, CREATEDISTANCEJOINT_COLLIDE_CONNECT )
rc_createFrictionJoint( CREATEFRICTIONJOINT_SPRITEA, CREATEFRICTIONJOINT_SPRITEB, CREATEFRICTIONJOINT_X, CREATEFRICTIONJOINT_Y, CREATEFRICTIONJOINT_COLLIDE_CONNECT )
rc_createGearJoint( CREATEGEARJOINT_JOINTA, CREATEGEARJOINT_JOINTB, CREATEGEARJOINT_G_RATIO, CREATEGEARJOINT_COLLIDE_CONNECT )
@@ -845,6 +864,8 @@ rc_addSceneSkyDomeEx( ADDSCENESKYDOMEEX_IMG, ADDSCENESKYDOMEEX_HORIRES, ADDSCE
rc_removeSceneSky( )
rc_setWorld3DMaxSubSteps( SETWORLD3DMAXSUBSTEPS_STEPS )
rc_setWorld3DTimeStep( SETWORLD3DTIMESTEP_TS )
rc_getWorld3DMaxSubSteps( )
rc_getWorld3DTimeStep( )
rc_startParticleEmitter( STARTPARTICLEEMITTER_ACTOR )
rc_stopParticleEmitter( STOPPARTICLEEMITTER_ACTOR )
rc_setParticleDirection( SETPARTICLEDIRECTION_ACTOR, SETPARTICLEDIRECTION_X, SETPARTICLEDIRECTION_Y, SETPARTICLEDIRECTION_Z )

View File

@@ -912,7 +912,7 @@ int main(int argc, char * argv[])
{
string line = "";
rcbasic_dev("embedded_functions.bas"); rcbasic_output_debug_info(); return 0;
//rcbasic_dev("embedded_functions.bas"); rcbasic_output_debug_info(); return 0;
string rc_filename = "";// = "tst.bas";

View File

@@ -1516,6 +1516,48 @@ void init_embedded_functions()
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("spriteIsFixedRotation", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteDensity", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("density", ID_TYPE_NUM);
embed_function("GetSpriteDensity", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteFriction", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("friction", ID_TYPE_NUM);
embed_function("GetSpriteFriction", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteRestitution", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("restitution", ID_TYPE_NUM);
embed_function("GetSpriteRestitution", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteRestitutionThreshold", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("threshold", ID_TYPE_NUM);
embed_function("GetSpriteAABB", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("x1", ID_TYPE_BYREF_NUM);
add_embedded_arg("y1", ID_TYPE_BYREF_NUM);
add_embedded_arg("x2", ID_TYPE_BYREF_NUM);
add_embedded_arg("y2", ID_TYPE_BYREF_NUM);
embed_function("SetGravity2D", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("GetGravity2D", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
embed_function("SetWorld2DTimeStep", ID_TYPE_SUB);
add_embedded_arg("ts", ID_TYPE_NUM);
embed_function("SetWorld2DVelocityIterations", ID_TYPE_SUB);
add_embedded_arg("v", ID_TYPE_NUM);
embed_function("SetWorld2DPositionIterations", ID_TYPE_SUB);
add_embedded_arg("p", ID_TYPE_NUM);
embed_function("GetWorld2DTimeStep", ID_TYPE_FN_NUM);
embed_function("GetWorld2DVelocityIterations", ID_TYPE_FN_NUM);
embed_function("GetWorld2DPositionIterations", ID_TYPE_FN_NUM);
embed_function("SetWorld2DAutoClearForces", ID_TYPE_SUB);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("GetWorld2DAutoClearForces", ID_TYPE_FN_NUM);
embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
add_embedded_arg("spriteA", ID_TYPE_NUM);
add_embedded_arg("spriteB", ID_TYPE_NUM);
@@ -2647,6 +2689,8 @@ void init_embedded_functions()
add_embedded_arg("steps", ID_TYPE_NUM);
embed_function("SetWorld3DTimeStep", ID_TYPE_SUB);
add_embedded_arg("ts", ID_TYPE_NUM);
embed_function("GetWorld3DMaxSubSteps", ID_TYPE_FN_NUM);
embed_function("GetWorld3DTimeStep", ID_TYPE_FN_NUM);
embed_function("startParticleEmitter", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("stopParticleEmitter", ID_TYPE_SUB);

Binary file not shown.

View File

@@ -1510,6 +1510,48 @@ add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("spriteIsFixedRotation", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteDensity", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("density", ID_TYPE_NUM);
embed_function("GetSpriteDensity", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteFriction", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("friction", ID_TYPE_NUM);
embed_function("GetSpriteFriction", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteRestitution", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("restitution", ID_TYPE_NUM);
embed_function("GetSpriteRestitution", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteRestitutionThreshold", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("threshold", ID_TYPE_NUM);
embed_function("GetSpriteAABB", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("x1", ID_TYPE_BYREF_NUM);
add_embedded_arg("y1", ID_TYPE_BYREF_NUM);
add_embedded_arg("x2", ID_TYPE_BYREF_NUM);
add_embedded_arg("y2", ID_TYPE_BYREF_NUM);
embed_function("SetGravity2D", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
embed_function("GetGravity2D", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
embed_function("SetWorld2DTimeStep", ID_TYPE_SUB);
add_embedded_arg("ts", ID_TYPE_NUM);
embed_function("SetWorld2DVelocityIterations", ID_TYPE_SUB);
add_embedded_arg("v", ID_TYPE_NUM);
embed_function("SetWorld2DPositionIterations", ID_TYPE_SUB);
add_embedded_arg("p", ID_TYPE_NUM);
embed_function("GetWorld2DTimeStep", ID_TYPE_FN_NUM);
embed_function("GetWorld2DVelocityIterations", ID_TYPE_FN_NUM);
embed_function("GetWorld2DPositionIterations", ID_TYPE_FN_NUM);
embed_function("SetWorld2DAutoClearForces", ID_TYPE_SUB);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("GetWorld2DAutoClearForces", ID_TYPE_FN_NUM);
embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
add_embedded_arg("spriteA", ID_TYPE_NUM);
add_embedded_arg("spriteB", ID_TYPE_NUM);
@@ -2641,6 +2683,8 @@ embed_function("SetWorld3DMaxSubSteps", ID_TYPE_SUB);
add_embedded_arg("steps", ID_TYPE_NUM);
embed_function("SetWorld3DTimeStep", ID_TYPE_SUB);
add_embedded_arg("ts", ID_TYPE_NUM);
embed_function("GetWorld3DMaxSubSteps", ID_TYPE_FN_NUM);
embed_function("GetWorld3DTimeStep", ID_TYPE_FN_NUM);
embed_function("startParticleEmitter", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("stopParticleEmitter", ID_TYPE_SUB);

File diff suppressed because it is too large Load Diff

View File

@@ -1592,6 +1592,60 @@ case FN_setSpriteFixedRotation: //Sub Procedure
case FN_spriteIsFixedRotation: //Number Function
rc_push_num(rc_spriteIsFixedRotation( SPRITEISFIXEDROTATION_SPR_ID ));
break;
case FN_SetSpriteDensity: //Sub Procedure
rc_setSpriteDensity( SETSPRITEDENSITY_SPR_ID, SETSPRITEDENSITY_DENSITY );
break;
case FN_GetSpriteDensity: //Number Function
rc_push_num(rc_getSpriteDensity( GETSPRITEDENSITY_SPR_ID ));
break;
case FN_SetSpriteFriction: //Sub Procedure
rc_setSpriteFriction( SETSPRITEFRICTION_SPR_ID, SETSPRITEFRICTION_FRICTION );
break;
case FN_GetSpriteFriction: //Number Function
rc_push_num(rc_getSpriteFriction( GETSPRITEFRICTION_SPR_ID ));
break;
case FN_SetSpriteRestitution: //Sub Procedure
rc_setSpriteRestitution( SETSPRITERESTITUTION_SPR_ID, SETSPRITERESTITUTION_RESTITUTION );
break;
case FN_GetSpriteRestitution: //Number Function
rc_push_num(rc_getSpriteRestitution( GETSPRITERESTITUTION_SPR_ID ));
break;
case FN_SetSpriteRestitutionThreshold: //Sub Procedure
rc_setSpriteRestitutionThreshold( SETSPRITERESTITUTIONTHRESHOLD_SPR_ID, SETSPRITERESTITUTIONTHRESHOLD_THRESHOLD );
break;
case FN_GetSpriteAABB: //Sub Procedure
rc_getSpriteAABB( GETSPRITEAABB_SPR_ID, &GETSPRITEAABB_X1, &GETSPRITEAABB_Y1, &GETSPRITEAABB_X2, &GETSPRITEAABB_Y2 );
break;
case FN_SetGravity2D: //Sub Procedure
rc_setGravity2D( SETGRAVITY2D_X, SETGRAVITY2D_Y );
break;
case FN_GetGravity2D: //Sub Procedure
rc_getGravity2D( &GETGRAVITY2D_X, &GETGRAVITY2D_Y );
break;
case FN_SetWorld2DTimeStep: //Sub Procedure
rc_setWorld2DTimeStep( SETWORLD2DTIMESTEP_TS );
break;
case FN_SetWorld2DVelocityIterations: //Sub Procedure
rc_setWorld2DVelocityIterations( SETWORLD2DVELOCITYITERATIONS_V );
break;
case FN_SetWorld2DPositionIterations: //Sub Procedure
rc_setWorld2DPositionIterations( SETWORLD2DPOSITIONITERATIONS_P );
break;
case FN_GetWorld2DTimeStep: //Number Function
rc_push_num(rc_getWorld2DTimeStep( ));
break;
case FN_GetWorld2DVelocityIterations: //Number Function
rc_push_num(rc_getWorld2DVelocityIterations( ));
break;
case FN_GetWorld2DPositionIterations: //Number Function
rc_push_num(rc_getWorld2DPositionIterations( ));
break;
case FN_SetWorld2DAutoClearForces: //Sub Procedure
rc_setWorld2DAutoClearForces( SETWORLD2DAUTOCLEARFORCES_FLAG );
break;
case FN_GetWorld2DAutoClearForces: //Number Function
rc_push_num(rc_getWorld2DAutoClearForces( ));
break;
case FN_createDistanceJoint: //Number Function
rc_push_num(rc_createDistanceJoint( CREATEDISTANCEJOINT_SPRITEA, CREATEDISTANCEJOINT_SPRITEB, CREATEDISTANCEJOINT_AX, CREATEDISTANCEJOINT_AY, CREATEDISTANCEJOINT_BX, CREATEDISTANCEJOINT_BY, CREATEDISTANCEJOINT_COLLIDE_CONNECT ));
break;
@@ -2567,6 +2621,12 @@ case FN_SetWorld3DMaxSubSteps: //Sub Procedure
case FN_SetWorld3DTimeStep: //Sub Procedure
rc_setWorld3DTimeStep( SETWORLD3DTIMESTEP_TS );
break;
case FN_GetWorld3DMaxSubSteps: //Number Function
rc_push_num(rc_getWorld3DMaxSubSteps( ));
break;
case FN_GetWorld3DTimeStep: //Number Function
rc_push_num(rc_getWorld3DTimeStep( ));
break;
case FN_startParticleEmitter: //Sub Procedure
rc_startParticleEmitter( STARTPARTICLEEMITTER_ACTOR );
break;