Commons.cpp File Reference

#include <PVLE/3D/Commons.h>
#include <PVLE/3D/Utility3D.h>
#include <osg/Vec4>
#include <osg/Geode>
#include <osg/Drawable>
#include <osg/Texture2D>
#include <osg/Image>
#include <osg/ShapeDrawable>
#include <osg/CullFace>
#include <osg/MatrixTransform>
#include <osg/Projection>
#include <osg/Material>
#include <osgDB/ReadFile>
#include <osg/Geometry>
#include <osg/LineWidth>
#include <osgText/Text>
#include <osg/BlendFunc>
#include <osg/Depth>
#include <boost/cast.hpp>
#include <PVLE/3D/MoveWithEyePointTransform.h>
#include <PVLE/Util/TracedException.h>
#include <PVLE/Util/Util.h>
#include <PVLE/Util/Rand.h>

Include dependency graph for 3D/Commons.cpp:

Go to the source code of this file.

Functions

osg::Transform * createSkySphere (const boost::filesystem::path &texturePath, float detailRatio)
 Creates a sky sphere at an "infinite distance" (actually use a MoveWithEyePointTransform to do as-if).
osg::Geometry * createAxisDrawable (const osg::Vec3 &corner, const osg::Vec3 &xdir, const osg::Vec3 &ydir, const osg::Vec3 &zdir)
 Creates a drawable that represent 3 axis.
osg::Geometry * createSegmentDrawable (const osg::Vec3 &p1, const osg::Vec3 &p2, float width, const osg::Vec4 &color1, const osg::Vec4 &color2)
 Creates a segment drawable.
osg::Geode * createAxis (float axisSize)
 Convinience function that creates a node with 3 axis.
osg::Geode * createSegment (const osg::Vec3 &p1, const osg::Vec3 &p2, float width, const osg::Vec4 &color1, const osg::Vec4 &color2)
 Convinience function that creates a segment.
osg::Geometry * createSquare (const osg::Vec3 &corner, const osg::Vec3 &width, const osg::Vec3 &height, osg::Image *image, UINT nbTextureCoords, bool invertYTexCoords)
 Creates a quad at a given position.
void updateSquare (osg::Geometry *pGeometry, const osg::Vec3 &width, const osg::Vec3 &height)
 Updates a quad created by createSquare() with new dimensions, generally to use it as a progress bar.
void updateSquare (osg::Geometry *pGeometry, const osg::Vec3 &corner, const osg::Vec3 &width, const osg::Vec3 &height)
 Redifines a quad created by createSquare() with new dimensions and position, generally to use it as a progress bar.
std::pair< osg::Projection
*, osg::MatrixTransform * > 
create2DProjection (const osg::Matrix &orthoProjectionMatrix)
 Creates a 2D projection, return that projection node and its first children (a MatrixTransform to which nodes can be added).
osg::Projection * encapsulateIn2DProjection (osg::Node *pNode, const osg::Matrix &orthoProjectionMatrix)
 Sets the given node to be child of a 2D projection, and return that projection node.
void setHudStatset (osg::StateSet *pStateset)
void setColor (osg::StateSet *pStateSet, const osg::Vec4 &color)
 Convinience function for setting diffuse and ambiant parameters. Creates a material and add it to the given stateset, or modifies the existing one.
void setColor (osg::Node *pNode, const osg::Vec4 &color)
 Convinience function for setting diffuse and ambiant parameters. Creates a material and add it to the stateset of the node, or modifies the existing one.
osg::MatrixTransform * createShapeGeode (osg::Shape *shape, float tesselationDetailRatio)
 Creates a geode with a ShapeDrawable encapsulated in a MatrixTransform.
osg::MatrixTransform * createShapeGeodeBox (const osg::Vec3 &size)
 Creates a box (geode with a ShapeDrawable) encapsulated in a MatrixTransform.
osg::MatrixTransform * createShapeGeodeSphere (const float radius, float tesselationDetailRatio)
 Creates a sphere (geode with a ShapeDrawable) encapsulated in a MatrixTransform.
osg::MatrixTransform * createShapeGeodeCapsule (const float radius, const float length, float tesselationDetailRatio)
 Creates a capsule (geode with a ShapeDrawable) encapsulated in a MatrixTransform.
osg::MatrixTransform * createShapeGeodeCylinder (const float radius, const float length, float tesselationDetailRatio)
 Creates a cylinder (geode with a ShapeDrawable) encapsulated in a MatrixTransform.
osg::HeightField * readHeightMap (const boost::filesystem::path &path, const float vScale, const float hScale)
 Loads a heightmap (grey scale) into an osg::HeightField centered in (0,0,0).
osgText::Text * createText (osgText::Font *pFont, float height, const osg::Vec3f &position, const osg::Vec4f &color)
 Convinience function that create an osgText::Text and then calls appropriate methods on it.
osg::Geode * createCloud (const boost::filesystem::path &imagePath, unsigned int numSprites)
 Creates a random cloud made of sprites.
osg::Geode * createCloud (const CloudParams &p)
 Creates a cloud made of sprites, from given parameters.


Function Documentation

std::pair<osg::Projection*, osg::MatrixTransform*> create2DProjection ( const osg::Matrix &  orthoProjectionMatrix  ) 

Creates a 2D projection, return that projection node and its first children (a MatrixTransform to which nodes can be added).

Definition at line 235 of file 3D/Commons.cpp.

Referenced by encapsulateIn2DProjection(), and Hud::Hud().

osg::Geode* createAxis ( float  axisSize  ) 

Convinience function that creates a node with 3 axis.

Definition at line 154 of file 3D/Commons.cpp.

References createAxisDrawable().

osg::Geometry* createAxisDrawable ( const osg::Vec3 &  corner,
const osg::Vec3 &  xdir,
const osg::Vec3 &  ydir,
const osg::Vec3 &  zdir 
)

Creates a drawable that represent 3 axis.

Definition at line 94 of file 3D/Commons.cpp.

Referenced by createAxis().

osg::Geode* createCloud ( const CloudParams p  ) 

osg::Geode* createCloud ( const boost::filesystem::path &  imagePath,
unsigned int  numSprites 
)

Creates a random cloud made of sprites.

Definition at line 357 of file 3D/Commons.cpp.

References createCloud(), CloudParams::imagePath, and CloudParams::numSprites.

osg::Geode* createSegment ( const osg::Vec3 &  p1,
const osg::Vec3 &  p2,
float  width,
const osg::Vec4 &  color1,
const osg::Vec4 &  color2 
)

Convinience function that creates a segment.

Definition at line 160 of file 3D/Commons.cpp.

References createSegmentDrawable().

osg::Geometry* createSegmentDrawable ( const osg::Vec3 &  p1,
const osg::Vec3 &  p2,
float  width,
const osg::Vec4 &  color1,
const osg::Vec4 &  color2 
)

Creates a segment drawable.

Definition at line 120 of file 3D/Commons.cpp.

Referenced by createSegment().

osg::MatrixTransform* createShapeGeode ( osg::Shape *  shape,
float  tesselationDetailRatio 
)

Creates a geode with a ShapeDrawable encapsulated in a MatrixTransform.

Definition at line 282 of file 3D/Commons.cpp.

Referenced by createShapeGeodeBox(), createShapeGeodeCapsule(), createShapeGeodeCylinder(), and createShapeGeodeSphere().

osg::MatrixTransform* createShapeGeodeBox ( const osg::Vec3 &  size  ) 

Creates a box (geode with a ShapeDrawable) encapsulated in a MatrixTransform.

Definition at line 296 of file 3D/Commons.cpp.

References createShapeGeode().

Referenced by createBox3DPhy(), createFixedBox3DPhy(), and C3DPhy::createPhysicsDebugView().

osg::MatrixTransform* createShapeGeodeCapsule ( const float  radius,
const float  length,
float  tesselationDetailRatio 
)

Creates a capsule (geode with a ShapeDrawable) encapsulated in a MatrixTransform.

Definition at line 298 of file 3D/Commons.cpp.

References createShapeGeode().

Referenced by createCapsule3DPhy(), createFixedCapsule3DPhy(), and C3DPhy::createPhysicsDebugView().

osg::MatrixTransform* createShapeGeodeCylinder ( const float  radius,
const float  length,
float  tesselationDetailRatio 
)

Creates a cylinder (geode with a ShapeDrawable) encapsulated in a MatrixTransform.

Definition at line 299 of file 3D/Commons.cpp.

References createShapeGeode().

Referenced by createCylinder3DPhy(), createFixedCylinder3DPhy(), and C3DPhy::createPhysicsDebugView().

osg::MatrixTransform* createShapeGeodeSphere ( const float  radius,
float  tesselationDetailRatio 
)

Creates a sphere (geode with a ShapeDrawable) encapsulated in a MatrixTransform.

Definition at line 297 of file 3D/Commons.cpp.

References createShapeGeode().

Referenced by createFixedSphere3DPhy(), C3DPhy::createPhysicsDebugView(), createSphere3DPhy(), and Explosion::init().

osg::Transform* createSkySphere ( const boost::filesystem::path &  texturePath,
float  detailRatio = 0.5f 
)

Creates a sky sphere at an "infinite distance" (actually use a MoveWithEyePointTransform to do as-if).

Parameters:
texturePath Path of the texture used.
detailRatio Same as osg::TessellationHints::setDetailRatio(float).
Returns:
The transformation matrix on top of the sky sphere.

Definition at line 59 of file 3D/Commons.cpp.

References osgDB::readImageFile().

osg::Geometry* createSquare ( const osg::Vec3 &  corner,
const osg::Vec3 &  width,
const osg::Vec3 &  height,
osg::Image *  image = NULL,
unsigned int  nbTextureCoords = 1,
bool  invertYTexCoords = false 
)

Creates a quad at a given position.

Similar to osg::createTexturedQuadGeometry().

Definition at line 166 of file 3D/Commons.cpp.

Referenced by createCloud(), and createSquareFor2D().

osgText::Text* createText ( osgText::Font *  pFont,
float  height,
const osg::Vec3f &  position,
const osg::Vec4f &  color 
)

Convinience function that create an osgText::Text and then calls appropriate methods on it.

Definition at line 329 of file 3D/Commons.cpp.

osg::Projection* encapsulateIn2DProjection ( osg::Node *  pNode,
const osg::Matrix &  orthoProjectionMatrix 
)

Sets the given node to be child of a 2D projection, and return that projection node.

Definition at line 248 of file 3D/Commons.cpp.

References create2DProjection().

osg::HeightField* readHeightMap ( const boost::filesystem::path &  path,
const float  vScale = 1.f,
const float  hScale = 3000.f 
)

Loads a heightmap (grey scale) into an osg::HeightField centered in (0,0,0).

Parameters:
path Path for the bitmap
vScale Vertical (height) scale.
hScale Horizontal scale.

Definition at line 302 of file 3D/Commons.cpp.

References osgDB::readImageFile(), THROW_TRACED_EXCEPTION, and THROW_TRACED_FMT_EXCEPTION.

void setColor ( osg::Node *  pNode,
const osg::Vec4 &  color 
)

Convinience function for setting diffuse and ambiant parameters. Creates a material and add it to the stateset of the node, or modifies the existing one.

Definition at line 275 of file 3D/Commons.cpp.

References ASSERT, and setColor().

void setColor ( osg::StateSet *  pStateSet,
const osg::Vec4 &  color 
)

Convinience function for setting diffuse and ambiant parameters. Creates a material and add it to the given stateset, or modifies the existing one.

Definition at line 265 of file 3D/Commons.cpp.

References ASSERT.

Referenced by PhysicsDebugUpdateCB::operator()(), and setColor().

void setHudStatset ( osg::StateSet *  pStateset  ) 

Definition at line 255 of file 3D/Commons.cpp.

Referenced by Hud::Hud().

void updateSquare ( osg::Geometry *  pGeometry,
const osg::Vec3 &  corner,
const osg::Vec3 &  width,
const osg::Vec3 &  height 
)

Redifines a quad created by createSquare() with new dimensions and position, generally to use it as a progress bar.

Warning:
Think about calling setUseDisplayList(false) after createSquare().

Definition at line 224 of file 3D/Commons.cpp.

void updateSquare ( osg::Geometry *  pGeometry,
const osg::Vec3 &  width,
const osg::Vec3 &  height 
)

Updates a quad created by createSquare() with new dimensions, generally to use it as a progress bar.

Warning:
Think about calling setUseDisplayList(false) after createSquare().

Definition at line 218 of file 3D/Commons.cpp.

References updateSquare().

Referenced by updateSquare(), and updateSquareFor2D().


Generated on Sun Jan 17 11:38:56 2010 for PVLE (Pro-Vocation Light Engine) by  doxygen 1.5.9