Vehicle Actor WIP
This commit is contained in:
Binary file not shown.
@@ -4453,7 +4453,7 @@ int main(int argc, char * argv[])
|
||||
|
||||
//ogles2 test
|
||||
#ifdef RC_TESTING
|
||||
rc_intern_dirChange("/home/n00b/Music/v47/RCBasic_v47_Linux64/examples/Sprite_Test");
|
||||
rc_intern_dirChange("/home/n00b/Music/test_v48_1/test_v48");
|
||||
//rc_intern_dirChange("");
|
||||
rc_filename = "main.cbc";
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -525,6 +525,7 @@ irr::core::array<rc_an8_obj> rc_an8;
|
||||
#define RC_NODE_TYPE_STMESH 8
|
||||
#define RC_NODE_TYPE_PROJECTOR 9
|
||||
#define RC_NODE_TYPE_COMPOSITE 10
|
||||
#define RC_NODE_TYPE_VEHICLE 11
|
||||
|
||||
|
||||
#define RC_NODE_SHAPE_TYPE_NONE 0
|
||||
@@ -537,6 +538,7 @@ irr::core::array<rc_an8_obj> rc_an8;
|
||||
#define RC_NODE_SHAPE_TYPE_TRIMESH 7
|
||||
#define RC_NODE_SHAPE_TYPE_HEIGHTFIELD 8
|
||||
#define RC_NODE_SHAPE_TYPE_COMPOSITE 9
|
||||
#define RC_NODE_SHAPE_TYPE_IMPACT_MESH 10
|
||||
|
||||
struct rc_node_physics_collision
|
||||
{
|
||||
@@ -553,6 +555,8 @@ struct rc_node_physics
|
||||
{
|
||||
IRigidBody* rigid_body;
|
||||
|
||||
int impact_mesh_id;
|
||||
|
||||
int shape_type;
|
||||
bool isSolid;
|
||||
double mass;
|
||||
@@ -616,6 +620,26 @@ struct rc_actor_fx_material_obj
|
||||
int actor_material_index = -1; //index from node->getMaterial()
|
||||
};
|
||||
|
||||
struct rc_composite_child
|
||||
{
|
||||
int id;
|
||||
irr::core::matrix4 child_transform;
|
||||
ICollisionShape* shape;
|
||||
};
|
||||
|
||||
struct rc_vehicle_wheel
|
||||
{
|
||||
int actor_id;
|
||||
irr::core::matrix4 offset_transform;
|
||||
};
|
||||
|
||||
struct rc_vehicle_properties
|
||||
{
|
||||
int chassis_actor_id;
|
||||
IRaycastVehicle* vehicle;
|
||||
irr::core::array<rc_vehicle_wheel> wheels;
|
||||
};
|
||||
|
||||
struct rc_scene_node
|
||||
{
|
||||
int node_type = 0;
|
||||
@@ -641,11 +665,15 @@ struct rc_scene_node
|
||||
irr::core::array<int> deleted_animation;
|
||||
irr::core::array<rc_actor_animation_obj> animation;
|
||||
|
||||
irr::core::array<int> child_actors; // Only used for composite actor types
|
||||
int parent_id;
|
||||
irr::core::array<rc_composite_child> child_actors; // Only used for composite actor types
|
||||
|
||||
rc_vehicle_properties vehicle_properties;
|
||||
};
|
||||
|
||||
irr::core::array<rc_scene_node> rc_actor;
|
||||
irr::core::array<int> rc_projector_actors;
|
||||
irr::core::array<int> rc_vehicle_actors;
|
||||
irr::core::array<int> rc_transition_actor;
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#define RC_SCENE_H_INCLUDED
|
||||
|
||||
#include "rc_gfx_core.h"
|
||||
#include "rc_base_actor.h"
|
||||
#include "rc_constraint.h"
|
||||
|
||||
void rc_addSceneSkyBox(int img_top, int img_bottom, int img_left, int img_right, int img_front, int img_back)
|
||||
{
|
||||
@@ -78,35 +80,14 @@ void rc_clearScene()
|
||||
{
|
||||
for(int i = 0; i < rc_physics3D.constraints.size(); i++)
|
||||
{
|
||||
if(rc_physics3D.constraints[i].constraint)
|
||||
{
|
||||
rc_physics3D.world->getPointer()->removeConstraint(rc_physics3D.constraints[i].constraint);
|
||||
rc_physics3D.constraints[i].constraint = NULL;
|
||||
rc_physics3D.constraints[i].type = 0;
|
||||
}
|
||||
rc_deleteConstraint(i);
|
||||
}
|
||||
|
||||
rc_projector_actors.clear();
|
||||
|
||||
for(int i = 0; i < rc_actor.size(); i++)
|
||||
{
|
||||
if(rc_actor[i].mesh_node)
|
||||
{
|
||||
if(rc_actor[i].physics.rigid_body)
|
||||
rc_physics3D.world->removeCollisionObject(rc_actor[i].physics.rigid_body, false);
|
||||
|
||||
rc_actor[i].physics.rigid_body = NULL;
|
||||
|
||||
rc_actor[i].physics.collisions.clear();
|
||||
|
||||
rc_actor[i].mesh_node->remove();
|
||||
rc_actor[i].mesh_node = NULL;
|
||||
rc_actor[i].shadow = NULL;
|
||||
rc_actor[i].node_type = 0;
|
||||
rc_actor[i].transition = false;
|
||||
rc_actor[i].transition_time = 0;
|
||||
rc_actor[i].material_ref_index = -1;
|
||||
}
|
||||
rc_deleteActor(i);
|
||||
}
|
||||
|
||||
rc_removeSceneSky();
|
||||
|
||||
@@ -520,11 +520,12 @@ bool rc_update()
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(!manual_render_control)
|
||||
VideoDriver->beginScene(true, true);
|
||||
//if(!manual_render_control)
|
||||
// VideoDriver->beginScene(true, true);
|
||||
|
||||
if(rc_physics3D.enabled && (!hasPreUpdated))
|
||||
{
|
||||
@@ -536,6 +537,31 @@ bool rc_update()
|
||||
rc_physics3D.world->stepSimulation(rc_physics3D.DeltaTime*0.001f, rc_physics3D.maxSubSteps, fixed_timestep);
|
||||
}
|
||||
|
||||
for(int i = 0; i < rc_vehicle_actors.size(); i++)
|
||||
{
|
||||
int vehicle_actor = rc_vehicle_actors[i];
|
||||
|
||||
for(int wheel_index = 0; wheel_index < rc_actor[vehicle_actor].vehicle_properties.wheels.size(); wheel_index++)
|
||||
{
|
||||
SWheelInfo &info = rc_actor[vehicle_actor].vehicle_properties.vehicle->getWheelInfo(wheel_index);
|
||||
|
||||
int wheel_actor = rc_actor[vehicle_actor].vehicle_properties.wheels[wheel_index].actor_id;
|
||||
|
||||
if(wheel_actor < 0 || wheel_actor >= rc_actor.size())
|
||||
continue;
|
||||
|
||||
rc_actor[wheel_actor].physics.rigid_body->setWorldTransform(info.worldTransform);
|
||||
irr::core::matrix4 actor_transform = rc_actor[wheel_actor].physics.rigid_body->getWorldTransform();
|
||||
|
||||
rc_actor[wheel_actor].mesh_node->setPosition( actor_transform.getTranslation() );
|
||||
rc_actor[wheel_actor].mesh_node->setRotation( actor_transform.getRotationDegrees() );
|
||||
rc_actor[wheel_actor].mesh_node->updateAbsolutePosition();
|
||||
}
|
||||
}
|
||||
|
||||
if(!manual_render_control)
|
||||
VideoDriver->beginScene(true, true);
|
||||
|
||||
if(!manual_render_control)
|
||||
{
|
||||
for(int canvas_id = 0; canvas_id < rc_canvas.size(); canvas_id++)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# depslib dependency file v1.0
|
||||
1771296134 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
|
||||
1771311954 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
|
||||
"rc_os_defines.h"
|
||||
<emscripten.h>
|
||||
<sys/param.h>
|
||||
@@ -1275,7 +1275,7 @@
|
||||
"rc_post_fx.h"
|
||||
<irrtheora.h>
|
||||
|
||||
1771041726 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
|
||||
1771574063 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
|
||||
"SDL.h"
|
||||
"btBulletDynamicsCommon.h"
|
||||
"BulletSoftBody/btSoftRigidDynamicsWorld.h"
|
||||
@@ -2341,7 +2341,7 @@
|
||||
"irrBulletCollisionObject.h"
|
||||
<vector3d.h>
|
||||
|
||||
1760243468 source:/home/n00b/Projects/irrBullet/src/irrBulletCollisionShape.cpp
|
||||
1771381630 source:/home/n00b/Projects/irrBullet/src/irrBulletCollisionShape.cpp
|
||||
<btBulletDynamicsCommon.h>
|
||||
<btBulletCollisionCommon.h>
|
||||
<BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h>
|
||||
@@ -2387,7 +2387,7 @@
|
||||
"irrBulletCompileConfig.h"
|
||||
"irrBulletWorld.h"
|
||||
|
||||
1760243468 source:/home/n00b/Projects/irrBullet/src/irrBulletGImpactMeshShape.cpp
|
||||
1771492413 source:/home/n00b/Projects/irrBullet/src/irrBulletGImpactMeshShape.cpp
|
||||
<btBulletDynamicsCommon.h>
|
||||
<btBulletCollisionCommon.h>
|
||||
<BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h>
|
||||
@@ -2533,7 +2533,7 @@
|
||||
1758412944 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_physics3D_base.h
|
||||
"rc_gfx_core.h"
|
||||
|
||||
1771135335 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_base_actor.h
|
||||
1771579368 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_base_actor.h
|
||||
"ProjectiveTextures.h"
|
||||
"rc_matrix.h"
|
||||
|
||||
@@ -2550,12 +2550,14 @@
|
||||
|
||||
1758412944 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_particles.h
|
||||
|
||||
1764140917 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_scene.h
|
||||
1771479046 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_scene.h
|
||||
"rc_gfx_core.h"
|
||||
"rc_base_actor.h"
|
||||
"rc_constraint.h"
|
||||
|
||||
1758412944 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h
|
||||
|
||||
1769130046 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h
|
||||
1771572803 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h
|
||||
|
||||
1650940764 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
|
||||
"BulletCollision/CollisionShapes/btTriangleCallback.h"
|
||||
@@ -2749,7 +2751,7 @@
|
||||
<sstream>
|
||||
"rc_steam.h"
|
||||
|
||||
1764140917 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_render_control.h
|
||||
1771572779 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_render_control.h
|
||||
<irrlicht.h>
|
||||
"rc_gfx_core.h"
|
||||
"rc_post_fx.h"
|
||||
@@ -2759,11 +2761,11 @@
|
||||
<cstdlib>
|
||||
"rc_gfx_core.h"
|
||||
|
||||
1771135300 /home/n00b/Projects/irrBullet/include/irrBulletCompoundShape.h
|
||||
1771366010 /home/n00b/Projects/irrBullet/include/irrBulletCompoundShape.h
|
||||
"irrBulletCollisionShape.h"
|
||||
<vector>
|
||||
|
||||
1771135300 source:/home/n00b/Projects/irrBullet/src/irrBulletCompoundShape.cpp
|
||||
1771391831 source:/home/n00b/Projects/irrBullet/src/irrBulletCompoundShape.cpp
|
||||
<ISceneNode.h>
|
||||
"btBulletDynamicsCommon.h"
|
||||
"btBulletCollisionCommon.h"
|
||||
|
||||
Reference in New Issue
Block a user