VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
multipleEntityCreationManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2011 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
9 #include <vrfcgf/vrfcgfDefines.h>
10 #include <vrfNavigation/navArea.h>
11 
12 #include <geometry/extent.h>
13 #include <vector>
14 #include <list>
15 
16 class DtCgf;
17 class DtSimMessage;
18 class DtObjectType;
19 class DtLocalObject;
20 class DtSimObject;
21 
25 {
26 public:
27 
30 
31 private:
32 
37 
38 public:
39 
41  virtual bool init();
42 
43 protected:
44 
46  static void createMultipleEntitiesCallback(DtSimMessage* msg, void* usr);
47 
51  virtual void processCreateMultipleEntities(DtSimMessage* msg);
52 
54  virtual void createSelectionGroups(const DtString groupName,
55  const std::vector<DtUUID>& entNames);
56 
58  virtual bool collisionWithOtherEntities(DtExtent& extent,
59  const DtVector& pos, double radius);
60 
63  virtual DtLocalObject* createEntity(const DtVector& location,
64  const DtBufferSerialize::DtGroupEntityInfo& entityInfo);
65 
69  virtual void processCreateMultipleEntitiesNoNavData(
70  const DtBufferSerialize::DtGroupEntityInfo& entityInfo,
71  const DtSimObject* areaObject, std::vector<DtUUID>& nameList);
72 
75  static void simTickCallback(void* arg);
76 
78  virtual void processSimTick();
79 
80 protected:
81 
82  //Used to check possible random points against the bounding volumes
83  //of existing entities.
84  static bool CreationPointTestCallback(const DtVector& localPoint, DtNavAreaQuery* query, void* userData);
85  virtual bool ProcessCreationPointTest(const DtVector& localPoint, DtNavAreaQuery* query);
86 
87  //Used to maintain information about creation groups until the random points
88  //query is complete.
90  {
91  CreateEntitiesGroup(DtIfCreateMultipleEntities* creationInfo, unsigned groupIndex, double entityRadius)
92  : myCreationParameters(new DtIfCreateMultipleEntities(*creationInfo))
93  , myCreationGroupIndex(groupIndex)
94  , myEntityRadius(entityRadius)
95  {
96 
97  }
98 
100  {
101  delete myCreationParameters;
102  myCreationParameters = 0;
103  }
104 
108  };
109 
110  typedef std::list<std::pair<CreateEntitiesGroup*, DtNavAreaQuery::Ptr> > QueuedQueryData;
112 
113  std::list<std::pair<DtLocalObject*, DtSetDataRequest*> > myQueuedSetMessages;
114  std::list<std::pair<DtLocalObject*, DtSimTask*> > myQueuedTaskMessages;
115 
117 
121 
122 };
DtIfCreateMultipleEntities * myCreationParameters
Definition: multipleEntityCreationManager.h:105
Definition: ifCreateMultipleEntities.h:52
int myDelayTaskingTickCount
Indicates that a spawn message was just processed and draining the message queues should wait...
Definition: multipleEntityCreationManager.h:120
Definition: ifCreateMultipleEntities.h:21
QueuedQueryData myQueuedQueries
Definition: multipleEntityCreationManager.h:111
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
Definition: objectType.h:27
~CreateEntitiesGroup()
Definition: multipleEntityCreationManager.h:99
Manager to handle multiple entity creation. Responds to DtIfCreateMutipleEntity messages.
Definition: multipleEntityCreationManager.h:24
File: simMsg.h.
Definition: simMessage.h:35
std::list< std::pair< DtLocalObject *, DtSimTask * > > myQueuedTaskMessages
Definition: multipleEntityCreationManager.h:114
double myEntityRadius
Definition: multipleEntityCreationManager.h:107
Definition: multipleEntityCreationManager.h:89
std::list< std::pair< CreateEntitiesGroup *, DtNavAreaQuery::Ptr > > QueuedQueryData
Definition: multipleEntityCreationManager.h:110
CreateEntitiesGroup(DtIfCreateMultipleEntities *creationInfo, unsigned groupIndex, double entityRadius)
Definition: multipleEntityCreationManager.h:91
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:79
Contains the declaration of the DtExtent class.
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
unsigned myCreationGroupIndex
Definition: multipleEntityCreationManager.h:106
std::list< std::pair< DtLocalObject *, DtSetDataRequest * > > myQueuedSetMessages
Definition: multipleEntityCreationManager.h:113
DtCgf * myCgf
Definition: multipleEntityCreationManager.h:116
The top level class of a VR-Forces Simulation Engine, representing a Computer Generated Forces instan...
Definition: cgf.h:144
#define DT_DLL_vrfcgf
This file is used to determine how to build.
Definition: vrfcgfDefines.h:25
Base class for all asynchronous Nav Area queries. In this context asynchronous means non-blocking...
Definition: navArea.h:57
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)