Added 3D Primitive functions

This commit is contained in:
n00b
2024-12-15 19:43:58 -05:00
parent d4aa4198af
commit 98e8257e4a
13 changed files with 1833 additions and 1602 deletions

View File

@@ -583,6 +583,14 @@ ul, #myUL {
<li><a href="pset.html" target="main">Pset</a></li> <li><a href="pset.html" target="main">Pset</a></li>
<li><a href="triangle.html" target="main">Triangle</a></li>
<li><a href="line3d.html" target="main">Line3D</a></li>
<li><a href="box3d.html" target="main">Box3D</a></li>
<li><a href="triangle3d.html" target="main">Triangle3D</a></li>
</ul> </ul>
</li> </li>

View File

@@ -209,6 +209,10 @@ rc_drawRectFill( RECTFILL_X, RECTFILL_Y, RECTFILL_W, RECTFILL_H )
rc_rgb( RGB_R, RGB_G, RGB_B ) rc_rgb( RGB_R, RGB_G, RGB_B )
rc_rgba( RGBA_R, RGBA_G, RGBA_B, RGBA_A ) rc_rgba( RGBA_R, RGBA_G, RGBA_B, RGBA_A )
rc_drawPixel( PSET_X, PSET_Y ) rc_drawPixel( PSET_X, PSET_Y )
rc_drawTriangle( TRIANGLE_X1, TRIANGLE_Y1, TRIANGLE_X2, TRIANGLE_Y2, TRIANGLE_X3, TRIANGLE_Y3 )
rc_drawLine3D( LINE3D_X1, LINE3D_Y1, LINE3D_Z1, LINE3D_X2, LINE3D_Y2, LINE3D_Z2 )
rc_drawBox3D( BOX3D_MIN_X, BOX3D_MIN_Y, BOX3D_MIN_Z, BOX3D_MAX_X, BOX3D_MAX_Y, BOX3D_MAX_Z )
rc_drawTriangle3D( TRIANGLE3D_X1, TRIANGLE3D_Y1, TRIANGLE3D_Z1, TRIANGLE3D_X2, TRIANGLE3D_Y2, TRIANGLE3D_Z2, TRIANGLE3D_X3, TRIANGLE3D_Y3, TRIANGLE3D_Z3 )
rc_loadImage( LOADIMAGE_IMG$ ) rc_loadImage( LOADIMAGE_IMG$ )
rc_loadImageEx( LOADIMAGEEX_IMG$, LOADIMAGEEX_COLKEY ) rc_loadImageEx( LOADIMAGEEX_IMG$, LOADIMAGEEX_COLKEY )
rc_createImage( CREATEIMAGE_W, CREATEIMAGE_H, &CREATEIMAGE_BUFFER ) rc_createImage( CREATEIMAGE_W, CREATEIMAGE_H, &CREATEIMAGE_BUFFER )

View File

@@ -12,3 +12,7 @@ sub RectFill(x, y, w, h)
function RGB(r,g,b) function RGB(r,g,b)
function RGBA(r,g,b,a) function RGBA(r,g,b,a)
sub Pset(x,y) sub Pset(x,y)
sub Triangle(x1, y1, x2, y2, x3, y3)
sub Line3D(x1, y1, z1, x2, y2, z2)
sub Box3D(min_x, min_y, min_z, max_x, max_y, max_z)
sub Triangle3D(x1, y1, z1, x2, y2, z2, x3, y3, z3)

View File

@@ -579,6 +579,37 @@ void init_embedded_functions()
embed_function("Pset", ID_TYPE_SUB); embed_function("Pset", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM); add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM); add_embedded_arg("y", ID_TYPE_NUM);
embed_function("Triangle", ID_TYPE_SUB);
add_embedded_arg("x1", ID_TYPE_NUM);
add_embedded_arg("y1", ID_TYPE_NUM);
add_embedded_arg("x2", ID_TYPE_NUM);
add_embedded_arg("y2", ID_TYPE_NUM);
add_embedded_arg("x3", ID_TYPE_NUM);
add_embedded_arg("y3", ID_TYPE_NUM);
embed_function("Line3D", ID_TYPE_SUB);
add_embedded_arg("x1", ID_TYPE_NUM);
add_embedded_arg("y1", ID_TYPE_NUM);
add_embedded_arg("z1", ID_TYPE_NUM);
add_embedded_arg("x2", ID_TYPE_NUM);
add_embedded_arg("y2", ID_TYPE_NUM);
add_embedded_arg("z2", ID_TYPE_NUM);
embed_function("Box3D", ID_TYPE_SUB);
add_embedded_arg("min_x", ID_TYPE_NUM);
add_embedded_arg("min_y", ID_TYPE_NUM);
add_embedded_arg("min_z", ID_TYPE_NUM);
add_embedded_arg("max_x", ID_TYPE_NUM);
add_embedded_arg("max_y", ID_TYPE_NUM);
add_embedded_arg("max_z", ID_TYPE_NUM);
embed_function("Triangle3D", ID_TYPE_SUB);
add_embedded_arg("x1", ID_TYPE_NUM);
add_embedded_arg("y1", ID_TYPE_NUM);
add_embedded_arg("z1", ID_TYPE_NUM);
add_embedded_arg("x2", ID_TYPE_NUM);
add_embedded_arg("y2", ID_TYPE_NUM);
add_embedded_arg("z2", ID_TYPE_NUM);
add_embedded_arg("x3", ID_TYPE_NUM);
add_embedded_arg("y3", ID_TYPE_NUM);
add_embedded_arg("z3", ID_TYPE_NUM);
embed_function("LoadImage", ID_TYPE_FN_NUM); embed_function("LoadImage", ID_TYPE_FN_NUM);
add_embedded_arg("img$", ID_TYPE_STR); add_embedded_arg("img$", ID_TYPE_STR);
embed_function("LoadImageEx", ID_TYPE_FN_NUM); embed_function("LoadImageEx", ID_TYPE_FN_NUM);

View File

@@ -378,6 +378,33 @@ N main.RGBA b 2
N main.RGBA a 3 N main.RGBA a 3
N main.Pset x 0 N main.Pset x 0
N main.Pset y 1 N main.Pset y 1
N main.Triangle x1 0
N main.Triangle y1 1
N main.Triangle x2 2
N main.Triangle y2 3
N main.Triangle x3 4
N main.Triangle y3 5
N main.Line3D x1 0
N main.Line3D y1 1
N main.Line3D z1 2
N main.Line3D x2 3
N main.Line3D y2 4
N main.Line3D z2 5
N main.Box3D min_x 0
N main.Box3D min_y 1
N main.Box3D min_z 2
N main.Box3D max_x 3
N main.Box3D max_y 4
N main.Box3D max_z 5
N main.Triangle3D x1 0
N main.Triangle3D y1 1
N main.Triangle3D z1 2
N main.Triangle3D x2 3
N main.Triangle3D y2 4
N main.Triangle3D z2 5
N main.Triangle3D x3 6
N main.Triangle3D y3 7
N main.Triangle3D z3 8
S main.LoadImage img$ 0 S main.LoadImage img$ 0
S main.LoadImageEx img$ 0 S main.LoadImageEx img$ 0
N main.LoadImageEx colkey 0 N main.LoadImageEx colkey 0

Binary file not shown.

View File

@@ -573,6 +573,37 @@ add_embedded_arg("a", ID_TYPE_NUM);
embed_function("Pset", ID_TYPE_SUB); embed_function("Pset", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM); add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM); add_embedded_arg("y", ID_TYPE_NUM);
embed_function("Triangle", ID_TYPE_SUB);
add_embedded_arg("x1", ID_TYPE_NUM);
add_embedded_arg("y1", ID_TYPE_NUM);
add_embedded_arg("x2", ID_TYPE_NUM);
add_embedded_arg("y2", ID_TYPE_NUM);
add_embedded_arg("x3", ID_TYPE_NUM);
add_embedded_arg("y3", ID_TYPE_NUM);
embed_function("Line3D", ID_TYPE_SUB);
add_embedded_arg("x1", ID_TYPE_NUM);
add_embedded_arg("y1", ID_TYPE_NUM);
add_embedded_arg("z1", ID_TYPE_NUM);
add_embedded_arg("x2", ID_TYPE_NUM);
add_embedded_arg("y2", ID_TYPE_NUM);
add_embedded_arg("z2", ID_TYPE_NUM);
embed_function("Box3D", ID_TYPE_SUB);
add_embedded_arg("min_x", ID_TYPE_NUM);
add_embedded_arg("min_y", ID_TYPE_NUM);
add_embedded_arg("min_z", ID_TYPE_NUM);
add_embedded_arg("max_x", ID_TYPE_NUM);
add_embedded_arg("max_y", ID_TYPE_NUM);
add_embedded_arg("max_z", ID_TYPE_NUM);
embed_function("Triangle3D", ID_TYPE_SUB);
add_embedded_arg("x1", ID_TYPE_NUM);
add_embedded_arg("y1", ID_TYPE_NUM);
add_embedded_arg("z1", ID_TYPE_NUM);
add_embedded_arg("x2", ID_TYPE_NUM);
add_embedded_arg("y2", ID_TYPE_NUM);
add_embedded_arg("z2", ID_TYPE_NUM);
add_embedded_arg("x3", ID_TYPE_NUM);
add_embedded_arg("y3", ID_TYPE_NUM);
add_embedded_arg("z3", ID_TYPE_NUM);
embed_function("LoadImage", ID_TYPE_FN_NUM); embed_function("LoadImage", ID_TYPE_FN_NUM);
add_embedded_arg("img$", ID_TYPE_STR); add_embedded_arg("img$", ID_TYPE_STR);
embed_function("LoadImageEx", ID_TYPE_FN_NUM); embed_function("LoadImageEx", ID_TYPE_FN_NUM);

File diff suppressed because it is too large Load Diff

View File

@@ -658,6 +658,18 @@ case FN_RGBA: //Number Function
case FN_Pset: //Sub Procedure case FN_Pset: //Sub Procedure
rc_drawPixel( PSET_X, PSET_Y ); rc_drawPixel( PSET_X, PSET_Y );
break; break;
case FN_Triangle: //Sub Procedure
rc_drawTriangle( TRIANGLE_X1, TRIANGLE_Y1, TRIANGLE_X2, TRIANGLE_Y2, TRIANGLE_X3, TRIANGLE_Y3 );
break;
case FN_Line3D: //Sub Procedure
rc_drawLine3D( LINE3D_X1, LINE3D_Y1, LINE3D_Z1, LINE3D_X2, LINE3D_Y2, LINE3D_Z2 );
break;
case FN_Box3D: //Sub Procedure
rc_drawBox3D( BOX3D_MIN_X, BOX3D_MIN_Y, BOX3D_MIN_Z, BOX3D_MAX_X, BOX3D_MAX_Y, BOX3D_MAX_Z );
break;
case FN_Triangle3D: //Sub Procedure
rc_drawTriangle3D( TRIANGLE3D_X1, TRIANGLE3D_Y1, TRIANGLE3D_Z1, TRIANGLE3D_X2, TRIANGLE3D_Y2, TRIANGLE3D_Z2, TRIANGLE3D_X3, TRIANGLE3D_Y3, TRIANGLE3D_Z3 );
break;
case FN_LoadImage: //Number Function case FN_LoadImage: //Number Function
rc_push_num(rc_loadImage( LOADIMAGE_IMG$ )); rc_push_num(rc_loadImage( LOADIMAGE_IMG$ ));
break; break;

File diff suppressed because it is too large Load Diff

View File

@@ -658,6 +658,18 @@ case FN_RGBA: //Number Function
case FN_Pset: //Sub Procedure case FN_Pset: //Sub Procedure
rc_drawPixel( PSET_X, PSET_Y ); rc_drawPixel( PSET_X, PSET_Y );
break; break;
case FN_Triangle: //Sub Procedure
rc_drawTriangle( TRIANGLE_X1, TRIANGLE_Y1, TRIANGLE_X2, TRIANGLE_Y2, TRIANGLE_X3, TRIANGLE_Y3 );
break;
case FN_Line3D: //Sub Procedure
rc_drawLine3D( LINE3D_X1, LINE3D_Y1, LINE3D_Z1, LINE3D_X2, LINE3D_Y2, LINE3D_Z2 );
break;
case FN_Box3D: //Sub Procedure
rc_drawBox3D( BOX3D_MIN_X, BOX3D_MIN_Y, BOX3D_MIN_Z, BOX3D_MAX_X, BOX3D_MAX_Y, BOX3D_MAX_Z );
break;
case FN_Triangle3D: //Sub Procedure
rc_drawTriangle3D( TRIANGLE3D_X1, TRIANGLE3D_Y1, TRIANGLE3D_Z1, TRIANGLE3D_X2, TRIANGLE3D_Y2, TRIANGLE3D_Z2, TRIANGLE3D_X3, TRIANGLE3D_Y3, TRIANGLE3D_Z3 );
break;
case FN_LoadImage: //Number Function case FN_LoadImage: //Number Function
rc_push_num(rc_loadImage( LOADIMAGE_IMG$ )); rc_push_num(rc_loadImage( LOADIMAGE_IMG$ ));
break; break;

View File

@@ -1594,6 +1594,46 @@ void rc_drawLine(int x1, int y1, int x2, int y2)
VideoDriver->draw2DLine(r_pos_start, r_pos_end, rc_active_color); VideoDriver->draw2DLine(r_pos_start, r_pos_end, rc_active_color);
} }
void rc_drawLine3D(double x1, double y1, double z1, double x2, double y2, double z2)
{
irr::core::vector3d<f32> r_pos_start(x1,y1,z1);
irr::core::vector3d<f32> r_pos_end(x2,y2,z2);
VideoDriver->draw3DLine(r_pos_start, r_pos_end, rc_active_color);
}
void rc_drawBox3D(double x1, double y1, double z1, double x2, double y2, double z2)
{
irr::core::aabbox3d<f32> bbox(x1, y1, z1, x2, y2, z2);
VideoDriver->draw3DBox(bbox, rc_active_color);
}
void rc_drawTriangle3D(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
{
irr::core::vector3d<f32> v1(x1,y1,z1);
irr::core::vector3d<f32> v2(x2,y2,z2);
irr::core::vector3d<f32> v3(x3,y3,z3);
irr::core::triangle3d<f32> tri(v1, v2, v3);
VideoDriver->draw3DTriangle(tri, rc_active_color);
}
void rc_drawTriangle(double x1, double y1, double x2, double y2, double x3, double y3)
{
irr::core::array<irr::video::S3DVertex> v;
v.push_back(video::S3DVertex(x1, y1, 0.f, 0.f, 1.f, 0.f, rc_active_color, 0.5f, 0.5f));
v.push_back(video::S3DVertex(x2, y2, 0.f, 0.f, 1.f, 0.f, rc_active_color, 0.5f, 0.5f));
v.push_back(video::S3DVertex(x3, y3, 0.f, 0.f, 1.f, 0.f, rc_active_color, 0.5f, 0.5f));
irr::core::array<irr::u16> i;
i.push_back(0);
i.push_back(1);
i.push_back(2);
VideoDriver->draw2DVertexPrimitiveList(v.pointer(), 3, i.pointer(), 1);
}
void rc_poly(Uint32 n, double* vx_d, double* vy_d) void rc_poly(Uint32 n, double* vx_d, double* vy_d)
{ {
if(n <= 0) if(n <= 0)

View File

@@ -36,7 +36,7 @@
1734280140 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h 1734280140 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
<TargetConditionals.h> <TargetConditionals.h>
1734207007 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h 1734309571 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h 1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
"rc_os_defines.h" "rc_os_defines.h"
@@ -1248,7 +1248,7 @@
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
<irrlicht.h> <irrlicht.h>
1734280525 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h 1734309744 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
"SDL.h" "SDL.h"
<SDL2/SDL.h> <SDL2/SDL.h>
<irrlicht.h> <irrlicht.h>
@@ -2243,7 +2243,7 @@
<SDL2/SDL.h> <SDL2/SDL.h>
<SDL2/SDL_mixer.h> <SDL2/SDL_mixer.h>
1734288894 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_net.h 1734293958 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_net.h
"rc_os_defines.h" "rc_os_defines.h"
<android/log.h> <android/log.h>
"SDL.h" "SDL.h"
@@ -2275,7 +2275,7 @@
"rc_gfx_core.h" "rc_gfx_core.h"
<irrtheora.h> <irrtheora.h>
1734207007 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h 1734309571 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp 1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp
"irrBullet.h" "irrBullet.h"