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)
|
||||
{
|
||||
//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";
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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_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);
|
||||
}
|
||||
|
||||
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);
|
||||
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> 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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -502,6 +502,35 @@ bool rc_update()
|
||||
|
||||
//irr::core::rect viewport(irr::core::position, rc_canvas[i].viewport.dimension);
|
||||
//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();
|
||||
//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++)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# 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"
|
||||
<emscripten.h>
|
||||
<sys/param.h>
|
||||
@@ -33,7 +33,7 @@
|
||||
<irrtheora.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>
|
||||
|
||||
1734309571 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
|
||||
@@ -1248,7 +1248,7 @@
|
||||
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.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"
|
||||
<SDL2/SDL.h>
|
||||
<irrlicht.h>
|
||||
@@ -1272,7 +1272,7 @@
|
||||
"rc_joints.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"
|
||||
"btBulletDynamicsCommon.h"
|
||||
"BulletSoftBody/btSoftRigidDynamicsWorld.h"
|
||||
@@ -2539,7 +2539,7 @@
|
||||
|
||||
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
|
||||
"BulletCollision/CollisionShapes/btTriangleCallback.h"
|
||||
|
||||
Reference in New Issue
Block a user