19 #ifndef HEADER_LOD_NODE_HPP
20 #define HEADER_LOD_NODE_HPP
24 #include <ISceneNode.h>
30 namespace scene {
class ISceneManager;
class ISceneNode; }
41 const int ESNT_LOD_NODE = MAKE_IRR_ID(
'l',
'o',
'd',
'n');
52 core::matrix4 RelativeTransformationMatrix;
53 core::aabbox3d<f32> Box;
55 std::vector<int> m_detail;
56 std::vector<irr::scene::ISceneNode*> m_nodes;
58 std::set<scene::ISceneNode*> m_nodes_set;
60 std::string m_group_name;
67 bool m_current_level_dirty;
70 int m_min_switch_distance;
75 bool m_update_box_every_frame;
76 bool m_lod_distances_updated;
79 LODNode(std::string group_name, scene::ISceneNode* parent, scene::ISceneManager* mgr, s32
id=-1);
87 void updateVisibility();
106 void add(
int level, scene::ISceneNode* node,
bool reparent);
111 void autoComputeLevel(
float scale);
113 void forceLevelOfDetail(
int n);
118 if (m_nodes.size() > 0)
return m_nodes[0];
122 std::vector<scene::ISceneNode*>& getAllNodes() {
return m_nodes; }
123 std::set<scene::ISceneNode*>& getNodesSet() {
return m_nodes_set; }
128 virtual void OnAnimate(u32 timeMs);
130 virtual void OnRegisterSceneNode();
133 virtual scene::ESCENE_NODE_TYPE getType()
const {
return (scene::ESCENE_NODE_TYPE)scene::ESNT_LOD_NODE; }
135 const std::string& getGroupName()
const {
return m_group_name; }
manages level-of-detail
Definition: lod_node.hpp:50
virtual const core::aabbox3d< f32 > & getBoundingBox() const
returns the axis aligned bounding box of this node
Definition: lod_node.hpp:83
int m_forced_lod
The normal level of detail can be overwritten.
Definition: lod_node.hpp:64
scene::ISceneNode * getFirstNode()
Get the highest level of detail node.
Definition: lod_node.hpp:116
void render(float elapsed_time, bool is_loading)
called on every frame to trigger the rendering of the GUI.
Definition: engine.cpp:1265