Fixed 3D primitive material setting
This commit is contained in:
@@ -4448,7 +4448,7 @@ int main(int argc, char * argv[])
|
|||||||
if(debug_opt.compare("a")==0)
|
if(debug_opt.compare("a")==0)
|
||||||
{
|
{
|
||||||
//rc_intern_dirChange("/home/n00b/Music/rcbasic_v400_linux64/examples/tile_demo");
|
//rc_intern_dirChange("/home/n00b/Music/rcbasic_v400_linux64/examples/tile_demo");
|
||||||
rc_intern_dirChange("/home/n00b/Music/RCBasic_v400_Linux64/examples/RC3/gfx/beast_demo/");
|
rc_intern_dirChange("");
|
||||||
rc_filename = "main.cbc";
|
rc_filename = "main.cbc";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1594,7 +1594,7 @@ 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)
|
void prim3d_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_start(x1,y1,z1);
|
||||||
irr::core::vector3d<f32> r_pos_end(x2,y2,z2);
|
irr::core::vector3d<f32> r_pos_end(x2,y2,z2);
|
||||||
@@ -1602,13 +1602,13 @@ void rc_drawLine3D(double x1, double y1, double z1, double x2, double y2, double
|
|||||||
VideoDriver->draw3DLine(r_pos_start, r_pos_end, rc_active_color);
|
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)
|
void prim3d_drawBox3D(double x1, double y1, double z1, double x2, double y2, double z2)
|
||||||
{
|
{
|
||||||
irr::core::aabbox3d<f32> bbox(x1, y1, z1, x2, y2, z2);
|
irr::core::aabbox3d<f32> bbox(x1, y1, z1, x2, y2, z2);
|
||||||
VideoDriver->draw3DBox(bbox, rc_active_color);
|
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)
|
void prim3d_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> v1(x1,y1,z1);
|
||||||
irr::core::vector3d<f32> v2(x2,y2,z2);
|
irr::core::vector3d<f32> v2(x2,y2,z2);
|
||||||
@@ -1619,6 +1619,51 @@ void rc_drawTriangle3D(double x1, double y1, double z1, double x2, double y2, do
|
|||||||
VideoDriver->draw3DTriangle(tri, rc_active_color);
|
VideoDriver->draw3DTriangle(tri, rc_active_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rc_drawLine3D(double x1, double y1, double z1, double x2, double y2, double z2)
|
||||||
|
{
|
||||||
|
rc_prim3d_op_obj op;
|
||||||
|
op.prim_type = PRIM3D_LINE;
|
||||||
|
op.color = rc_active_color;
|
||||||
|
op.x[0] = x1;
|
||||||
|
op.y[0] = y1;
|
||||||
|
op.z[0] = z1;
|
||||||
|
op.x[1] = x2;
|
||||||
|
op.y[1] = y2;
|
||||||
|
op.z[1] = z2;
|
||||||
|
rc_prim3d_operation.push_back(op);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rc_drawBox3D(double x1, double y1, double z1, double x2, double y2, double z2)
|
||||||
|
{
|
||||||
|
rc_prim3d_op_obj op;
|
||||||
|
op.prim_type = PRIM3D_BOX;
|
||||||
|
op.color = rc_active_color;
|
||||||
|
op.x[0] = x1;
|
||||||
|
op.y[0] = y1;
|
||||||
|
op.z[0] = z1;
|
||||||
|
op.x[1] = x2;
|
||||||
|
op.y[1] = y2;
|
||||||
|
op.z[1] = z2;
|
||||||
|
rc_prim3d_operation.push_back(op);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rc_drawTriangle3D(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
|
||||||
|
{
|
||||||
|
rc_prim3d_op_obj op;
|
||||||
|
op.prim_type = PRIM3D_TRIANGLE;
|
||||||
|
op.color = rc_active_color;
|
||||||
|
op.x[0] = x1;
|
||||||
|
op.y[0] = y1;
|
||||||
|
op.z[0] = z1;
|
||||||
|
op.x[1] = x2;
|
||||||
|
op.y[1] = y2;
|
||||||
|
op.z[1] = z2;
|
||||||
|
op.x[2] = x3;
|
||||||
|
op.y[2] = y3;
|
||||||
|
op.z[2] = z3;
|
||||||
|
rc_prim3d_operation.push_back(op);
|
||||||
|
}
|
||||||
|
|
||||||
void rc_drawTriangle(double x1, double y1, double x2, double y2, double x3, double y3)
|
void rc_drawTriangle(double x1, double y1, double x2, double y2, double x3, double y3)
|
||||||
{
|
{
|
||||||
irr::core::array<irr::video::S3DVertex> v;
|
irr::core::array<irr::video::S3DVertex> v;
|
||||||
|
|||||||
@@ -746,6 +746,19 @@ irr::core::array<rc_image_obj> rc_image;
|
|||||||
irr::video::E_BLEND_OPERATION rc_blend_mode = irr::video::EBO_ADD;
|
irr::video::E_BLEND_OPERATION rc_blend_mode = irr::video::EBO_ADD;
|
||||||
bool rc_bilinear_filter = false;
|
bool rc_bilinear_filter = false;
|
||||||
|
|
||||||
|
#define PRIM3D_LINE 1
|
||||||
|
#define PRIM3D_TRIANGLE 2
|
||||||
|
#define PRIM3D_BOX 3
|
||||||
|
|
||||||
|
struct rc_prim3d_op_obj
|
||||||
|
{
|
||||||
|
int prim_type;
|
||||||
|
|
||||||
|
double x[4], y[4], z[4];
|
||||||
|
irr::video::SColor color;
|
||||||
|
};
|
||||||
|
|
||||||
|
irr::core::array<rc_prim3d_op_obj> rc_prim3d_operation;
|
||||||
|
|
||||||
void rc_setDriverMaterial()
|
void rc_setDriverMaterial()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -502,6 +502,35 @@ bool rc_update()
|
|||||||
|
|
||||||
//irr::core::rect viewport(irr::core::position, rc_canvas[i].viewport.dimension);
|
//irr::core::rect viewport(irr::core::position, rc_canvas[i].viewport.dimension);
|
||||||
//VideoDriver->setViewPort(viewport);
|
//VideoDriver->setViewPort(viewport);
|
||||||
|
irr::video::SColor current_color = rc_active_color;
|
||||||
|
irr::video::SMaterial m;
|
||||||
|
m.Lighting=false;
|
||||||
|
VideoDriver->setMaterial(m);
|
||||||
|
VideoDriver->setTransform(video::ETS_WORLD, core::matrix4());
|
||||||
|
for(int i = 0; i < rc_prim3d_operation.size(); i++)
|
||||||
|
{
|
||||||
|
switch(rc_prim3d_operation[i].prim_type)
|
||||||
|
{
|
||||||
|
case PRIM3D_LINE:
|
||||||
|
rc_active_color = rc_prim3d_operation[i].color;
|
||||||
|
prim3d_drawLine3D(rc_prim3d_operation[i].x[0], rc_prim3d_operation[i].y[0], rc_prim3d_operation[i].z[0],
|
||||||
|
rc_prim3d_operation[i].x[1], rc_prim3d_operation[i].y[1], rc_prim3d_operation[i].z[1]);
|
||||||
|
break;
|
||||||
|
case PRIM3D_BOX:
|
||||||
|
rc_active_color = rc_prim3d_operation[i].color;
|
||||||
|
prim3d_drawBox3D(rc_prim3d_operation[i].x[0], rc_prim3d_operation[i].y[0], rc_prim3d_operation[i].z[0],
|
||||||
|
rc_prim3d_operation[i].x[1], rc_prim3d_operation[i].y[1], rc_prim3d_operation[i].z[1]);
|
||||||
|
break;
|
||||||
|
case PRIM3D_TRIANGLE:
|
||||||
|
rc_active_color = rc_prim3d_operation[i].color;
|
||||||
|
prim3d_drawTriangle3D(rc_prim3d_operation[i].x[0], rc_prim3d_operation[i].y[0], rc_prim3d_operation[i].z[0],
|
||||||
|
rc_prim3d_operation[i].x[1], rc_prim3d_operation[i].y[1], rc_prim3d_operation[i].z[1],
|
||||||
|
rc_prim3d_operation[i].x[2], rc_prim3d_operation[i].y[2], rc_prim3d_operation[i].z[2]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rc_active_color = current_color;
|
||||||
|
rc_setDriverMaterial();
|
||||||
|
|
||||||
SceneManager->drawAll();
|
SceneManager->drawAll();
|
||||||
//VideoDriver->draw2DRectangle(irr::video::SColor(255,0,255,0), irr::core::rect<irr::s32>(10,40,100,500));
|
//VideoDriver->draw2DRectangle(irr::video::SColor(255,0,255,0), irr::core::rect<irr::s32>(10,40,100,500));
|
||||||
@@ -516,7 +545,7 @@ bool rc_update()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rc_prim3d_operation.clear();
|
||||||
|
|
||||||
for(int cz = 0; cz < rc_canvas_zOrder.size(); cz++)
|
for(int cz = 0; cz < rc_canvas_zOrder.size(); cz++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# depslib dependency file v1.0
|
# depslib dependency file v1.0
|
||||||
1734280140 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
|
1734311733 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
|
||||||
"rc_os_defines.h"
|
"rc_os_defines.h"
|
||||||
<emscripten.h>
|
<emscripten.h>
|
||||||
<sys/param.h>
|
<sys/param.h>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<irrtheora.h>
|
<irrtheora.h>
|
||||||
"rc_func130_cases.h"
|
"rc_func130_cases.h"
|
||||||
|
|
||||||
1734280140 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
|
1734311733 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
|
||||||
<TargetConditionals.h>
|
<TargetConditionals.h>
|
||||||
|
|
||||||
1734309571 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
|
1734309571 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_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>
|
||||||
|
|
||||||
1734309744 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
|
1734312754 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
|
||||||
"SDL.h"
|
"SDL.h"
|
||||||
<SDL2/SDL.h>
|
<SDL2/SDL.h>
|
||||||
<irrlicht.h>
|
<irrlicht.h>
|
||||||
@@ -1272,7 +1272,7 @@
|
|||||||
"rc_joints.h"
|
"rc_joints.h"
|
||||||
<irrtheora.h>
|
<irrtheora.h>
|
||||||
|
|
||||||
1734192650 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
|
1734313369 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
|
||||||
"SDL.h"
|
"SDL.h"
|
||||||
"btBulletDynamicsCommon.h"
|
"btBulletDynamicsCommon.h"
|
||||||
"BulletSoftBody/btSoftRigidDynamicsWorld.h"
|
"BulletSoftBody/btSoftRigidDynamicsWorld.h"
|
||||||
@@ -2539,7 +2539,7 @@
|
|||||||
|
|
||||||
1731249956 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h
|
1731249956 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h
|
||||||
|
|
||||||
1734285254 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h
|
1734313936 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h
|
||||||
|
|
||||||
1608686973 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
|
1608686973 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
|
||||||
"BulletCollision/CollisionShapes/btTriangleCallback.h"
|
"BulletCollision/CollisionShapes/btTriangleCallback.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user