Added sprite shape functions

This commit is contained in:
n00b
2025-03-20 17:29:11 -04:00
parent b6b1ecf86f
commit 14f87ecbf1
197 changed files with 5576 additions and 1203 deletions

View File

@@ -554,6 +554,15 @@ 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_setSpriteCollisionShape( SETSPRITECOLLISIONSHAPE_SPR_ID, SETSPRITECOLLISIONSHAPE_SHAPE )
rc_getSpriteCollisionShape( GETSPRITECOLLISIONSHAPE_SPR_ID )
rc_setSpriteRadius( SETSPRITERADIUS_SPR_ID, SETSPRITERADIUS_RADIUS )
rc_getSpriteRadius( GETSPRITERADIUS_SPR_ID )
rc_setSpriteBox( SETSPRITEBOX_SPR_ID, SETSPRITEBOX_W, SETSPRITEBOX_H )
rc_getSpriteBoxSize( GETSPRITEBOXSIZE_SPR_ID, &GETSPRITEBOXSIZE_W, &GETSPRITEBOXSIZE_H )
rc_setSpriteChain( SETSPRITECHAIN_SPR_ID, &SETSPRITECHAIN_VX, &SETSPRITECHAIN_VY, SETSPRITECHAIN_V_COUNT, SETSPRITECHAIN_PREV_X, SETSPRITECHAIN_PREV_Y, SETSPRITECHAIN_NEXT_X, SETSPRITECHAIN_NEXT_Y )
rc_setSpriteChainLoop( SETSPRITECHAINLOOP_SPR_ID, &SETSPRITECHAINLOOP_VX, &SETSPRITECHAINLOOP_VY, SETSPRITECHAINLOOP_V_COUNT )
rc_setSpritePolygon( SETSPRITEPOLYGON_SPR_ID, &SETSPRITEPOLYGON_VX, &SETSPRITEPOLYGON_VY, SETSPRITEPOLYGON_V_COUNT )
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 )

View File

@@ -52,3 +52,12 @@ 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 )
Sub SetSpriteCollisionShape(spr_id, shape)
Function GetSpriteCollisionShape(spr_id)
Sub SetSpriteRadius(spr_id, radius)
Function GetSpriteRadius(spr_id)
Sub SetSpriteBox(spr_id, w, h)
Sub GetSpriteBoxSize(spr_id, ByRef w, ByRef h)
Sub SetSpriteChain(spr_id, ByRef vx, ByRef vy, v_count, prev_x, prev_y, next_x, next_y)
Sub SetSpriteChainLoop(spr_id, ByRef vx, ByRef vy, v_count)
Sub SetSpritePolygon(spr_id, ByRef vx, ByRef vy, v_count)

View File

@@ -919,9 +919,9 @@ int main(int argc, char * argv[])
bool clean_after_build = true;
//DEBUG START
//chdir("/home/n00b/Programs/RCBasic_v400_Linux64/examples/Spinning Axis");
//chdir("/home/n00b/test/SpriteShapeTest");
//rc_filename = "/home/n00b/test/stp/serenity_main.bas";
//rc_filename = "/home/n00b/Downloads/Tile Scrolling/main.bas";
//rc_filename = "/home/n00b/test/SpriteShapeTest/main.bas";
//rc_filename = "/home/n00b/Programs/RCBasic_v400_Linux64/examples/Constraint/main.bas";
//rc_filename = "/home/n00b/Programs/RCBasic_v400_Linux64/examples/Simple 3D Platformer/main.bas";
//DEBUG END

View File

@@ -1625,6 +1625,43 @@ void init_embedded_functions()
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("SetSpriteCollisionShape", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("shape", ID_TYPE_NUM);
embed_function("GetSpriteCollisionShape", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteRadius", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("radius", ID_TYPE_NUM);
embed_function("GetSpriteRadius", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteBox", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("w", ID_TYPE_NUM);
add_embedded_arg("h", ID_TYPE_NUM);
embed_function("GetSpriteBoxSize", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("w", ID_TYPE_BYREF_NUM);
add_embedded_arg("h", ID_TYPE_BYREF_NUM);
embed_function("SetSpriteChain", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
add_embedded_arg("v_count", ID_TYPE_NUM);
add_embedded_arg("prev_x", ID_TYPE_NUM);
add_embedded_arg("prev_y", ID_TYPE_NUM);
add_embedded_arg("next_x", ID_TYPE_NUM);
add_embedded_arg("next_y", ID_TYPE_NUM);
embed_function("SetSpriteChainLoop", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
add_embedded_arg("v_count", ID_TYPE_NUM);
embed_function("SetSpritePolygon", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
add_embedded_arg("v_count", ID_TYPE_NUM);
embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
add_embedded_arg("spriteA", ID_TYPE_NUM);
add_embedded_arg("spriteB", ID_TYPE_NUM);

Binary file not shown.

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0
1737949758 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
1742442082 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
<iostream>
<stack>
<vector>
@@ -14,7 +14,7 @@
"env_resolve.h"
"identifier.h"
1737864366 /home/n00b/Projects/RCBASIC4/rcbasic_build/tokenizer.h
1742438422 /home/n00b/Projects/RCBASIC4/rcbasic_build/tokenizer.h
<iostream>
<string>
<cctype>
@@ -37,14 +37,14 @@
1734372057 /home/n00b/Projects/RCBASIC4/rcbasic_build/constants.h
<vector>
1737950078 /home/n00b/Projects/RCBASIC4/rcbasic_build/parser.h
1738504435 /home/n00b/Projects/RCBASIC4/rcbasic_build/parser.h
"tokenizer.h"
"identifier.h"
"rc_global.h"
"constants.h"
<inttypes.h>
1737900569 /home/n00b/Projects/RCBASIC4/rcbasic_build/identifier.h
1738504435 /home/n00b/Projects/RCBASIC4/rcbasic_build/identifier.h
<inttypes.h>
<stack>
"rc_global.h"
@@ -54,7 +54,7 @@
1734372057 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h
<inttypes.h>
1737863743 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
1742442075 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
"identifier.h"
1734372057 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h

View File

@@ -2,33 +2,18 @@
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="rc_utility.h" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="main.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1747" topLine="35" />
</Cursor>
</File>
<File name="rc_global.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13014" topLine="163" />
</Cursor>
</File>
<File name="keywords.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="105" topLine="17" />
</Cursor>
</File>
<File name="main.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="28622" topLine="802" />
<Cursor1 position="28572" topLine="811" />
</Cursor>
<Folding>
<Collapse line="305" />
<Collapse line="362" />
</Folding>
</File>
<File name="rc_builtin.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="env_resolve.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="112317" topLine="2509" />
<Cursor1 position="615" topLine="32" />
</Cursor>
</File>
<File name="constants.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -36,14 +21,29 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="tokenizer.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="tokenizer.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="15842" topLine="442" />
<Cursor1 position="50994" topLine="1243" />
</Cursor>
</File>
<File name="env_resolve.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_utility.h" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="615" topLine="32" />
<Cursor1 position="1747" topLine="35" />
</Cursor>
</File>
<File name="identifier.h" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9544" topLine="341" />
</Cursor>
</File>
<File name="rc_global.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13014" topLine="163" />
</Cursor>
</File>
<File name="rc_vm_asm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="41761" topLine="1347" />
</Cursor>
</File>
<File name="parser.h" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -54,14 +54,14 @@
<Collapse line="6341" />
</Folding>
</File>
<File name="rc_vm_asm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="rc_builtin.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="41761" topLine="1347" />
<Cursor1 position="112317" topLine="2509" />
</Cursor>
</File>
<File name="identifier.h" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="keywords.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9544" topLine="341" />
<Cursor1 position="105" topLine="17" />
</Cursor>
</File>
</CodeBlocks_layout_file>

View File

@@ -1619,6 +1619,43 @@ 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("SetSpriteCollisionShape", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("shape", ID_TYPE_NUM);
embed_function("GetSpriteCollisionShape", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteRadius", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("radius", ID_TYPE_NUM);
embed_function("GetSpriteRadius", ID_TYPE_FN_NUM);
add_embedded_arg("spr_id", ID_TYPE_NUM);
embed_function("SetSpriteBox", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("w", ID_TYPE_NUM);
add_embedded_arg("h", ID_TYPE_NUM);
embed_function("GetSpriteBoxSize", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("w", ID_TYPE_BYREF_NUM);
add_embedded_arg("h", ID_TYPE_BYREF_NUM);
embed_function("SetSpriteChain", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
add_embedded_arg("v_count", ID_TYPE_NUM);
add_embedded_arg("prev_x", ID_TYPE_NUM);
add_embedded_arg("prev_y", ID_TYPE_NUM);
add_embedded_arg("next_x", ID_TYPE_NUM);
add_embedded_arg("next_y", ID_TYPE_NUM);
embed_function("SetSpriteChainLoop", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
add_embedded_arg("v_count", ID_TYPE_NUM);
embed_function("SetSpritePolygon", ID_TYPE_SUB);
add_embedded_arg("spr_id", ID_TYPE_NUM);
add_embedded_arg("vx", ID_TYPE_BYREF_NUM);
add_embedded_arg("vy", ID_TYPE_BYREF_NUM);
add_embedded_arg("v_count", ID_TYPE_NUM);
embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
add_embedded_arg("spriteA", ID_TYPE_NUM);
add_embedded_arg("spriteB", ID_TYPE_NUM);

File diff suppressed because it is too large Load Diff

View File

@@ -1694,6 +1694,33 @@ case FN_CastRay2D_All: //Number Function
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_SetSpriteCollisionShape: //Sub Procedure
rc_setSpriteCollisionShape( SETSPRITECOLLISIONSHAPE_SPR_ID, SETSPRITECOLLISIONSHAPE_SHAPE );
break;
case FN_GetSpriteCollisionShape: //Number Function
rc_push_num(rc_getSpriteCollisionShape( GETSPRITECOLLISIONSHAPE_SPR_ID ));
break;
case FN_SetSpriteRadius: //Sub Procedure
rc_setSpriteRadius( SETSPRITERADIUS_SPR_ID, SETSPRITERADIUS_RADIUS );
break;
case FN_GetSpriteRadius: //Number Function
rc_push_num(rc_getSpriteRadius( GETSPRITERADIUS_SPR_ID ));
break;
case FN_SetSpriteBox: //Sub Procedure
rc_setSpriteBox( SETSPRITEBOX_SPR_ID, SETSPRITEBOX_W, SETSPRITEBOX_H );
break;
case FN_GetSpriteBoxSize: //Sub Procedure
rc_getSpriteBoxSize( GETSPRITEBOXSIZE_SPR_ID, &GETSPRITEBOXSIZE_W, &GETSPRITEBOXSIZE_H );
break;
case FN_SetSpriteChain: //Sub Procedure
rc_setSpriteChain( SETSPRITECHAIN_SPR_ID, &SETSPRITECHAIN_VX, &SETSPRITECHAIN_VY, SETSPRITECHAIN_V_COUNT, SETSPRITECHAIN_PREV_X, SETSPRITECHAIN_PREV_Y, SETSPRITECHAIN_NEXT_X, SETSPRITECHAIN_NEXT_Y );
break;
case FN_SetSpriteChainLoop: //Sub Procedure
rc_setSpriteChainLoop( SETSPRITECHAINLOOP_SPR_ID, &SETSPRITECHAINLOOP_VX, &SETSPRITECHAINLOOP_VY, SETSPRITECHAINLOOP_V_COUNT );
break;
case FN_SetSpritePolygon: //Sub Procedure
rc_setSpritePolygon( SETSPRITEPOLYGON_SPR_ID, &SETSPRITEPOLYGON_VX, &SETSPRITEPOLYGON_VY, SETSPRITEPOLYGON_V_COUNT );
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;

View File

@@ -1008,21 +1008,21 @@ string rc_keywordToken(string sline)
return "<num>" + rc_intToString((int)SDL_FLASH_BRIEFLY);
else if(sline.compare("FLASH_UNTIL_FOCUSED")==0)
return "<num>" + rc_intToString((int)SDL_FLASH_UNTIL_FOCUSED);
else if(sline.compare("SHAPE_TYPE_NONE")==0)
else if(sline.compare("ACTOR_SHAPE_NONE")==0)
return "<num>0";
else if(sline.compare("SHAPE_TYPE_BOX")==0)
else if(sline.compare("ACTOR_SHAPE_BOX")==0)
return "<num>1";
else if(sline.compare("SHAPE_TYPE_SPHERE")==0)
else if(sline.compare("ACTOR_SHAPE_SPHERE")==0)
return "<num>2";
else if(sline.compare("SHAPE_TYPE_CYLINDER")==0)
else if(sline.compare("ACTOR_SHAPE_CYLINDER")==0)
return "<num>3";
else if(sline.compare("SHAPE_TYPE_CAPSULE")==0)
else if(sline.compare("ACTOR_SHAPE_CAPSULE")==0)
return "<num>4";
else if(sline.compare("SHAPE_TYPE_CONE")==0)
else if(sline.compare("ACTOR_SHAPE_CONE")==0)
return "<num>5";
else if(sline.compare("SHAPE_TYPE_CONVEXHULL")==0)
else if(sline.compare("ACTOR_SHAPE_CONVEXHULL")==0)
return "<num>6";
else if(sline.compare("SHAPE_TYPE_TRIMESH")==0)
else if(sline.compare("ACTOR_SHAPE_TRIMESH")==0)
return "<num>7";
else if(sline.compare("MATERIAL_FLAG_WIREFRAME")==0)
return "<num>" + rc_intToString( 0x1);
@@ -1254,6 +1254,16 @@ string rc_keywordToken(string sline)
return "<num>14";
else if(sline.compare("COLOR_MASK_ALL")==0)
return "<num>15";
else if(sline.compare("SPRITE_SHAPE_NONE")==0)
return "<num>0";
else if(sline.compare("SPRITE_SHAPE_BOX")==0)
return "<num>1";
else if(sline.compare("SPRITE_SHAPE_POLYGON")==0)
return "<num>2";
else if(sline.compare("SPRITE_SHAPE_CIRCLE")==0)
return "<num>3";
else if(sline.compare("SPRITE_SHAPE_CHAIN")==0)
return "<num>4";
else
{
for(int i = 0; i < rc_constants.size(); i++)