VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 DtVrfObject;
20 
24 {
25 public:
26 
29 
30 private:
31 
36 
37 public:
38 
40  virtual bool init();
41 
42 protected:
43 
45  static void createMultipleEntitiesCallback(DtSimMessage* msg, void* usr);
46 
50  virtual void processCreateMultipleEntities(DtSimMessage* msg);
51 
53  virtual void createSelectionGroups(const DtString groupName,
54  const std::vector<DtUUID>& entNames);
55 
57  virtual bool collisionWithOtherEntities(DtExtent& extent,
58  const DtVector& pos, double radius);
59 
62  virtual DtVrfObject* createEntity(const DtVector& location,
63  const DtBufferSerialize::DtGroupEntityInfo& entityInfo);
64 
68  virtual void processCreateMultipleEntitiesNoNavData(
69  const DtBufferSerialize::DtGroupEntityInfo& entityInfo,
70  DtVrfObject* areaObject, std::vector<DtUUID>& nameList);
71 
74  static void simTickCallback(void* arg);
75 
77  virtual void processSimTick();
78 
79 protected:
80 
81  //Used to check possible random points against the bounding volumes
82  //of existing entities.
83  static bool CreationPointTestCallback(const DtVector& localPoint, DtNavAreaQuery* query, void* userData);
84  virtual bool ProcessCreationPointTest(const DtVector& localPoint, DtNavAreaQuery* query);
85 
86  //Used to maintain information about creation groups until the random points
87  //query is complete.
89  {
90  CreateEntitiesGroup(DtIfCreateMultipleEntities* creationInfo, unsigned groupIndex, double entityRadius)
91  : myCreationParameters(new DtIfCreateMultipleEntities(*creationInfo))
92  , myCreationGroupIndex(groupIndex)
93  , myEntityRadius(entityRadius)
94  {
95 
96  }
97 
99  {
100  delete myCreationParameters;
101  myCreationParameters = 0;
102  }
103 
107  };
108 
109  typedef std::list<std::pair<CreateEntitiesGroup*, DtNavAreaQuery::Ptr> > QueuedQueryData;
111 
112  std::list<std::pair<DtVrfObject*, DtSetDataRequest*> > myQueuedSetMessages;
113  std::list<std::pair<DtVrfObject*, DtSimTask*> > myQueuedTaskMessages;
114 
116 
120 
121 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)