26#include <osg/Referenced>
28#include <osg/Texture2D>
29#include <osg/MatrixTransform>
30#include <osg/Projection>
31#include <osg/StateSet>
32#include <osg/PositionAttitudeTransform>
34#include <osg/Material>
35#include <osgShadow/ShadowedScene>
36#include <osgShadow/ShadowTechnique>
37#include <osg/LightSource>
38#include <osg/Geometry>
72 SceneDecorator(
int windowSizeX,
int windowSizeY,
int enabledLights = LIGHT0 | LIGHT1 );
120 bool setLogoFile(
const std::string& filename,
float density = 1.0);
169 osg::MatrixTransform*
getHud() {
return m_hudRoot.get(); }
172 virtual bool insertChild(
unsigned int index, osg::Node *child ) {
return m_currentRoot->insertChild(index, child); }
173 virtual bool addChild(osg::Node *child) {
return m_currentRoot->addChild(child); }
174 inline bool removeChild( osg::Node *child ) {
return m_currentRoot->removeChild(child); }
175 inline bool removeChild(
unsigned int pos,
unsigned int numChildrenToRemove=1 ) {
return m_currentRoot->removeChild(pos, numChildrenToRemove); }
176 virtual bool replaceChild( osg::Node *origChild, osg::Node* newChild ) {
return m_currentRoot->replaceChild(origChild, newChild); }
177 virtual bool setChild(
unsigned int i, osg::Node* node ) {
return m_currentRoot->setChild(i, node); }
178 virtual bool removeChildren(
unsigned int pos,
unsigned int numChildrenToRemove) {
return m_currentRoot->removeChildren(pos, numChildrenToRemove); }
218 ALL = LIGHT0 | LIGHT1 | LIGHT2
310 void setLogo(osg::Texture2D* logo,
float density = 1.0);
382 bool m_calculateLightPosition[3];
Decorates a scene with a specific AGX Rendering Style.
float m_maximumLogoDimensionY
osg::Group * getNonShadowedScene() const
void setEnableRenderedCursor(bool enable)
Enable/disable the mouse cursor.
osg::ref_ptr< osg::Node > m_cursorTransform
LogoLocation getLogoLocation() const
void setBackgroundColor(const agx::Vec4f &colorUL, const agx::Vec4f &colorUR, const agx::Vec4f &colorLL, const agx::Vec4f &colorLR)
Set a gradient four color background (each corner) colorUL - Upper left color colorUR - Upper right c...
bool getEnable() const
Return true if AGX rendering style is enabled.
osg::ref_ptr< osg::Switch > m_logoSwitch
osg::ref_ptr< osg::PositionAttitudeTransform > m_logoTransform
void updateWindowSize(int sizeX, int sizeY)
Updates information about the window size in x and y (for logo scaling).
osg::observer_ptr< osg::Geometry > m_backgroundQuad
void setEnableCalculateLightPositions(Lights l, bool f)
float m_maximumLogoDimensionX
void setBackgroundColor(agx::Vec3 upper, agx::Vec3 lower)
Set a gradient two color background.
static const osg::Material * getDefaultDecoratorMaterial()
bool isEnabled() const
Return true if AGX rendering style is enabled.
void setLogoPosition(float x, float y)
Set the position of logo into [x, y] if setLogoLocation(FREE) has been previously called Valid range ...
@ PARALLELLSPLIT_SHADOWMAP
Deprecated.
@ LIGHTSPACEPERSPECTIVE_SHADOWMAP
virtual bool addChild(osg::Node *child)
void setText(int row, const agx::String &text, const agx::Vec4f &color)
void setEnable(bool flag)
Enable/disable AGX rendering style for sub-graph.
void setBackgroundColor(agx::Vec3 colorUL, agx::Vec3 colorUR, agx::Vec3 colorLL, agx::Vec3 colorLR)
Set a gradient four color background (each corner) colorUL - Upper left color colorUR - Upper right c...
void setEnableLights(int lightMask=ALL)
Reset and enable the specified lights.
SceneDecorator(int windowSizeX, int windowSizeY, int enabledLights=LIGHT0|LIGHT1)
Constructor.
void setScreenPixelScale(float scale)
Specify the screen pixel scale (i.e. 2.0 for high DPI and 1.0 for 1:1)
osg::ref_ptr< osg::Group > m_currentRoot
osg::ref_ptr< osgShadow::ShadowTechnique > m_shadowTechnique
agx::Vec2i32 getWindowSize() const
Returns the window size.
ShadowMethod m_shadowMethod
osg::ref_ptr< osg::Switch > m_backgroundRoot
void updateCursorPosition(float x, float y)
void clearText()
Reset all text to empty strings.
void setBackgroundColor(agx::Vec3 color)
Set a uniform background color using color.
osg::ref_ptr< osg::MatrixTransform > m_hudRoot
osg::StateSet * getDecoratorStateSet()
void calculateLightPositions(osg::Node *bound_node=nullptr)
Calculate the positions of the light sources from the bound of either a specified node,...
osg::Texture2D * getLogo()
void setEnableShaderState(bool flag, bool lock=false)
Enable/disable the use of a shader based default render state.
bool getEnableRenderedCursor() const
bool setBaseTexture(const std::string &imagePath)
Specif the path to the base texture on all decorated objects.
bool removeChild(unsigned int pos, unsigned int numChildrenToRemove=1)
osg::ref_ptr< osgShadow::ShadowedScene > m_shadowedScene
static size_t lightToIndex(Lights l)
osg::ref_ptr< osg::StateSet > m_logoStateSet
void setLogo(osg::Texture2D *logo, float density=1.0)
Might want to call updateLogo afterwards.
void setEnableShadows(bool flag)
Enable/disable shadows for the sub-graph.
void calculateLightPositions(const osg::BoundingSphere &boundingSphere)
osg::LightSource * getShadowLightSource()
Return a pointer to the light source used for calculating shadows.
void setText(int row, const agx::String &text)
Print a row of text.
LogoLocation
Specifies the location of the logo.
LogoLocation m_logoLocation
void updateLogo()
Updates the logo scale and position, depending on logo size, and window width and height.
bool m_shaderSupportAvailable
virtual bool insertChild(unsigned int index, osg::Node *child)
virtual bool replaceChild(osg::Node *origChild, osg::Node *newChild)
std::string getFontName() const
Returns the font name.
float getFontSize() const
Returns the font Size.
virtual bool removeChildren(unsigned int pos, unsigned int numChildrenToRemove)
osg::ref_ptr< osg::Group > m_enabledNonShadowRoot
void setFontName(const std::string &fontName)
Sets the font name.
void createDecoratorState()
void setBackgroundColor(const agx::Vec4f &color1, const agx::Vec4f &color2)
Set a gradient two color background.
osg::Vec2 getMaximumLogoDimension()
osg::Group * getShadowedScene() const
agx::Vector< osgText::Text * > m_text
osg::MatrixTransform * getHud()
Return a pointer to the hud group.
const osg::Vec2 & getLogoDimension()
void setMaximumLogoDimension(float x, float y)
Set the maximum logo dimension.
osg::ref_ptr< osg::Projection > m_hudProjection
osg::ref_ptr< osg::Vec3Array > m_backgroundColors
bool setShadowLightSource(Lights l)
Specify which light source is used for calculating shadows.
osg::ref_ptr< osg::Texture2D > m_logoTexture
osg::ref_ptr< osg::Group > m_disabledRoot
void setShadowMethod(ShadowMethod m)
Specify which method is used for generating shadows,.
bool getEnableShaderState() const
osg::ref_ptr< osg::StateSet > m_decoratorStateSet
bool setLogoFile(const std::string &filename, float density=1.0)
Specify a path to the image with the logo and the pixel density (i.e. 2.0 for high DPI and 1....
static osg::Vec2 getDefaultLogoPosition()
agx::Vector< osg::ref_ptr< osg::LightSource > > m_lightSources
virtual bool setChild(unsigned int i, osg::Node *node)
void calculateLightPositions(const osg::BoundingBox &boundingBox)
bool getEnableShadows() const
static osg::ref_ptr< osg::Material > s_decoratorMaterial
void setLogoLocation(LogoLocation l)
Set the position of the logo from a list of predefined positions.
virtual ~SceneDecorator()
bool getEnableCalculateLightPositions(Lights l) const
osg::ref_ptr< osg::Group > m_enabledRoot
osg::ref_ptr< osg::Camera > m_hudCamera
osg::ref_ptr< osg::Group > m_disabledNonShadowRoot
void setEnableLogo(bool flag)
Enable/disable the rendering of the logo.
bool removeChild(osg::Node *child)
osg::ref_ptr< osg::LightSource > m_ShadowlightSource
osg::LightSource * getOSGLight(Lights l)
bool getEnableLogo() const
agxOSG::LightSource getLightSource(Lights l)
Get a wrapper for a LightSource with only AGX types.
void setFontSize(const float &fontSize)
Sets the font Size.
std::string m_baseTexturePath
ShadowMethod getShadowMethod() const
void setBackgroundColor(const agx::Vec4f &color)
Set a uniform background color using color.
A class holding 4 dimensional vectors and providing basic arithmetic.
The agxOSG namespace provides functionality for visualizing AGX simulations with OpenSceneGraph.
Namespace containing classes for handling debug rendering of collision geometries,...