27 #include <vlutil/vlString.h>
28 #include <matrix/vlVector.h>
32 #include <tbb/mutex.h>
36 class DtCoordTransform;
41 class DtDiGuySettings;
48 class DtDiGuyOsgRootNode;
49 class DtDiGuyInstanceTboUpdaterJob;
50 class DtDiGuyScenario;
51 class DtDiGuyInstanceDrawable;
53 struct DtDiGuyCullData;
88 void initializeVisualComponent();
93 static DtDiGuyScenario* lightweight_instance(
const std::string& dataPath );
99 diguyScenario& scenario();
101 virtual void clearScene();
104 virtual osg::Node* characterRoot();
107 virtual int useGuides();
109 virtual float guideSyncGain();
112 virtual int useInstancing();
115 virtual bool useMultithreadedCull();
118 virtual bool useOctree();
121 std::string findCharacterName(
DtElementID parentSceneObjectID);
124 int getSupportsWeightVariations(
DtElementID parentSceneObjectID);
127 bool evalScript(
const std::string& script);
135 int getNumCharacterTypes();
137 const char* getCharacterTypeAtIndex(
int index);
139 int getCharacterTypeNumAppearances(
const char* typeName);
141 const char* getCharacterTypeAppearanceAtIndex(
const char* typeName,
int index);
143 int getCharacterTypeNumGestures(
const char* typeName);
145 const char* getCharacterTypeGestureAtIndex(
const char* typeName,
int index);
149 const char* getHandItemClass(
const char* typeName);
150 int getNumHandItemsInClass(
const char* className);
152 const char* getHandItemFromClass(
const char* className,
int index);
155 int getCharacterTypeNumHeads(
const char* typeName,
const char* appearanceName);
157 const char* getCharacterTypeHeadAtIndex(
const char* typeName,
const char* appearanceName,
int index);
160 int getCharacterTypeNumActions(
const char* typeName);
162 const char* getCharacterTypeActionAtIndex(
const char* typeName,
int index);
165 float getCharacterTypeActionDuration(
const char* typeName,
const char* actionName);
167 float getCharacterTypeActionSpeed(
const char* typeName,
const char* actionName);
170 const char* getCharacterTypeActionPosture(
const char* typeName,
const char* actionName);
174 const char* getCharacterTypeActionDirection(
const char* typeName,
const char* actionName);
179 const char* getCharacterTypeActionPrimaryVariant(
const char* typeName,
const char* actionName);
182 int getCharacterTypeTransitionInfo(
const char* typeName,
const char* actionFrom,
const char* actionTo,
DtDiguyTransitionInfo& info);
199 int getNumTypeMapEntries();
202 const char* getTypeMapCharacterType(
int index);
205 const char* getTypeMapCharacterAppearance(
int index);
208 const char* getTypeMapFieldValue(
int index,
const char* fieldName);
209 const char* getTypeMapFieldValue(
int index,
int fieldIndex);
213 int getNumTypeMapCharacterClasses();
214 const char* getTypeMapCharacterClassAtIndex(
int index);
218 int getNumTypeMapCategories(
const char* character_class);
219 const char* getTypeMapCategoryAtIndex(
const char* character_class,
int index);
222 int getNumTypeMapSubcategories(
const char* character_class,
223 const char* category);
224 const char* getTypeMapSubcategoryAtIndex(
const char* character_class,
225 const char* category,
230 virtual void getAppearancesMatchingDiGuyTypeMap(
const DtString& characterType, std::vector<DtString>& fields, std::vector<DtString>& retAppearances);
233 virtual void getAppearancesMatchingPartialDiGuyTypeMap(
const DtString& characterType, std::vector<DtString>& partialFields,
234 std::vector<int>& fieldIndices, std::vector<DtString>& retAppearances);
238 virtual void getTypeMapFieldOptions(
const DtString& characterType, std::vector<DtString>& fields,
StringListVec& retValues);
240 virtual void getTypeMapPartialFieldOptions(
const DtString& characterType, std::vector<DtString>& partialFields, std::vector<int>& fieldIndices,
243 virtual void initTypeMapNodes();
246 static osg::Group* getDiGuyAttachGroup();
249 static osg::Group* getDiGuyInstancingAttachGroup();
252 virtual bool isGeocentric();
279 virtual void updateStats(
int mask,
double duration);
284 virtual void slot_terrainLoaded(
const DtUnicode& terrain,
bool reload );
287 virtual void slot_windowDestroyed(
DtWindow* window);
290 virtual void slot_windowCreated(
DtWindow* window);
293 virtual void slot_ProfilingChanged(
bool active);
296 virtual void slot_reloadShader();
299 virtual void slot_preDraw();
302 virtual void slot_postDraw();
305 virtual void slot_postUpdate();
308 virtual void syncToSharedDiGuySettings();
311 virtual void slot_diGuyInstancingEnabledChanged(
bool enabled );
314 virtual void slot_diGuyInstancedLodChanged(
int lod );
317 virtual void slot_diGuyVisualizeInstancingChanged(
bool enabled );
320 virtual void slot_diGuyMaxDrawDistanceChanged(
float distance );
323 virtual void slot_diGuyMaxMotionUpdateDistanceChanged(
float distance);
326 virtual void slot_diGuyMultiThreadUpdateChanged(
bool enabled );
332 diguyCharacter* getCharacter(
DtElementID parentSceneObjectID);
335 void updateScenario(
double simTime);
336 void updateScenario();
337 void setComponentVisualizationMode(
int mode);
342 void createDiGuyScenario();
344 void reloadConfigInfo();
350 static DtDiGuyScenario* createNonVisualInstance(
const std::string& dataPath);
352 static void slot_displayToBeDestroyed(
const std::string& displayName,
DtDe* de);
virtual DtDe & getDe()
returns de
Definition: DtDiGuyScenario.h:270
bool myVisualComponentInitialized
Definition: DtDiGuyScenario.h:380
data that's passed around for culling
Definition: DtDiGuyOctreeCullGroup.h:35
Abstract Base class.
Definition: DtWindow.h:25
tbb::mutex myOctreeMutex
Definition: DtDiGuyScenario.h:389
Virtual base class.
Definition: DtVirtualBaseClass.h:22
osg::ref_ptr< DtDiGuyInstanceDrawable > myInstancedDrawable
Definition: DtDiGuyScenario.h:365
osg::ref_ptr< osg::Group > myCharacterRoot
Definition: DtDiGuyScenario.h:363
A unicode string.
Definition: DtUnicode.h:33
float mySpeed
Definition: DtDiGuyScenario.h:59
float myBaseDeltaRot
Definition: DtDiGuyScenario.h:66
osg::ref_ptr< osg::Group > myDiguyRoot
Definition: DtDiGuyScenario.h:362
diguyScenario * myScenario
Definition: DtDiGuyScenario.h:360
bool myDeIsValid
Definition: DtDiGuyScenario.h:359
Custom per character root node that does custom traversals and short circuits osg lod picking...
Definition: DtDiGuyOsgGraphicsLink.h:99
virtual Instance * createInstance()
Definition: bdiQPropTree_subclasses.h:693
bool myUseMultithreadedCull
Definition: DtDiGuyScenario.h:374
std::list< DtString > StringList
Definition: DtDiGuyScenario.h:77
There are nine DI-Guy type map fields.
Definition: DtDiGuyTypeMapFieldNode.h:34
bool myLightweightInstance
Definition: DtDiGuyScenario.h:381
double myFirstUpdateT
Definition: DtDiGuyScenario.h:367
osg::ref_ptr< osg::MatrixTransform > myInstancingRoot
Definition: DtDiGuyScenario.h:364
DtDiGuyTypeMapFieldNode myTypeMapFieldsRootNode
Definition: DtDiGuyScenario.h:383
Contains DLL export macros.
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:26
int myUseInstancing
Definition: DtDiGuyScenario.h:371
int myStatOctreeUpdate
Definition: DtDiGuyScenario.h:396
float myGuideSyncGain
Definition: DtDiGuyScenario.h:376
helper struct for VRF transition code
Definition: DtDiGuyScenario.h:56
virtual Octree_64 * octree()
returns octree
Definition: DtDiGuyScenario.h:266
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.
float myDistance
Definition: DtDiGuyScenario.h:58
bool myHaveSetupTypeMapFieldsNodes
Definition: DtDiGuyScenario.h:384
DtCoordTransform getTopoToGeoc(const DtVector &location)
std::vector< StringList > StringListVec
Definition: DtDiGuyScenario.h:78
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
Octree datastructure for managing scene nodes.
Definition: DtOctree.h:27
std::vector< DtOctreeNode< T > * > NodeVector
Definition: DtOctree.h:79
double myPreviousUpdateTime
Definition: DtDiGuyScenario.h:368
tbb::concurrent_vector< DtDiGuyOsgRootNode * > myNoninstancedNodeArray
Definition: DtDiGuyScenario.h:393
static int theStatNumCharDrawn
Definition: DtDiGuyScenario.h:403
Octree_64::NodeVector myVisibleOctreeNodes
Definition: DtDiGuyScenario.h:391
Base class to provide boost signal/slot management.
DtVector32 myBaseDeltaPos
Definition: DtDiGuyScenario.h:65
DtDe & myDe
Definition: DtDiGuyScenario.h:356
DtSignalConnectionManager myConnections
Definition: DtDiGuyScenario.h:387
float myDuration
Definition: DtDiGuyScenario.h:60
const char int mode
Definition: ioapi.h:38
Contains makVrv::DtUniqueID type.
float myMaxMotionUpdateDistance
Definition: DtDiGuyScenario.h:375
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.
Definition: DtDe.h:69
int myUseGuides
Definition: DtDiGuyScenario.h:372
#define DT_DLL_VRVDIGUY
Definition: vrvDiGuy.h:21
Template for 32/64 bit bit frustums.
Definition: DtCamera.h:148
Octree_64 * myOctree
Definition: DtDiGuyScenario.h:390
bool myIsGeocentric
Definition: DtDiGuyScenario.h:366
std::string myAlternateDataPath
Definition: DtDiGuyScenario.h:386
float myStatOctreeUpdateTime
Definition: DtDiGuyScenario.h:397
float myStatPreviousOctreeUpdateTime
Definition: DtDiGuyScenario.h:398
bool myUseOctree
Definition: DtDiGuyScenario.h:373
static tbb::atomic< int > theStatNumCharInstanced
Definition: DtDiGuyScenario.h:404
float myRot
Definition: DtDiGuyScenario.h:63
DtVector32 myDeltaPos
Definition: DtDiGuyScenario.h:62
float myStatCulltime
Definition: DtDiGuyScenario.h:399
Owns a DiGuy scenario for the application.
Definition: DtDiGuyScenario.h:73
Contains the makVrv::DtDiGuyTypeMapFieldNode class declaration.
virtual DtDiGuyInstanceDrawable * instancedDrawable()
returns instance drawable singleton
Definition: DtDiGuyScenario.h:276