VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
simComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
15 
16 #include <vlutil/vlString.h>
17 #include <vlutil/vlList.h>
18 #include "vrfutil/readerWriter.h"
21 #include <vlutil/vlHashlist.h>
24 
25 class DtSimManager;
26 class DtVrfObject;
28 class DtInputPort;
29 class DtOutputPort;
30 class DtInputPortGroup;
31 class DtOutputPortGroup;
32 class DtAttachedTerrain;
33 class DtPhysicalWorld;
34 class Coordinate_System;
35 class DtComponentSystem;
38 
69  , public DtObjectDebugger<DtSimComponent>
70 {
71 
72 public:
73 
81  DtSimComponent(const DtString& name,
82  DtVrfObject* owner,
83  DtSimManager* simManager,
84  DtComponentDescriptor* desc = 0,
85  DtReaderWriterRegistry* parentRegistry = 0);
86 
88  virtual ~DtSimComponent();
89 
94  void setParentSystem(DtComponentSystem* system);
95 
98  virtual bool init();
99 
103  virtual bool postAddComponentsInit() { return true; }
104 
108  virtual void registerAttributeFunctions(){}
109 
113  virtual void enable();
114  virtual void disable();
115  virtual bool isEnabled();
116  virtual void setIsEnabled(bool yesNo);
118 
121  virtual void preprocess();
122  virtual void parallelTick();
123 
127  virtual void preFirstTickInit();
128 
132  virtual void tick();
133 
136  virtual void postTick();
137 
145  virtual void timedTick();
146 
149  virtual void setMinTickPeriod(double minTickPeriod);
150 
152  virtual double minTickPeriod() const;
153 
155  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
156 
158  virtual double minTickPeriodVariance() const;
159 
163  virtual void setNextTickTime(double nextTickTime);
164 
166  virtual double nextTickTime() const;
167 
173  virtual double calculateNextTickTime() const;
174 
179  virtual double calculateFirstTickTime() const;
180 
185  virtual DtString type() const;
186 
193  virtual void setEntity(DtVrfObject* entity);
194 
196  virtual DtSimComponent* nextComponent();
197  virtual DtSimComponent* prevComponent();
198 
200  virtual void setListItem(DtListItem* item);
201  virtual DtListItem* listItem();
202 
205  virtual void putData(FILE* fp, int indentLevel = 0);
206 
209  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
210  const DtVariableBindingsList& variableBindings);
211 
214  virtual void addInputPort(DtInputPort* port);
215  virtual void removeInputPort(DtInputPort* port);
216 
222  virtual DtInputPort* lookupInputPort(const DtString& portName);
223 
225  virtual DtList inputPortList() const;
226 
229  virtual void addOutputPort(DtOutputPort* port);
230  virtual void removeOutputPort(DtOutputPort* port);
231 
237  virtual DtOutputPort* lookupOutputPort(const DtString& portName);
238 
240  virtual DtList outputPortList() const;
241 
244  virtual void addInputPortGroup(DtInputPortGroup* group);
245  virtual void removeInputPortGroup(DtInputPortGroup* group);
246 
249  virtual DtInputPortGroup* lookupInputPortGroup(const DtString& groupName);
250 
252  virtual DtList inputPortGroupList() const;
253 
256  virtual void addOutputPortGroup(DtOutputPortGroup* group);
257  virtual void removeOutputPortGroup(DtOutputPortGroup* group);
258 
261  virtual DtOutputPortGroup* lookupOutputPortGroup(const DtString& groupName);
262 
264  virtual DtList outputPortGroupList() const;
265 
272  virtual int priority() const;
278  virtual void setPriority(int priority);
279 
283  double dT() const;
284 
289  virtual void setDT(double deltaT);
290 
294  virtual void setComponentDescriptor(DtComponentDescriptor* componentDescriptor);
295  virtual const DtComponentDescriptor* componentDescriptor() const;
296 
301  virtual bool tickWhileDestroyed() const;
302 
305  virtual DtOutputStream& objectConsoleDebug() const;
306  virtual DtOutputStream& objectConsoleVerbose() const;
307  virtual DtOutputStream& objectConsoleInfo() const;
308  virtual DtOutputStream& objectConsoleWarn() const;
309  virtual DtOutputStream& objectConsoleError() const;
311 
317 
320 
321  virtual DtSimResourceManager& resourceManager();
322  virtual const DtSimResourceManager& resourceManager() const;
324 
328  virtual DtString componentFullName() const;
329 
333  static DtSimComponentFactory* factory();
334  static void setFactory(DtSimComponentFactory* factory);
335 
338  static DtSimComponent* createComponent(const DtString& name,
339  const DtString& type, DtVrfObject* owner, DtSimManager* simManager,
340  DtComponentSystem* parentSystem,
341  DtComponentDescriptor* desc = 0,
342  DtReaderWriterRegistry* parentRegistry = 0);
343 
349  static void addSimComponentCreatorFcn(const DtString& type,
351 
353  virtual DtPhysicalWorld* physicalWorld();
354  virtual const DtPhysicalWorld* physicalWorld() const;
355 
357  virtual DtAttachedTerrain* terrainAttachedTo();
358  virtual const DtAttachedTerrain* terrainAttachedTo() const;
359 
361  virtual DtVrfObject* entity();
362  virtual const DtVrfObject* entity() const;
363 
365  virtual DtSimManager* simManager();
366  virtual const DtSimManager* simManager() const;
367 
372  virtual const Coordinate_System* coordinateSystem() const;
373  virtual Coordinate_System* coordinateSystem();
374 
376  virtual DtVrfObjectStateRepository* localStateRepository();
377  virtual const DtVrfObjectStateRepository* localStateRepository() const;
378 
379 protected:
380 
382  virtual double computeCurrentTime();
383 
388  bool testInvariant() const;
389 
393  virtual bool createPortGroups();
394 
398  virtual bool createPorts();
399 
400 private:
403  DtSimComponent();
404 
406  DtSimComponent(const DtSimComponent& orig);
407 
410 
411 
412 protected:
418  DtListItem* myListItem;
419 
420  typedef std::map<DtString, DtInputPort*> DtInputPortMap;
421  typedef std::map<DtString, DtOutputPort*> DtOutputPortMap;
422  typedef std::map<DtString, DtInputPortGroup*> DtInputPortGroupMap;
423  typedef std::map<DtString, DtOutputPortGroup*> DtOutputPortGroupMap;
424 
429 
431 
433 
438  double myDT;
439 
443 
447 
449 };
450 
451 inline double DtSimComponent::dT() const
452 {
453  return myDT;
454 }
455 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)