getProfiler().add(EPID_SM_RENDER_SHADOWS, L"shadows", L"Irrlicht scene");\r
getProfiler().add(EPID_SM_RENDER_TRANSPARENT, L"transp.nodes", L"Irrlicht scene");\r
getProfiler().add(EPID_SM_RENDER_EFFECT, L"effectnodes", L"Irrlicht scene");\r
+ getProfiler().add(EPID_SM_RENDER_GUI_NODES, L"guinodes", L"Irrlicht scene");\r
getProfiler().add(EPID_SM_REGISTER, L"reg.render.node", L"Irrlicht scene");\r
}\r
)\r
}\r
break;\r
\r
+ case ESNRP_GUI:\r
+ if (!isCulled(node))\r
+ {\r
+ GuiNodeList.push_back(node);\r
+ taken = 1;\r
+ }\r
+\r
case ESNRP_NONE: // ignore this one\r
break;\r
}\r
TransparentNodeList.clear();\r
TransparentEffectNodeList.clear();\r
ShadowNodeList.clear();\r
+ GuiNodeList.clear();\r
}\r
\r
//! This method is called just before the rendering process of the whole scene.\r
TransparentEffectNodeList.set_used(0);\r
}\r
\r
+ // render custom gui nodes\r
+ {\r
+ IRR_PROFILE(CProfileScope psEffect(EPID_SM_RENDER_GUI_NODES);)\r
+ CurrentRenderPass = ESNRP_GUI;\r
+ Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
+\r
+ if (LightManager)\r
+ {\r
+ LightManager->OnRenderPassPreRender(CurrentRenderPass);\r
+\r
+ for (i=0; i<GuiNodeList.size(); ++i)\r
+ {\r
+ ISceneNode* node = GuiNodeList[i];\r
+ LightManager->OnNodePreRender(node);\r
+ node->render();\r
+ LightManager->OnNodePostRender(node);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (i=0; i<GuiNodeList.size(); ++i)\r
+ GuiNodeList[i]->render();\r
+ }\r
+#ifdef _IRR_SCENEMANAGER_DEBUG\r
+ Parameters->setAttribute("drawn_gui_nodes", (s32) GuiNodeList.size());\r
+#endif\r
+ GuiNodeList.set_used(0);\r
+ }\r
+ \r
+\r
if (LightManager)\r
LightManager->OnPostRender();\r
\r