No Matches
Public Member Functions | Private Attributes | List of all members
LODNode Class Reference

manages level-of-detail More...

#include <lod_node.hpp>

Inheritance diagram for LODNode:
Inheritance graph

Public Member Functions

 LODNode (std::string group_name, scene::ISceneNode *parent, scene::ISceneManager *mgr, s32 id=-1)
virtual const core::aabbox3d< f32 > & getBoundingBox () const
 returns the axis aligned bounding box of this node
int getLevel ()
 Returns the level to use, or -1 if the object is too far away.
void updateVisibility (bool *shown=NULL)
void add (int level, scene::ISceneNode *node, bool reparent)
 Adds a node associated with a level of detail.
void autoComputeLevel (float scale)
 This method can be used to automatically compute LoD level.
void forceLevelOfDetail (int n)
 Forces the level of detail to be n.
scene::ISceneNode * getFirstNode ()
 Get the highest level of detail node.
std::vector< scene::ISceneNode * > & getAllNodes ()
virtual void OnAnimate (u32 timeMs)
 OnAnimate() is called just before rendering the whole scene.
virtual void OnRegisterSceneNode ()
virtual void render ()
virtual scene::ESCENE_NODE_TYPE getType () const
const std::string & getGroupName () const

Private Attributes

core::matrix4 RelativeTransformationMatrix
core::aabbox3d< f32 > Box
std::vector< int > m_detail
std::vector< irr::scene::ISceneNode * > m_nodes
std::set< scene::ISceneNode * > m_nodes_set
std::string m_group_name
int m_forced_lod
 The normal level of detail can be overwritten.
std::unique_ptr< int > m_current_level
float m_area
bool m_update_box_every_frame

Detailed Description

manages level-of-detail

Constructor & Destructor Documentation

◆ LODNode()

LODNode::LODNode ( std::string  group_name,
scene::ISceneNode *  parent,
scene::ISceneManager *  mgr,
s32  id = -1 
group_nameOnly useful for getGroupName()

Member Function Documentation

◆ add()

void LODNode::add ( int  level,
scene::ISceneNode *  node,
bool  reparent 

Adds a node associated with a level of detail.

The LOD levels must be added in ascending order.
levelDistance (number of units) from which this level of detail kicks in
nodeThe node to show at this level
reparentIf true, node will be removed from its current parent first

◆ forceLevelOfDetail()

void LODNode::forceLevelOfDetail ( int  n)

Forces the level of detail to be n.

If n>number of levels, the most detailed level is used. This is used to disable LOD when the end camera is activated, since it zooms in to the kart.

◆ OnAnimate()

void LODNode::OnAnimate ( u32  timeMs)

OnAnimate() is called just before rendering the whole scene.

This method will be called once per frame, independent of whether the scene node is visible or not.

Member Data Documentation

◆ m_forced_lod

int LODNode::m_forced_lod

The normal level of detail can be overwritten.

If m_forced_lod is >=0, only this level is be used.

The documentation for this class was generated from the following files: