Added override radius to cone, capsule, and sphere shapes

This commit is contained in:
n00b87
2025-10-12 00:48:22 -05:00
parent 8f7fd7d453
commit af895b3f11

View File

@@ -17,7 +17,7 @@ void setSolidProperties(int actor)
} }
} }
void rc_setActorCollisionShape(int actor_id, int shape_type, double mass, double radius=-1) void rc_setActorCollisionShape(int actor_id, int shape_type, double mass, double radius=-1.0)
{ {
//std::cout << "Start ColShape" << std::endl; //std::cout << "Start ColShape" << std::endl;
if(rc_actor[actor_id].physics.rigid_body) if(rc_actor[actor_id].physics.rigid_body)
@@ -53,7 +53,7 @@ void rc_setActorCollisionShape(int actor_id, int shape_type, double mass, double
case RC_NODE_SHAPE_TYPE_SPHERE: case RC_NODE_SHAPE_TYPE_SPHERE:
{ {
rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_SPHERE; rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_SPHERE;
ISphereShape* shape = new ISphereShape(rc_actor[actor_id].mesh_node, mass, false); ISphereShape* shape = new ISphereShape(rc_actor[actor_id].mesh_node, mass, false, radius);
rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape); rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
@@ -81,26 +81,26 @@ void rc_setActorCollisionShape(int actor_id, int shape_type, double mass, double
if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH) if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
{ {
irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node; irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
shape = new ICapsuleShape(node, mass, false); shape = new ICapsuleShape(node, mass, false, radius);
} }
else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_STMESH) else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_STMESH)
{ {
irr::scene::IMeshSceneNode* node = (irr::scene::IMeshSceneNode*)rc_actor[actor_id].mesh_node; irr::scene::IMeshSceneNode* node = (irr::scene::IMeshSceneNode*)rc_actor[actor_id].mesh_node;
shape = new ICapsuleShape(node, mass, false); shape = new ICapsuleShape(node, mass, false, radius);
} }
else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH) else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
{ {
irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node; irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
shape = new ICapsuleShape(node, mass, false); shape = new ICapsuleShape(node, mass, false, radius);
} }
else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN) else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
{ {
irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node; irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
shape = new ICapsuleShape(node, mass, false); shape = new ICapsuleShape(node, mass, false, radius);
} }
else else
{ {
shape = new ICapsuleShape(rc_actor[actor_id].mesh_node, mass, false); shape = new ICapsuleShape(rc_actor[actor_id].mesh_node, mass, false, radius);
} }
rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape); rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
@@ -112,7 +112,7 @@ void rc_setActorCollisionShape(int actor_id, int shape_type, double mass, double
case RC_NODE_SHAPE_TYPE_CONE: case RC_NODE_SHAPE_TYPE_CONE:
{ {
rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CONE; rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CONE;
IConeShape* shape = new IConeShape(rc_actor[actor_id].mesh_node, mass, false); IConeShape* shape = new IConeShape(rc_actor[actor_id].mesh_node, mass, false, radius);
rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape); rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);