Added ray cast functions

This commit is contained in:
n00b
2024-12-14 15:13:55 -05:00
parent 447bc241d7
commit f392bdebfc
19 changed files with 3563 additions and 1013 deletions

View File

@@ -538,6 +538,9 @@ rc_getWorld2DVelocityIterations( )
rc_getWorld2DPositionIterations( )
rc_setWorld2DAutoClearForces( SETWORLD2DAUTOCLEARFORCES_FLAG )
rc_getWorld2DAutoClearForces( )
rc_castRay2D( CASTRAY2D_FROM_X, CASTRAY2D_FROM_Y, CASTRAY2D_TO_X, CASTRAY2D_TO_Y )
rc_castRay2D_All( CASTRAY2D_ALL_FROM_X, CASTRAY2D_ALL_FROM_Y, CASTRAY2D_ALL_TO_X, CASTRAY2D_ALL_TO_Y )
rc_getRayHit2D( GETRAYHIT2D_INDEX, &GETRAYHIT2D_SPR_ID, &GETRAYHIT2D_X, &GETRAYHIT2D_Y, &GETRAYHIT2D_NORMAL_X, &GETRAYHIT2D_NORMAL_Y )
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 )
@@ -734,6 +737,9 @@ rc_computeActorGyroImpulseLocal( COMPUTEACTORGYROIMPULSELOCAL_ACTOR, COMPUTEACT
rc_computeActorGyroImpulseWorld( COMPUTEACTORGYROIMPULSEWORLD_ACTOR, COMPUTEACTORGYROIMPULSEWORLD_DT, &COMPUTEACTORGYROIMPULSEWORLD_X, &COMPUTEACTORGYROIMPULSEWORLD_Y, &COMPUTEACTORGYROIMPULSEWORLD_Z )
rc_getActorLocalInertia( GETACTORLOCALINERTIA_ACTOR, &GETACTORLOCALINERTIA_X, &GETACTORLOCALINERTIA_Y, &GETACTORLOCALINERTIA_Z )
rc_setActorSleepState( SETACTORSLEEPSTATE_ACTOR, SETACTORSLEEPSTATE_STATE )
rc_castRay3D( CASTRAY3D_FROM_X, CASTRAY3D_FROM_Y, CASTRAY3D_FROM_Z, CASTRAY3D_TO_X, CASTRAY3D_TO_Y, CASTRAY3D_TO_Z )
rc_castRay3D_All( CASTRAY3D_ALL_FROM_X, CASTRAY3D_ALL_FROM_Y, CASTRAY3D_ALL_FROM_Z, CASTRAY3D_ALL_TO_X, CASTRAY3D_ALL_TO_Y, CASTRAY3D_ALL_TO_Z )
rc_getRayHit3D( GETRAYHIT3D_INDEX, &GETRAYHIT3D_ACTOR_ID, &GETRAYHIT3D_X, &GETRAYHIT3D_Y, &GETRAYHIT3D_Z, &GETRAYHIT3D_NORMAL_X, &GETRAYHIT3D_NORMAL_Y, &GETRAYHIT3D_NORMAL_Z )
rc_createPointConstraint( CREATEPOINTCONSTRAINT_ACTORA, CREATEPOINTCONSTRAINT_PXA, CREATEPOINTCONSTRAINT_PYA, CREATEPOINTCONSTRAINT_PZA )
rc_createPointConstraintEx( CREATEPOINTCONSTRAINTEX_ACTORA, CREATEPOINTCONSTRAINTEX_ACTORB, CREATEPOINTCONSTRAINTEX_PXA, CREATEPOINTCONSTRAINTEX_PYA, CREATEPOINTCONSTRAINTEX_PZA, CREATEPOINTCONSTRAINTEX_PXB, CREATEPOINTCONSTRAINTEX_PYB, CREATEPOINTCONSTRAINTEX_PZB )
rc_setPointPivotA( SETPOINTPIVOTA_CONSTRAINT_ID, SETPOINTPIVOTA_X, SETPOINTPIVOTA_Y, SETPOINTPIVOTA_Z )

View File

@@ -57,3 +57,6 @@ sub computeActorGyroImpulseLocal( actor, dt, ByRef x, ByRef y, ByRef z)
sub computeActorGyroImpulseWorld( actor, dt, ByRef x, ByRef y, ByRef z)
sub getActorLocalInertia( actor, ByRef x, ByRef y, ByRef z)
sub SetActorSleepState(actor, state)
function CastRay3D( from_x, from_y, from_z, to_x, to_y, to_z )
function CastRay3D_All( from_x, from_y, from_z, to_x, to_y, to_z )
sub GetRayHit3D( index, ByRef actor_id, ByRef x, ByRef y, ByRef z, ByRef normal_x, ByRef normal_y, ByRef normal_z )

View File

@@ -1,2 +1,2 @@
sub Fprint(txt$)
sub FPrint(txt$)
function Input$(prompt$)

View File

@@ -49,3 +49,6 @@ function GetWorld2DVelocityIterations()
function GetWorld2DPositionIterations()
sub SetWorld2DAutoClearForces( flag )
function GetWorld2DAutoClearForces()
function CastRay2D( from_x, from_y, to_x, to_y )
function CastRay2D_All( from_x, from_y, to_x, to_y )
sub GetRayHit2D( index, ByRef spr_id, ByRef x, ByRef y, ByRef normal_x, ByRef normal_y )

View File

@@ -4,7 +4,7 @@
void init_embedded_functions()
{
embed_function("Fprint", ID_TYPE_SUB);
embed_function("FPrint", ID_TYPE_SUB);
add_embedded_arg("txt$", ID_TYPE_STR);
embed_function("Input$", ID_TYPE_FN_STR);
add_embedded_arg("prompt$", ID_TYPE_STR);
@@ -1559,6 +1559,23 @@ void init_embedded_functions()
embed_function("SetWorld2DAutoClearForces", ID_TYPE_SUB);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("GetWorld2DAutoClearForces", ID_TYPE_FN_NUM);
embed_function("CastRay2D", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
embed_function("CastRay2D_All", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
embed_function("GetRayHit2D", ID_TYPE_SUB);
add_embedded_arg("index", ID_TYPE_NUM);
add_embedded_arg("spr_id", ID_TYPE_BYREF_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_x", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_y", ID_TYPE_BYREF_NUM);
embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
add_embedded_arg("spriteA", ID_TYPE_NUM);
add_embedded_arg("spriteB", ID_TYPE_NUM);
@@ -2299,6 +2316,29 @@ void init_embedded_functions()
embed_function("SetActorSleepState", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("state", ID_TYPE_NUM);
embed_function("CastRay3D", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("from_z", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
add_embedded_arg("to_z", ID_TYPE_NUM);
embed_function("CastRay3D_All", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("from_z", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
add_embedded_arg("to_z", ID_TYPE_NUM);
embed_function("GetRayHit3D", ID_TYPE_SUB);
add_embedded_arg("index", ID_TYPE_NUM);
add_embedded_arg("actor_id", ID_TYPE_BYREF_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
add_embedded_arg("z", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_x", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_y", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_z", ID_TYPE_BYREF_NUM);
embed_function("createPointConstraint", ID_TYPE_FN_NUM);
add_embedded_arg("actorA", ID_TYPE_NUM);
add_embedded_arg("pxA", ID_TYPE_NUM);

View File

@@ -1 +1,43 @@
/home/n00b/Music/Simple 3D Platformer/main.bas
embedded_functions.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/conio.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/arrays.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/math.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/strings.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/stacks.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/files.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/directories.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/datetime.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/window.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/canvas.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/prim2d.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/images.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/keyboard.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/audio.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/joystick.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/gfxconsole.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/text.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/touch.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/network.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/video.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/system.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/matrix.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/process.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/clipboard.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/textedit.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/sprites.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/sprite_animation.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/sprite_physics.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/joint2D.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
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/scene.bas
/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/particles.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/materials.bas

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,4 +1,4 @@
embed_function("Fprint", ID_TYPE_SUB);
embed_function("FPrint", ID_TYPE_SUB);
add_embedded_arg("txt$", ID_TYPE_STR);
embed_function("Input$", ID_TYPE_FN_STR);
add_embedded_arg("prompt$", ID_TYPE_STR);
@@ -1553,6 +1553,23 @@ 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("CastRay2D", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
embed_function("CastRay2D_All", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
embed_function("GetRayHit2D", ID_TYPE_SUB);
add_embedded_arg("index", ID_TYPE_NUM);
add_embedded_arg("spr_id", ID_TYPE_BYREF_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_x", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_y", ID_TYPE_BYREF_NUM);
embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
add_embedded_arg("spriteA", ID_TYPE_NUM);
add_embedded_arg("spriteB", ID_TYPE_NUM);
@@ -2293,6 +2310,29 @@ add_embedded_arg("z", ID_TYPE_BYREF_NUM);
embed_function("SetActorSleepState", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("state", ID_TYPE_NUM);
embed_function("CastRay3D", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("from_z", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
add_embedded_arg("to_z", ID_TYPE_NUM);
embed_function("CastRay3D_All", ID_TYPE_FN_NUM);
add_embedded_arg("from_x", ID_TYPE_NUM);
add_embedded_arg("from_y", ID_TYPE_NUM);
add_embedded_arg("from_z", ID_TYPE_NUM);
add_embedded_arg("to_x", ID_TYPE_NUM);
add_embedded_arg("to_y", ID_TYPE_NUM);
add_embedded_arg("to_z", ID_TYPE_NUM);
embed_function("GetRayHit3D", ID_TYPE_SUB);
add_embedded_arg("index", ID_TYPE_NUM);
add_embedded_arg("actor_id", ID_TYPE_BYREF_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
add_embedded_arg("z", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_x", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_y", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_z", ID_TYPE_BYREF_NUM);
embed_function("createPointConstraint", ID_TYPE_FN_NUM);
add_embedded_arg("actorA", ID_TYPE_NUM);
add_embedded_arg("pxA", ID_TYPE_NUM);

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
case FN_Fprint: //Sub Procedure
case FN_FPrint: //Sub Procedure
rc_fprint( FPRINT_TXT$ );
break;
case FN_Input$: //String Function
@@ -1646,6 +1646,15 @@ case FN_SetWorld2DAutoClearForces: //Sub Procedure
case FN_GetWorld2DAutoClearForces: //Number Function
rc_push_num(rc_getWorld2DAutoClearForces( ));
break;
case FN_CastRay2D: //Number Function
rc_push_num(rc_castRay2D( CASTRAY2D_FROM_X, CASTRAY2D_FROM_Y, CASTRAY2D_TO_X, CASTRAY2D_TO_Y ));
break;
case FN_CastRay2D_All: //Number Function
rc_push_num(rc_castRay2D_All( CASTRAY2D_ALL_FROM_X, CASTRAY2D_ALL_FROM_Y, CASTRAY2D_ALL_TO_X, CASTRAY2D_ALL_TO_Y ));
break;
case FN_GetRayHit2D: //Sub Procedure
rc_getRayHit2D( GETRAYHIT2D_INDEX, &GETRAYHIT2D_SPR_ID, &GETRAYHIT2D_X, &GETRAYHIT2D_Y, &GETRAYHIT2D_NORMAL_X, &GETRAYHIT2D_NORMAL_Y );
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;
@@ -2234,6 +2243,15 @@ case FN_getActorLocalInertia: //Sub Procedure
case FN_SetActorSleepState: //Sub Procedure
rc_setActorSleepState( SETACTORSLEEPSTATE_ACTOR, SETACTORSLEEPSTATE_STATE );
break;
case FN_CastRay3D: //Number Function
rc_push_num(rc_castRay3D( CASTRAY3D_FROM_X, CASTRAY3D_FROM_Y, CASTRAY3D_FROM_Z, CASTRAY3D_TO_X, CASTRAY3D_TO_Y, CASTRAY3D_TO_Z ));
break;
case FN_CastRay3D_All: //Number Function
rc_push_num(rc_castRay3D_All( CASTRAY3D_ALL_FROM_X, CASTRAY3D_ALL_FROM_Y, CASTRAY3D_ALL_FROM_Z, CASTRAY3D_ALL_TO_X, CASTRAY3D_ALL_TO_Y, CASTRAY3D_ALL_TO_Z ));
break;
case FN_GetRayHit3D: //Sub Procedure
rc_getRayHit3D( GETRAYHIT3D_INDEX, &GETRAYHIT3D_ACTOR_ID, &GETRAYHIT3D_X, &GETRAYHIT3D_Y, &GETRAYHIT3D_Z, &GETRAYHIT3D_NORMAL_X, &GETRAYHIT3D_NORMAL_Y, &GETRAYHIT3D_NORMAL_Z );
break;
case FN_createPointConstraint: //Number Function
rc_push_num(rc_createPointConstraint( CREATEPOINTCONSTRAINT_ACTORA, CREATEPOINTCONSTRAINT_PXA, CREATEPOINTCONSTRAINT_PYA, CREATEPOINTCONSTRAINT_PZA ));
break;