VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
makVrv::DtCellIndirectGeo Class Reference

Helper for managing indirect geometry, its intersection group and registrar corresponding to a 'tile node' (gs cell or gt cell) DtCellToIndirectGeoMap in turn manages a map of feature tile nodes (for a layer) to a corresponding instance of DtCellIndirectGeo.

Inheritance diagram for makVrv::DtCellIndirectGeo:
Inheritance graph
[legend]

Public Member Functions

 DtCellIndirectGeo (DtDe &de, const DtCullShaderConfig &cullShaderConfig, bool includeIntersectionGeoInNodePath, bool terrainPatch, const DtIndirectFadeParameters &fadeParameters)
 
virtual ~DtCellIndirectGeo ()
 
virtual void setModelsContainer (DtIndirectModelsContainer *modelsContainer, bool ownsModelsContainer)
 
virtual void setParent (const osg::Group *parent)
 
virtual const osg::BoundingBoxd & boundingBox (void) const
 
virtual const DtIndirectGeometryindirectGeometry (void) const
 
virtual DtIndirectGeometryindirectGeometry (void)
 
virtual osg::Group * indirectIntersectionGroup ()
 
virtual int addInstance (const DtCellIndirectGeoInstance &cellIndirectGeoInstance)
 
virtual const
std::unordered_map< int, int > & 
modelIdToNumInstances (void) const
 

Protected Member Functions

virtual void expandBoundingBox (const osg::Node *modelNode, const osg::Matrixd &instanceXForm)
 

Protected Attributes

DtIndirectModelsContainermyModelsContainer
 
bool myOwnsModelsContainer
 
osg::ref_ptr< DtIndirectGeometrymyIndirectGeometry
 
osg::ref_ptr< osg::Group > myIndirectGeoIntersectionGroup
 
osg::BoundingBoxd myBoundingBox
 
Threading::Mutex myMutableBoundingBoxMutex
 
DtDemyDe
 
bool myFirstInstance
 
bool myIncludeIntersectionGeoInNodePath
 
std::unordered_map< int, intmyModelIdToNumInstances
 

Private Member Functions

 DtCellIndirectGeo ()=delete
 
 DtCellIndirectGeo (const DtCellIndirectGeo &other)=delete
 
DtCellIndirectGeooperator= (const DtCellIndirectGeo &other)=delete
 

Constructor & Destructor Documentation

makVrv::DtCellIndirectGeo::DtCellIndirectGeo ( DtDe de,
const DtCullShaderConfig cullShaderConfig,
bool  includeIntersectionGeoInNodePath,
bool  terrainPatch,
const DtIndirectFadeParameters fadeParameters 
)

CTOR.

virtual makVrv::DtCellIndirectGeo::~DtCellIndirectGeo ( )
virtual

DTOR.

makVrv::DtCellIndirectGeo::DtCellIndirectGeo ( )
privatedelete

default constructor not implemented

makVrv::DtCellIndirectGeo::DtCellIndirectGeo ( const DtCellIndirectGeo other)
privatedelete

Copy Constructor not implemented – Copy Not Allowed.

Member Function Documentation

DtCellIndirectGeo& makVrv::DtCellIndirectGeo::operator= ( const DtCellIndirectGeo other)
privatedelete

Assignment Operator Not implemented – Assignment Not Allowed.

virtual void makVrv::DtCellIndirectGeo::setModelsContainer ( DtIndirectModelsContainer modelsContainer,
bool  ownsModelsContainer 
)
virtual

set the models container.

Parameters
ownsModelsContainerwhether cell owns the container (and hence should delete on its own destruction. Essentially a value of true transfers ownership to the cell
virtual void makVrv::DtCellIndirectGeo::setParent ( const osg::Group *  parent)
virtual

Sets up the parent of the indirect geometry which this manages.

virtual const osg::BoundingBoxd& makVrv::DtCellIndirectGeo::boundingBox ( void  ) const
virtual

An indirect geometry doesn't know how to calculate bounding box since this is related to the instances as well as the osg models (that indirect geometry knows nothing about This class computes it for it, and sets itself up as the compute bound call back for the indirect geometry.

virtual const DtIndirectGeometry* makVrv::DtCellIndirectGeo::indirectGeometry ( void  ) const
virtual

internal. Access the internally held indirect geometry

virtual DtIndirectGeometry* makVrv::DtCellIndirectGeo::indirectGeometry ( void  )
virtual

internal. Access the internally held indirect geometry

virtual osg::Group* makVrv::DtCellIndirectGeo::indirectIntersectionGroup ( )
virtual

get the intersection group for this cell

virtual int makVrv::DtCellIndirectGeo::addInstance ( const DtCellIndirectGeoInstance cellIndirectGeoInstance)
virtual

internal method to add intersection geometry for an instance of the modelNode, with transform as instanceXForm. returns the instance id in the indirect geometry for the added instance.

virtual const std::unordered_map<int, int>& makVrv::DtCellIndirectGeo::modelIdToNumInstances ( void  ) const
virtual

get the map of model ids to num of instances

virtual void makVrv::DtCellIndirectGeo::expandBoundingBox ( const osg::Node *  modelNode,
const osg::Matrixd &  instanceXForm 
)
protectedvirtual

internal method to actually expand the bounding box based on the instance xform as well as the model node (and hence the model bbox in question)

Member Data Documentation

DtIndirectModelsContainer* makVrv::DtCellIndirectGeo::myModelsContainer
protected
bool makVrv::DtCellIndirectGeo::myOwnsModelsContainer
protected
osg::ref_ptr<DtIndirectGeometry> makVrv::DtCellIndirectGeo::myIndirectGeometry
protected
osg::ref_ptr<osg::Group> makVrv::DtCellIndirectGeo::myIndirectGeoIntersectionGroup
protected
osg::BoundingBoxd makVrv::DtCellIndirectGeo::myBoundingBox
protected

bounding box computation management

Threading::Mutex makVrv::DtCellIndirectGeo::myMutableBoundingBoxMutex
mutableprotected
DtDe& makVrv::DtCellIndirectGeo::myDe
protected
bool makVrv::DtCellIndirectGeo::myFirstInstance
protected
bool makVrv::DtCellIndirectGeo::myIncludeIntersectionGeoInNodePath
protected
std::unordered_map<int, int> makVrv::DtCellIndirectGeo::myModelIdToNumInstances
protected

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

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)