dart
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
dart::gui::osg::WorldNode Class Reference

WorldNode class encapsulates a World to be displayed in OpenSceneGraph. More...

#include <WorldNode.hpp>

Inheritance diagram for dart::gui::osg::WorldNode:
Inheritance graph
[legend]
Collaboration diagram for dart::gui::osg::WorldNode:
Collaboration graph
[legend]

Public Member Functions

 WorldNode (std::shared_ptr< dart::simulation::World > world=nullptr, ::osg::ref_ptr< osgShadow::ShadowTechnique > shadowTechnique=nullptr)
 Default constructor Shadows are disabled by default.
 
void setWorld (std::shared_ptr< dart::simulation::World > newWorld)
 Set the World that this WorldNode is associated with.
 
std::shared_ptr< dart::simulation::WorldgetWorld () const
 Get the World that this WorldNode is associated with.
 
virtual void refresh ()
 This function is called at the beginning of each rendering cycle. More...
 
virtual void customPreRefresh ()
 If update() is not overloaded, this function will be called at the beginning of each rendering cycle. More...
 
virtual void customPostRefresh ()
 If update() is not overloaded, this function will be called at the end of each rendering cycle. More...
 
virtual void customPreStep ()
 If update() is not overloaded, this function will be called at the beginning of each simulation step. More...
 
virtual void customPostStep ()
 If update() is not overloaded, this function will be called at the end of each simulation step. More...
 
bool isSimulating () const
 Returns true iff the WorldNode is stepping between render cycles.
 
void simulate (bool on)
 Pass in true to take steps between render cycles; pass in false to turn off steps between render cycles. More...
 
void setNumStepsPerCycle (std::size_t steps)
 Set the number of steps to take between each render cycle (only if the simulation is not paused)
 
std::size_t getNumStepsPerCycle () const
 Get the number of steps that will be taken between each render cycle (only if the simulation is not paused)
 
bool isShadowed () const
 Get whether the WorldNode is casting shadows.
 
void setShadowTechnique (::osg::ref_ptr< osgShadow::ShadowTechnique > shadowTechnique=nullptr)
 Set the ShadowTechnique If you wish to disable shadows, pass a nullptr.
 
::osg::ref_ptr< osgShadow::ShadowTechnique > getShadowTechnique () const
 Get the current ShadowTechnique nullptr is there are no shadows.
 
static ::osg::ref_ptr< osgShadow::ShadowTechnique > createDefaultShadowTechnique (const Viewer *viewer)
 Helper function to create a default ShadowTechnique given a Viewer the default ShadowTechnique is ShadowMap.
 
virtual ~WorldNode ()
 Destructor.
 

Protected Types

using NodeMap = std::unordered_map< dart::dynamics::Frame *, ::osg::ref_ptr< ShapeFrameNode > >
 

Protected Member Functions

virtual void setupViewer ()
 Called when this world gets added to an dart::gui::osg::Viewer. More...
 
void clearChildUtilizationFlags ()
 Clear the utilization flags of each child node.
 
void clearUnusedNodes ()
 Clear any nodes whose utilization flags were not triggered on this render cycle.
 
void refreshSkeletons ()
 Refresh all the Skeleton rendering data.
 
void refreshSimpleFrames ()
 Refresh all the custom Frame rendering data.
 
void refreshBaseFrameNode (dart::dynamics::Frame *frame)
 
void refreshShapeFrameNode (dart::dynamics::Frame *frame)
 

Protected Attributes

NodeMap mFrameToNode
 Map from Frame pointers to FrameNode pointers.
 
std::shared_ptr< dart::simulation::WorldmWorld
 The World that this WorldNode is associated with.
 
bool mSimulating
 True iff simulation is active.
 
std::size_t mNumStepsPerCycle
 Number of steps to take between rendering cycles.
 
ViewermViewer
 Viewer that this WorldNode is inside of.
 
::osg::ref_ptr<::osg::Group > mNormalGroup
 OSG group for non-shadowed objects.
 
::osg::ref_ptr<::osgShadow::ShadowedScene > mShadowedGroup
 OSG group for shadowed objects.
 
bool mShadowed
 Whether the shadows are enabled.
 

Friends

class Viewer
 

Detailed Description

WorldNode class encapsulates a World to be displayed in OpenSceneGraph.

Member Function Documentation

◆ customPostRefresh()

void dart::gui::osg::WorldNode::customPostRefresh ( )
virtual

If update() is not overloaded, this function will be called at the end of each rendering cycle.

This function can be overloaded to customize the behavior of each update. The default behavior is to do nothing, so overloading this function will not interfere with the usual update() operation.

Reimplemented in CustomWorldNode, CustomWorldNode, dart::python::PyWorldNode, dart::python::PyRealTimeWorldNodeNode, CustomWorldNode, and CustomWorldNode.

◆ customPostStep()

void dart::gui::osg::WorldNode::customPostStep ( )
virtual

If update() is not overloaded, this function will be called at the end of each simulation step.

This function can be overloaded to customize the behavior of each step. The default behavior is to do nothing, so overloading this function will not interfere with the usual update() operation. This will not get called if the simulation is paused.

Reimplemented in CustomWorldNode, CustomWorldNode, dart::python::PyWorldNode, dart::python::PyRealTimeWorldNodeNode, RecordingWorld, CustomWorldNode, and CustomWorldNode.

◆ customPreRefresh()

void dart::gui::osg::WorldNode::customPreRefresh ( )
virtual

If update() is not overloaded, this function will be called at the beginning of each rendering cycle.

This function can be overloaded to customize the behavior of each update. The default behavior is to do nothing, so overloading this function will not interfere with the usual update() operation.

Reimplemented in TeleoperationWorld, TeleoperationWorld, CustomWorldNode, TinkertoyWorldNode, CustomWorldNode, dart::python::PyWorldNode, dart::python::PyRealTimeWorldNodeNode, CustomWorldNode, CustomWorldNode, and WamWorld.

◆ customPreStep()

void dart::gui::osg::WorldNode::customPreStep ( )
virtual

If update() is not overloaded, this function will be called at the beginning of each simulation step.

This function can be overloaded to customize the behavior of each step. The default behavior is to do nothing, so overloading this function will not interfere with the usual update() operation. This will not get called if the simulation is paused.

Reimplemented in CustomWorldNode, TinkertoyWorldNode, HeightmapWorld, CustomWorldNode, PointCloudWorld, OperationalSpaceControlWorld, dart::python::PyWorldNode, dart::python::PyRealTimeWorldNodeNode, CustomWorldNode, CustomWorldNode, FetchWorldNode, and AtlasSimbiconWorldNode.

◆ refresh()

void dart::gui::osg::WorldNode::refresh ( )
virtual

This function is called at the beginning of each rendering cycle.

It updates the tree of Frames and Entities that need to be rendered. It may also take a simulation step if the simulation is not paused.

If you want to customize what happens at the beginning of each rendering cycle, you can either overload this function, or you can overload customUpdate(). This update() function will automatically call customUpdate() at the beginning of each rendering cycle. By default, customUpdate() does nothing.

Reimplemented in dart::gui::osg::RealTimeWorldNode, dart::python::PyWorldNode, and dart::python::PyRealTimeWorldNodeNode.

◆ setupViewer()

void dart::gui::osg::WorldNode::setupViewer ( )
protectedvirtual

Called when this world gets added to an dart::gui::osg::Viewer.

Override this function to customize the way your WorldNode starts up in an dart::gui::osg::Viewer. Default behavior does nothing.

Reimplemented in TinkertoyWorldNode, and OperationalSpaceControlWorld.

◆ simulate()

void dart::gui::osg::WorldNode::simulate ( bool  on)

Pass in true to take steps between render cycles; pass in false to turn off steps between render cycles.


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