24 #include <vlutil/vlString.h>
25 #include <matrix/vlVector.h>
29 #include <tbb/mutex.h>
36 class diguyCharacterTypeMapFieldValues;
37 class diguyGestureMetadata;
39 class DtCoordTransform;
43 class DtDiGuySettings;
55 class DtLightPointNode;
58 class DtDiGuyOsgRootNode;
59 class DtDiGuyInstanceTboUpdaterJob;
60 class DtDiGuyScenario;
61 class DtDiGuyInstanceDrawable;
63 class DtOsgGizmoRenderer;
65 struct DtDiGuyCullData;
106 static DtDiGuyScenario* lightweight_instance(
const std::string& dataPath );
129 void initializeVisualComponent();
132 diguyScenario& scenario();
134 virtual void clearScene();
137 virtual osg::Node* characterRoot();
140 virtual bool useGuides()
const;
142 virtual float guideSyncGain()
const;
145 virtual bool useInstancing()
const;
148 virtual bool useTextureVariations()
const;
151 virtual bool useMultithreadedCull()
const;
154 virtual bool useOctree()
const;
157 std::string findCharacterName(
DtElementID parentSceneObjectID );
160 diguyCharacter* getCharacter(
DtElementID parentSceneObjectID);
163 int getSupportsWeightVariations(
DtElementID parentSceneObjectID );
166 bool evalScript(
const std::string& script );
169 static osg::Group* getDiGuyAttachGroup();
172 static osg::Group* getDiGuyInstancingAttachGroup();
175 virtual bool isGeocentric()
const;
204 virtual void updateStats(
int mask,
double duration );
210 virtual const LightConfigDataArray& lightDataArray();
213 virtual const StationConfigArray& stationDataArray();
216 virtual void drawDebugLines( osg::RenderInfo& renderInfo,
const osg::Vec3d& eyePoint,
223 virtual void addImguiTextureUI(
unsigned int contextID);
231 virtual void slot_terrainLoaded(
const DtUnicode& terrain,
bool reload );
234 virtual void slot_windowCreated(
DtWindow* window );
237 virtual void slot_windowDestroyed(
DtWindow* window );
240 virtual void slot_ProfilingChanged(
bool active );
243 virtual void slot_reloadShader();
246 virtual void slot_displayConfigurationRealized();
249 virtual void slot_preDraw();
252 virtual void slot_postDraw();
255 virtual void slot_postUpdate();
258 virtual void syncToSharedDiGuySettings();
261 virtual void slot_diGuyInstancingEnabledChanged(
bool enabled );
264 virtual void slot_diGuyInstancedLodChanged(
int lod );
267 virtual void slot_diGuyVisualizeInstancingChanged(
bool enabled );
270 virtual void slot_diGuyTextureVariationsEnabledChanged(
bool enabled );
273 virtual void slot_diGuyMaxDrawDistanceChanged(
float distance );
276 virtual void slot_diGuyMaxMotionUpdateDistanceChanged(
float distance );
279 virtual void slot_diGuyMultiThreadUpdateChanged(
bool enabled );
284 void updateScenario(
double simTime );
285 void setComponentVisualizationMode(
int mode );
287 void createDiGuyScenario();
292 static DtDiGuyScenario* createNonVisualInstance(
const std::string& dataPath );
294 static void slot_displayToBeDestroyed(
const std::string& displayName,
DtDe* de );
virtual DtDe & getDe()
returns de
Definition: DtDiGuyScenario.h:195
std::set< DtString > StringSet
Definition: DtDiGuyScenario.h:91
std::vector< DtDiguyStationConfig > StationConfigArray
Definition: DtDiGuyScenario.h:94
bool myVisualComponentInitialized
Definition: DtDiGuyScenario.h:335
data that's passed around for culling
Definition: DtDiGuyOctreeCullGroup.h:35
Abstract Base class.
Definition: DtWindow.h:25
virtual bool debugUIActive()
is the lower level debug UI visible
Definition: DtDiGuyScenario.h:220
tbb::mutex myOctreeMutex
Definition: DtDiGuyScenario.h:341
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
osg::ref_ptr< DtDiGuyInstanceDrawable > myInstancedDrawable
Definition: DtDiGuyScenario.h:316
osg::ref_ptr< osg::Group > myCharacterRoot
Definition: DtDiGuyScenario.h:312
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
bool myDrawSkeletons
Definition: DtDiGuyScenario.h:328
helper struct for data loaded from light config file
Definition: DtDiGuyScenario.h:68
LightConfigDataArray myLightDataArray
Definition: DtDiGuyScenario.h:354
int myEnum
Definition: DtDiGuyScenario.h:82
bool myUseInstancing
Definition: DtDiGuyScenario.h:323
int myLightType
Definition: DtDiGuyScenario.h:71
osg::ref_ptr< osg::Group > myDiguyRoot
Definition: DtDiGuyScenario.h:311
std::string myIkTargetRightArm
Definition: DtDiGuyScenario.h:80
diguyScenario * myScenario
Definition: DtDiGuyScenario.h:309
bool myDeIsValid
Definition: DtDiGuyScenario.h:307
std::string myIkTargetLeftArm
Definition: DtDiGuyScenario.h:81
StationConfigArray myStationDataArray
Definition: DtDiGuyScenario.h:355
Custom per character root node that does custom traversals and short circuits osg lod picking...
Definition: DtDiGuyOsgGraphicsLink.h:99
bool myUseMultithreadedCull
Definition: DtDiGuyScenario.h:327
a class to quickly render a bunch of basic primitives as debugging aids basic overview, create an adapter that inherits from DtDebugDrawCallbackInterface then call DtOsgGizmoRenderer::addDebugDrawerCallback() to register it with the system. Your code will then get called while the system is drawing, user should then add various primitives that will get rendered in one big batch after all the callbacks. See DtOsgLightDebugAdapter::drawDebugLines() for an example.
Definition: DtOsgGizmoRenderer.h:44
bool myUseTextureVariations
Definition: DtDiGuyScenario.h:325
bool myLightweightInstance
Definition: DtDiGuyScenario.h:336
double myFirstUpdateT
Definition: DtDiGuyScenario.h:319
osg::ref_ptr< osg::MatrixTransform > myInstancingRoot
Definition: DtDiGuyScenario.h:315
tbb::concurrent_vector< DtDiGuyOsgRootNode * > myNoninstancedNodeArray
Definition: DtDiGuyScenario.h:346
Contains DLL export macros.
helper struct for data loaded from station config file
Definition: DtDiGuyScenario.h:76
osg::ref_ptr< DtLightPointNode > myLightPointNode
Definition: DtDiGuyScenario.h:313
int myStatOctreeUpdate
Definition: DtDiGuyScenario.h:349
float myGuideSyncGain
Definition: DtDiGuyScenario.h:332
bool myDrawIKVisuals
Definition: DtDiGuyScenario.h:329
bool myDrawMovementInfo
Definition: DtDiGuyScenario.h:330
bool myReAddNodeToSceneGraph
Definition: DtDiGuyScenario.h:358
std::string myName
Definition: DtDiGuyScenario.h:78
virtual Octree_64 * octree()
returns octree
Definition: DtDiGuyScenario.h:190
Contains makVrv::DtVirtualBaseClass class.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
DtCoordTransform getTopoToGeoc(const DtVector &location)
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Octree datastructure for managing scene nodes. This is a loose octree implementation, meaning that each octant child of the octree actually overlaps it's siblings by a factor of .5. This guarantees that any thing that is half the size of the parent will fit completely into a child, with no splitting necessary.
Definition: DtOctree.h:27
Derived from osg::Node and is a replacement for the osgSim::LightPointNode represents a group of ligh...
Definition: DtLightPointNode.h:37
std::vector< DtOctreeNode< T > * > NodeVector
Definition: DtOctree.h:79
double myPreviousUpdateTime
Definition: DtDiGuyScenario.h:320
int myDriver
Definition: DtDiGuyScenario.h:72
static int theStatNumCharDrawn
Definition: DtDiGuyScenario.h:298
Octree_64::NodeVector myVisibleOctreeNodes
Definition: DtDiGuyScenario.h:343
osg::ref_ptr< osg::MatrixTransform > myLightPointRoot
Definition: DtDiGuyScenario.h:314
Base class to provide boost signal/slot management.
DtDe & myDe
Definition: DtDiGuyScenario.h:303
DtSignalConnectionManager myConnections
Definition: DtDiGuyScenario.h:339
const char int mode
Definition: ioapi.h:38
std::vector< DtDiguyLightConfig > LightConfigDataArray
Definition: DtDiGuyScenario.h:93
Contains makVrv::DtUniqueID type.
float myMaxMotionUpdateDistance
Definition: DtDiGuyScenario.h:331
Class that renders all the diguy instance objects in one osg drawable, major performance improvement...
Definition: DtDiGuyInstanceDrawable.h:26
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
#define DT_DLL_VRVDIGUY
Definition: vrvDiGuy.h:21
Octree_64 * myOctree
Definition: DtDiGuyScenario.h:342
bool myIsGeocentric
Definition: DtDiGuyScenario.h:318
bool myDebugUIActive
Definition: DtDiGuyScenario.h:337
std::string myAlternateDataPath
Definition: DtDiGuyScenario.h:338
float myStatOctreeUpdateTime
Definition: DtDiGuyScenario.h:350
float myStatPreviousOctreeUpdateTime
Definition: DtDiGuyScenario.h:351
bool myUseGuides
Definition: DtDiGuyScenario.h:324
std::string myTargetName
Definition: DtDiGuyScenario.h:79
bool myUseOctree
Definition: DtDiGuyScenario.h:326
static tbb::atomic< int > theStatNumCharInstanced
Definition: DtDiGuyScenario.h:299
std::vector< StringSet > StringSetVec
Definition: DtDiGuyScenario.h:92
float myStatCulltime
Definition: DtDiGuyScenario.h:352
Owns a DiGuy scenario for the application.
Definition: DtDiGuyScenario.h:87
Contains the makVrv::DtDiGuyTypeMapFieldNode class declaration.
std::string myLinkName
Definition: DtDiGuyScenario.h:70
virtual DtDiGuyInstanceDrawable * instancedDrawable()
returns instance drawable singleton
Definition: DtDiGuyScenario.h:201