14 #include <diguyGraphicsLink.h>
15 #include <diguyGraphicsShape.h>
20 #include <osg/MatrixTransform>
21 #include <osgViewer/View>
23 #include <matrix/vlVector.h>
24 #include <matrix/vlTaitBryan.h>
37 class DtDiGuyOsgGraphicsShaderProgram;
38 class DtDiGuyOsgGraphicsShaderInstance;
39 class DtDiGuyOsgGraphicsState;
40 class DtDiGuyScenario;
41 class DtDiGuyOsgGraphicsShape;
42 class DtDiGuyOsgGraphicsLink;
44 class DtDiGuyOsgRootNode;
45 class DtDiGuyOsgGraphicsInstanceGroup;
46 class DtDiGuyInstanceDrawable;
85 virtual void traverse( osg::NodeVisitor& nv );
94 virtual osg::BoundingSphere
computeBound(
const osg::Node& node )
const;
115 virtual void traverse( osg::NodeVisitor& nv );
197 virtual void build()
override;
201 virtual void unbuild()
override;
205 virtual void update()
override;
diguyGraphicsLink * DtDiGuyOsgGraphicsLink_create_func(void *internal_data)
Creator function registered with DI-Guy to override default diguyGraphicsLink Registered in DtDiGuyFu...
const DtTaitBryan & orientation()
vrv orientation This returns the last-set world orientation of the character. If the character is emb...
Definition: DtDiGuyOsgGraphicsLink.h:152
virtual void detach_from_link()
Build transform node(s) to position/orient shape geometry per DI-Guy state.
virtual void setCollisionUniqueId(DtUniqueID id)
Set a unique ID on this object's collision box for intersection testing.
virtual void setScenario(DtDiGuyScenario *scenario)
set DtDiGuyScenario object associated with this character
void setLastTraversal(unsigned int lastTrav)
used to figure out if the character has been visited yet this frame.
Definition: DtDiGuyOsgGraphicsLink.h:161
virtual void unbuild()
called by link::unbuild()
DtDiGuyOsgGraphicsLink * m_link
Definition: DtDiGuyOsgGraphicsLink.h:169
DtDiGuyScenario * myScenario
Definition: DtDiGuyOsgGraphicsLink.h:175
META_Node(osg, DtCollisionBoxGeode)
OctreeNode class.
Definition: DtOctreeNode.h:20
DtDiGuyOsgRootNode * getRootNode()
returns the dof nod as a custom diguy root node
virtual DtDiGuyScenario * scenario()
get DtDiGuyScenario object associated with this character
virtual osg::Uniform * getOrCreateLinkMatrixUniform()
called by shape code to share uniform data
virtual bool get_allow_motion_offsets() const
Returns whether the use of guides and offset positioning is enabled or disabled.
virtual void setPositionAndOrientation(const DtVector &pos, const DtTaitBryan &orient)
updates myWorldPosition, myWorldOrientation, myQuat, doesn't do anything else
virtual DtOctreeNode< float64 > * octreeNode() const
gets octree node associated with this character
DtTaitBryan myWorldOrientation
Definition: DtDiGuyOsgGraphicsLink.h:178
void add_geode_for_fast_draw(diguyGraphicsShape *shape, osg::Geode *geode, int lod)
caches a drawable for drawing quickly
virtual void unbuild() override
Build transform node(s) to position/orient shape geometry per DI-Guy state overrides diguyGraphicsLin...
float myMinDrawDistance
Definition: DtDiGuyOsgGraphicsLink.h:172
static DtDiGuyInstanceDrawable * get_instancing_drawable()
system that draws all the diguy instances
Custom per character root node that does custom traversals and short circuits osg lod picking...
Definition: DtDiGuyOsgGraphicsLink.h:101
diguyGraphicsShape * m_shape
Definition: DtDiGuyOsgGraphicsLink.h:55
struct for associating a shape with a geode for removal.
Definition: DtDiGuyOsgGraphicsLink.h:50
const DtVector & position()
perf critical position of character This returns the last-set world position of the character...
Definition: DtDiGuyOsgGraphicsLink.h:147
DtDiGuyOsgGraphicsShaderInstance * myShaderInstance
Definition: DtDiGuyOsgGraphicsLink.h:295
static osg::MatrixTransform * get_instancing_attach_node()
root node of diguy instances
osg::ref_ptr< osg::Geode > myCollisionBoxGeode
Definition: DtDiGuyOsgGraphicsLink.h:292
virtual void attach_to_scene() override
Add link's nodes to the scene graph under the DI-Guy root overrides diguyGraphicsLink::attach_to_scen...
const osg::Quat & quat()
cached osg style orientation
Definition: DtDiGuyOsgGraphicsLink.h:155
Contains DLL export macros.
unsigned int lastTraversal()
used to figure out if the character has been visited yet this frame.
Definition: DtDiGuyOsgGraphicsLink.h:163
DtDiGuyOsgRootNode & myRoot
Definition: DtDiGuyOsgGraphicsLink.h:96
virtual void detach_from_scene() override
Remove link's nodes from the DI-Guy root overrides diguyGraphicsLink::detach_from_scene() ...
DtDiGuyCharacterBoundingCallback(DtDiGuyOsgRootNode &root)
DtDiGuyOsgGraphicsLink(void *internal_data)
CTOR.
bool m_flash
Definition: DtDiGuyOsgGraphicsLink.h:68
void remove_shape(DtDiGuyOsgGraphicsShape *shape)
cleans up geodes and shapes
std::vector< std::vector< diguyOsgGraphicsShapeSwitchPair > > m_switch_nodes
Definition: DtDiGuyOsgGraphicsLink.h:167
osg::Geode * boundingSphereVisual()
returns bounding volume
Per link approximation for collision.
Definition: DtDiGuyOsgGraphicsLink.h:73
bool myHasLight
Definition: DtDiGuyOsgGraphicsLink.h:298
virtual void setPositionAndOrientation(const DtVector &pos, const DtTaitBryan &ori)
Set the link's base position and orientation in cig coordinates.
unsigned int myLastTraversal
Definition: DtDiGuyOsgGraphicsLink.h:171
virtual void update() override
Update matrices per DI-Guy state overrides diguyGraphicsLink::update()
diguyGraphicsShape * m_shape
Definition: DtDiGuyOsgGraphicsLink.h:66
static void setDiGuySharedNodes(DtDiGuyScenario *scenario, osg::Group *diguy_attach_pt, osg::MatrixTransform *diguy_instancing_attach_pt, DtDiGuyInstanceDrawable *the_diguy_instancing_drawable)
common nodes
virtual void fill_out_tbo_additional_data(diguyGraphicsShape *current_shape, float *tbo_data) override
diguy override - extra info like sensors weight
osg::Quat myQuat
Definition: DtDiGuyOsgGraphicsLink.h:179
osg::ref_ptr< osg::Uniform > m_ufrm_emission_color
Definition: DtDiGuyOsgGraphicsLink.h:290
virtual void patch_tbo_data(const osg::Vec3d &camera_pos)
updates the TBO matrix code
virtual void setOctreeNode(DtOctreeNode< float64 > *node)
set octree node associated with this character
static osg::Group * the_diguy_attach_group
Definition: DtDiGuyOsgGraphicsLink.h:304
virtual void setIsOccupant(bool occ)
is this a non-moving character in a vehicle
Definition: DtDiGuyOsgGraphicsLink.h:138
bool myOccupant
Definition: DtDiGuyOsgGraphicsLink.h:173
virtual ~DtDiGuyOsgRootNode()
DTOR.
virtual void attach_to_link(diguyGraphicsLink *link)
Attach this link to another link.
Override of diguyGraphicsShape to create OSG geometry for DI-Guy shapes.
Definition: DtDiGuyOsgGraphicsShape.h:43
osg::Geode * m_geode
Definition: DtDiGuyOsgGraphicsLink.h:56
Class declaration. DtDiGuyOsgGraphicsShaderInstance publicly inherits diguyGraphicsShaderInstance. Virtual functions are declared for some of the virtual functions in the base class.
Definition: DtDiGuyOsgGraphicsShaderInstance.h:28
std::vector< std::vector< diguyOsgGraphicsShapeGeodePair > > m_lod_drawables
Definition: DtDiGuyOsgGraphicsLink.h:168
virtual osg::BoundingSphere computeBound(const osg::Node &node) const
static osg::Group * getDiGuyAttachGroup()
root node of the diguy module
osg::Geode * makeBoundingSphereVisual(osg::Vec3 ¢er, float radius)
Make geometry corresponding to the character's bounding sphere.
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
virtual void setHasLight(bool value)
is this link driving a light
struct for associating a shape with a switch node for fast updates
Definition: DtDiGuyOsgGraphicsLink.h:61
virtual void build() override
Build transform node(s) to position/orient shape geometry per DI-Guy state overrides diguyGraphicsLin...
virtual void traverse(osg::NodeVisitor &nv)
override of base osg code
osg::ref_ptr< osg::MatrixTransform > m_dof_node
Get the 1x1 placeholder variation texture.
Definition: DtDiGuyOsgGraphicsLink.h:287
virtual ~DtDiGuyOsgGraphicsLink()
DTOR.
osg::ref_ptr< osg::Uniform > myUniformLinkMatrix
Definition: DtDiGuyOsgGraphicsLink.h:288
static osg::MatrixTransform * the_diguy_instancing_attach_pt
Definition: DtDiGuyOsgGraphicsLink.h:305
osg::Switch * m_switch
Definition: DtDiGuyOsgGraphicsLink.h:67
osg::MatrixTransform * getDofNode()
Get the root DOF node for this link.
Derived diguyGraphicsLink to create OSG transforms and base node to hang shape objects on...
Definition: DtDiGuyOsgGraphicsLink.h:185
Contains makVrv::DtUniqueID type.
Class that renders all the diguy instance objects in one osg drawable, major performance improvement...
Definition: DtDiGuyInstanceDrawable.h:27
DtVector myWorldPosition
Definition: DtDiGuyOsgGraphicsLink.h:177
diguyCharacter * character()
gets diguy character
DtCollisionBoxGeode()
CTOR.
DtOctreeNode< float64 > * myOctreeNode
Definition: DtDiGuyOsgGraphicsLink.h:174
Custom root node bbox callback to avoid traversing down the model. 10x faster then trusting osg which...
Definition: DtDiGuyOsgGraphicsLink.h:91
DtDiGuyOsgRootNode(DtDiGuyOsgGraphicsLink *link)
CTOR.
virtual void set_allow_motion_offsets(bool allow)
Enables or disables the use of guides and incorporation of character offset during positioning...
diguyOsgGraphicsShapeSwitchPair(diguyGraphicsShape *shape, osg::Switch *switch_node)
CTOR.
virtual void update_position()
bool isOccupant()
is this a fake person in a vehicle
Definition: DtDiGuyOsgGraphicsLink.h:158
bool myAllowMotionOffsetsFlag
Definition: DtDiGuyOsgGraphicsLink.h:297
DtUniqueID myUniqueId
Definition: DtDiGuyOsgGraphicsLink.h:300
osg::ref_ptr< osg::Geode > myBoundingSphereVisual
Definition: DtDiGuyOsgGraphicsLink.h:293
virtual void traverse(osg::NodeVisitor &nv)
traverse function
virtual void instancing_state_changed(int is_instanced) override
diguy override - no ops
diguyOsgGraphicsShapeGeodePair(diguyGraphicsShape *shape, osg::Geode *geode)
CTOR.
Owns a DiGuy scenario for the application.
Definition: DtDiGuyScenario.h:87
virtual void set_shader_instance(diguyGraphicsShaderInstance *shader_instance) override
Build transform node(s) to position/orient shape geometry per DI-Guy state diguy overrides diguyGraph...
void add_switch_for_fast_draw(diguyGraphicsShape *shape, osg::Switch *switch_node, int lod)
adding a switch for fast drawing
static DtDiGuyInstanceDrawable * the_diguy_instancing_drawable
Definition: DtDiGuyOsgGraphicsLink.h:306