Fixed: ProjectorActors not rendering

This commit is contained in:
n00b87
2025-11-21 01:00:01 -06:00
parent e0141b11e6
commit 4df735e4f6
6 changed files with 52 additions and 2 deletions

View File

@@ -839,6 +839,8 @@ int rc_createProjectorActor()
rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
rc_projector_actors.push_back(actor_id);
return actor_id;
}
@@ -851,6 +853,18 @@ void rc_deleteActor(int actor_id)
if(!rc_actor[actor_id].mesh_node)
return;
if(rc_actor[actor_id].node_type == RC_NODE_TYPE_PROJECTOR)
{
for(int i = 0; i < rc_projector_actors.size(); i++)
{
if(rc_projector_actors[i] == actor_id)
{
rc_projector_actors.erase(i);
break;
}
}
}
if(rc_actor[actor_id].physics.rigid_body)
rc_physics3D.world->removeCollisionObject(rc_actor[actor_id].physics.rigid_body, false);

View File

@@ -1743,7 +1743,7 @@ struct CircleSettings
f32 radius; // in pixels
f32 radius2;
video::SColor color;
u32 numVertices = 21; // including center
u32 numVertices = 121; // including center
};
void makeCircle(irr::core::array<irr::video::S3DVertex>& vertices, irr::core::array<irr::u16>& indices, const CircleSettings& settings)

View File

@@ -639,7 +639,7 @@ struct rc_scene_node
};
irr::core::array<rc_scene_node> rc_actor;
irr::core::array<int> rc_projector_actors;
irr::core::array<int> rc_transition_actor;

View File

@@ -155,6 +155,23 @@ void rc_pipeline_Render()
SceneManager->drawAll();
for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++)
{
int actor_id = rc_projector_actors[p_actor];
if(actor_id < 0 || actor_id >= rc_actor.size())
continue;
if(!rc_actor[actor_id].mesh_node)
continue;
if(rc_actor[actor_id].mesh_node->isVisible())
{
CProjectiveTextures* pt_node = (CProjectiveTextures*)rc_actor[actor_id].mesh_node;
pt_node->render();
}
}
//render post effects
for(int effect_num = 0; effect_num < rc_canvas[rc_active_canvas].post_effect.size(); effect_num++)
{

View File

@@ -86,6 +86,8 @@ void rc_clearScene()
}
}
rc_projector_actors.clear();
for(int i = 0; i < rc_actor.size(); i++)
{
if(rc_actor[i].mesh_node)

View File

@@ -585,6 +585,23 @@ bool rc_update()
SceneManager->drawAll();
for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++)
{
int actor_id = rc_projector_actors[p_actor];
if(actor_id < 0 || actor_id >= rc_actor.size())
continue;
if(!rc_actor[actor_id].mesh_node)
continue;
if(rc_actor[actor_id].mesh_node->isVisible())
{
CProjectiveTextures* pt_node = (CProjectiveTextures*)rc_actor[actor_id].mesh_node;
pt_node->render();
}
}
//render post effects
for(int effect_num = 0; effect_num < rc_canvas[rc_active_canvas].post_effect.size(); effect_num++)
{