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>
27 #include <tbb/atomic.h>
36 class DtDiGuyOsgGraphicsShaderProgram;
37 class DtDiGuyOsgGraphicsShaderInstance;
38 class DtDiGuyOsgGraphicsState;
39 class DtDiGuyScenario;
40 class DtDiGuyOsgGraphicsShape;
41 class DtDiGuyOsgGraphicsLink;
43 class DtDiGuyOsgRootNode;
44 class DtDiGuyOsgGraphicsInstanceGroup;
45 class DtDiGuyInstanceDrawable;
83 virtual void traverse(osg::NodeVisitor& nv);
92 virtual osg::BoundingSphere
computeBound(
const osg::Node& node)
const;
109 virtual void traverse(osg::NodeVisitor& nv);
184 virtual void build();
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
Definition: DtDiGuyOsgGraphicsLink.h:140
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:147
virtual void unbuild()
called by link::unbuild()
DtDiGuyOsgGraphicsLink * m_link
Definition: DtDiGuyOsgGraphicsLink.h:155
DtDiGuyScenario * myScenario
Definition: DtDiGuyOsgGraphicsLink.h:161
virtual void instancing_state_changed(int is_instanced)
diguy override - no ops
META_Node(osg, DtCollisionBoxGeode)
OctreeNode class.
Definition: DtOctreeNode.h:21
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:164
void add_geode_for_fast_draw(diguyGraphicsShape *shape, osg::Geode *geode, int lod)
caches a drawable for drawing quickly
float myMinDrawDistance
Definition: DtDiGuyOsgGraphicsLink.h:158
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:99
virtual void fill_out_tbo_additional_data(diguyGraphicsShape *current_shape, float *tbo_data)
diguy override - extra info like sensors weight
diguyGraphicsShape * m_shape
Definition: DtDiGuyOsgGraphicsLink.h:53
struct for associating a shape with a geode for removal.
Definition: DtDiGuyOsgGraphicsLink.h:49
const DtVector & position()
perf critical position of character
Definition: DtDiGuyOsgGraphicsLink.h:138
DtDiGuyOsgGraphicsShaderInstance * myShaderInstance
Definition: DtDiGuyOsgGraphicsLink.h:290
static osg::MatrixTransform * get_instancing_attach_node()
root node of diguy instances
osg::ref_ptr< osg::Geode > myCollisionBoxGeode
Definition: DtDiGuyOsgGraphicsLink.h:287
const osg::Quat & quat()
cached osg style orientation
Definition: DtDiGuyOsgGraphicsLink.h:142
Contains DLL export macros.
unsigned int lastTraversal()
used to figure out if the character has been visited yet this frame.
Definition: DtDiGuyOsgGraphicsLink.h:149
DtDiGuyOsgRootNode & myRoot
Definition: DtDiGuyOsgGraphicsLink.h:94
DtDiGuyCharacterBoundingCallback(DtDiGuyOsgRootNode &root)
DtDiGuyOsgGraphicsLink(void *internal_data)
CTOR.
bool m_flash
Definition: DtDiGuyOsgGraphicsLink.h:66
void remove_shape(DtDiGuyOsgGraphicsShape *shape)
cleans up geodes and shapes
std::vector< std::vector< diguyOsgGraphicsShapeSwitchPair > > m_switch_nodes
Definition: DtDiGuyOsgGraphicsLink.h:153
osg::Geode * boundingSphereVisual()
returns bounding volume
Per link approximation for collision.
Definition: DtDiGuyOsgGraphicsLink.h:71
bool myHasLight
Definition: DtDiGuyOsgGraphicsLink.h:293
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:157
diguyGraphicsShape * m_shape
Definition: DtDiGuyOsgGraphicsLink.h:64
static void setDiGuySharedNodes(DtDiGuyScenario *scenario, osg::Group *diguy_attach_pt, osg::MatrixTransform *diguy_instancing_attach_pt, DtDiGuyInstanceDrawable *the_diguy_instancing_drawable)
common nodes
osg::Quat myQuat
Definition: DtDiGuyOsgGraphicsLink.h:165
osg::ref_ptr< osg::Uniform > m_ufrm_emission_color
Definition: DtDiGuyOsgGraphicsLink.h:285
virtual void build()
Build transform node(s) to position/orient shape geometry per DI-Guy state.
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:298
virtual void setIsOccupant(bool occ)
is this a non-moving character in a vehicle
Definition: DtDiGuyOsgGraphicsLink.h:132
bool myOccupant
Definition: DtDiGuyOsgGraphicsLink.h:159
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
virtual void detach_from_scene()
Remove link's nodes from the DI-Guy root.
osg::Geode * m_geode
Definition: DtDiGuyOsgGraphicsLink.h:54
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:154
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.
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:59
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:282
virtual ~DtDiGuyOsgGraphicsLink()
DTOR.
osg::ref_ptr< osg::Uniform > myUniformLinkMatrix
Definition: DtDiGuyOsgGraphicsLink.h:283
static osg::MatrixTransform * the_diguy_instancing_attach_pt
Definition: DtDiGuyOsgGraphicsLink.h:299
osg::Switch * m_switch
Definition: DtDiGuyOsgGraphicsLink.h:65
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:171
virtual void set_shader_instance(diguyGraphicsShaderInstance *shader_instance)
Build transform node(s) to position/orient shape geometry per DI-Guy state.
Contains makVrv::DtUniqueID type.
Class that renders all the diguy instance objects in one osg drawable, major performance improvement...
Definition: DtDiGuyInstanceDrawable.h:26
DtVector myWorldPosition
Definition: DtDiGuyOsgGraphicsLink.h:163
diguyCharacter * character()
gets diguy character
DtCollisionBoxGeode()
CTOR.
DtOctreeNode< float64 > * myOctreeNode
Definition: DtDiGuyOsgGraphicsLink.h:160
virtual void update()
Update matrices per DI-Guy state.
Custom root node bbox callback to avoid traversing down the model. 10x faster then trusting osg which...
Definition: DtDiGuyOsgGraphicsLink.h:89
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:144
bool myAllowMotionOffsetsFlag
Definition: DtDiGuyOsgGraphicsLink.h:292
DtUniqueID myUniqueId
Definition: DtDiGuyOsgGraphicsLink.h:295
osg::ref_ptr< osg::Geode > myBoundingSphereVisual
Definition: DtDiGuyOsgGraphicsLink.h:288
virtual void unbuild()
Build transform node(s) to position/orient shape geometry per DI-Guy state.
virtual void traverse(osg::NodeVisitor &nv)
traverse function
diguyOsgGraphicsShapeGeodePair(diguyGraphicsShape *shape, osg::Geode *geode)
CTOR.
Owns a DiGuy scenario for the application.
Definition: DtDiGuyScenario.h:87
virtual void attach_to_scene()
Add link's nodes to the scene graph under the DI-Guy root.
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:300