VR-Forces 4.1 Class Documentation
spawnController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfobjcore/cntrlCmpnt.h"
13 
17 #include <vrfmsgs/rwSpawnData.h>
18 #include <vrfobjcore/vrfObjMgr.h>
19 
20 class DtString;
21 class DtVrfObject;
22 class DtSimManager;
23 class DtVrfObjectMessage;
24 class DtRwObjectTypeInfo;
25 
26 namespace BHAVE
27 {
28 
29 const char DtSpawnControllerType[] = "spawn-controller";
30 
33 
39 {
40 public:
41 
42 //****************************************************************************
44 //****************************************************************************
45  DtSpawnController(const DtString& name,
46  DtVrfObject* owner,
47  DtSimManager* simManager,
48  DtComponentDescriptor* desc = 0,
49  DtReaderWriterRegistry* parentRegistry = 0);
50 
52  virtual ~DtSpawnController();
53 
54  virtual DtString type() const;
55 
59  static DtSimComponent * creator(const DtString& name,
60  DtVrfObject* owner,
61  DtSimManager* simManager,
62  DtComponentDescriptor* desc = 0,
63  DtReaderWriterRegistry* parentRegistry = 0);
64 
65 //****************************************************************************
67 //****************************************************************************
68  static void settingConsumerCallback(const DtSettingsObject* settingsObject,
69  void* usr);
70 
72 
74  virtual void registerTaskMsgCallbacks();
76 
78  virtual void unregisterTaskMsgCallbacks();
79 
80  virtual bool init();
81 
82 protected:
83  virtual void processSetting(const DtBoolSetting* setting);
84 
85  virtual DtSpawnControllerPSR* createPSR();
86 
87 
88 //****************************************************************************
90 //****************************************************************************
91  static void updateSpawnInstanceCallback(const DtVrfObjectMessage * msg,
92  void* usr);
93  virtual void processUpdateSpawnInstanceCallback(
94  const DtVrfObjectMessage * msg);
95 
96  static void setTemplateNameCallback(const DtVrfObjectMessage * msg,
97  void* usr);
98  virtual void processSetTemplateNameCallback(const DtVrfObjectMessage * msg);
99 
100  static void requestSpawnPtDataCallback(const DtVrfObjectMessage * msg,
101  void* usr);
102  virtual void processRequestSpawnPtDataCallback(const DtVrfObjectMessage * msg);
103 
104  static void objectRemovedCallback(DtVrfObject* object, void* usr);
105  virtual void processObjectRemoved(DtVrfObject *object);
106 
107  static void objectRenamedCallback(
109  void* usr);
110  virtual void processObjectRenamed(
112 
116  virtual void embarkIfSpawnAttached(DtVrfObject*);
117 
118 //****************************************************************************
120 //****************************************************************************
121 public:
127  virtual void preFirstTickInit();
128 
130  virtual void tick();
131 
133  const DtRwSpawnData& spawnParameters() const;
134 
137  void setSpawnParameters(const DtRwSpawnData& params);
138 
139 protected:
140 
141 //****************************************************************************
143 //****************************************************************************
146  virtual std::list<DtVrfObject*> testAndSinkTraffic();
149  virtual bool shouldSinkObject(DtVrfObject* trafficObject,
150  DtVrfObject* sinkPoint);
152  virtual void deleteObjects(const std::list<DtVrfObject*>& objectList);
153 
165  virtual bool canCreateNow(DtTime timeNow) const;
166 
168  virtual DtString findSinkPoint();
169 
173  virtual DtTime nextCreationTime(DtTime timeNow);
174 
176  virtual DtVrfObject* createObject(DtVrfObject* sinkPoint,
177  DtVrfObject* objectToRecycle = 0);
179  virtual DtVector creationLocationAndOrientation(double& heading,
180  DtVrfObject* sinkPoint);
181 
184  virtual void createAndSendDefaultPlan(DtVrfObject* obj, const DtString& sinkName);
187  virtual double trafficSpeed();
188 
190  virtual void sendEntityPlan(DtVrfObject *entity, const DtPlan& plan);
191 
195  virtual bool trafficObjectType(DtRwObjectTypeInfo& objType);
196 
198  void findClosestRoadSpawnPoints();
199 
200 private:
203 
206 
208  const DtSpawnController & operator=(const DtSpawnController & orig);
209 
210 
211 protected:
212 
217 
223 
226 };
227 }
228 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)