Fixed: ProjectorActors not rendering
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user