VR-Forces 4.5 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>
29 #include <list>
30 
31 class DtSimManager;
32 class DtVrfObject;
34 class DtInputPort;
35 class DtOutputPort;
36 class DtInputPortGroup;
37 class DtOutputPortGroup;
38 class DtAttachedTerrain;
39 class DtPhysicalWorld;
40 class Coordinate_System;
41 class DtComponentSystem;
44 class DtCriticalSection;
46 
77  , public DtObjectDebugger<DtSimComponent>
78 {
79 public:
80 
82  {
83  public:
84  explicit ComponentCriticalSection(
87  };
88 
89  static DtSimComponent* MarkThreadSafe(DtSimComponent*);
90 
98  DtSimComponent(const DtString& name,
99  DtVrfObject* owner,
100  DtSimManager* simManager,
101  DtComponentDescriptor* desc = 0,
102  DtReaderWriterRegistry* parentRegistry = 0);
103 
105  virtual ~DtSimComponent();
106 
111  void setParentSystem(DtComponentSystem* system);
112 
115  virtual bool init();
116 
120  virtual bool postAddComponentsInit() { return true; }
121 
125  virtual void registerAttributeFunctions(){}
126 
130  virtual void enable();
131  virtual void disable();
132  virtual bool isEnabled();
133  virtual void setIsEnabled(bool yesNo);
135 
139  virtual void preFirstTickInit();
140 
144  virtual void tick();
145 
149  virtual void postTick();
150 
158  virtual void timedTick();
159 
162  virtual void setMinTickPeriod(double minTickPeriod);
163 
165  virtual double minTickPeriod() const;
166 
168  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
169 
171  virtual double minTickPeriodVariance() const;
172 
176  virtual void setNextTickTime(double nextTickTime);
177 
179  virtual double nextTickTime() const;
180 
186  virtual double calculateNextTickTime() const;
187 
192  virtual double calculateFirstTickTime() const;
193 
200  virtual const char* type() const = 0;
201 
208  virtual void setEntity(DtVrfObject* entity);
209 
211  virtual DtSimComponent* nextComponent();
212  virtual DtSimComponent* prevComponent();
213 
215  virtual void setListItem(DtListItem* item);
216  virtual DtListItem* listItem();
217 
220  virtual void putData(std::string& fp, int indentLevel = 0);
221 
224  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
225  const DtVariableBindingsList& variableBindings);
226 
229  virtual void addInputPort(DtInputPort* port);
230  virtual void removeInputPort(DtInputPort* port);
231 
237  virtual DtInputPort* lookupInputPort(const DtString& portName);
238 
240  virtual DtList inputPortList() const;
241 
244  virtual void addOutputPort(DtOutputPort* port);
245  virtual void removeOutputPort(DtOutputPort* port);
246 
252  virtual DtOutputPort* lookupOutputPort(const DtString& portName);
253 
255  virtual DtList outputPortList() const;
256 
259  virtual void addInputPortGroup(DtInputPortGroup* group);
260  virtual void removeInputPortGroup(DtInputPortGroup* group);
261 
264  virtual DtInputPortGroup* lookupInputPortGroup(const DtString& groupName);
265 
267  virtual DtList inputPortGroupList() const;
268 
271  virtual void addOutputPortGroup(DtOutputPortGroup* group);
272  virtual void removeOutputPortGroup(DtOutputPortGroup* group);
273 
276  virtual DtOutputPortGroup* lookupOutputPortGroup(const DtString& groupName);
277 
279  virtual DtList outputPortGroupList() const;
280 
287  virtual int priority() const;
293  virtual void setPriority(int priority);
294 
298  double dT() const;
299 
304  virtual void setDT(double deltaT);
305 
309  virtual void setComponentDescriptor(DtComponentDescriptor* componentDescriptor);
310  virtual const DtComponentDescriptor* componentDescriptor() const;
311 
316  virtual bool tickWhileDestroyed() const;
317 
320  virtual DtOutputStream& objectConsoleDebug(const DtString& channel = "") const;
321  virtual DtOutputStream& objectConsoleVerbose(const DtString& channel = "") const;
322  virtual DtOutputStream& objectConsoleInfo(const DtString& channel = "") const;
323  virtual DtOutputStream& objectConsoleWarn(const DtString& channel = "") const;
324  virtual DtOutputStream& objectConsoleError(const DtString& channel = "") const;
326 
332 
335 
336  virtual DtSimResourceManager& resourceManager();
337  virtual const DtSimResourceManager& resourceManager() const;
339 
343  virtual DtString componentFullName() const;
344 
348  static DtSimComponentFactory* factory();
349  static void setFactory(DtSimComponentFactory* factory);
350 
353  static DtSimComponent* createComponent(const DtString& name,
354  const DtString& type, DtVrfObject* owner, DtSimManager* simManager,
355  DtComponentSystem* parentSystem,
356  DtComponentDescriptor* desc = 0,
357  DtReaderWriterRegistry* parentRegistry = 0);
358 
364  static void addSimComponentCreatorFcn(const DtString& type,
366 
368  virtual DtPhysicalWorld* physicalWorld();
369  virtual const DtPhysicalWorld* physicalWorld() const;
370 
372  virtual DtAttachedTerrain* terrainAttachedTo();
373  virtual const DtAttachedTerrain* terrainAttachedTo() const;
374 
376  virtual DtVrfObject* entity();
377  virtual const DtVrfObject* entity() const;
378 
380  virtual DtSimManager* simManager();
381  virtual const DtSimManager* simManager() const;
382 
387  virtual const Coordinate_System* coordinateSystem() const;
388  virtual Coordinate_System* coordinateSystem();
389 
391  virtual DtVrfObjectStateRepository* localStateRepository();
392  virtual const DtVrfObjectStateRepository* localStateRepository() const;
393 
395  virtual DtTaskVisualizationMap& taskVisualizations();
396 
400  virtual bool taskVisualizationsActive() const;
401 
402 protected:
403 
405  virtual double computeCurrentTime();
406 
411  bool testInvariant() const;
412 
416  virtual bool createPortGroups();
417 
421  virtual bool createPorts();
422 
431  DtVrfProcessStateRepository* createComponentPsr(const DtString& defaultPsrType,
432  const DtString& defaultPsrName, bool useDescriptorParams = true);
433 
436  virtual void updateTaskVisualizations() {};
437 
439  virtual void destroyTaskVisualizations();
440 
442  virtual void destroyTaskVisualization(const DtString& name);
443 
445  virtual DtPointTaskVisualizationPtr pointTaskVisualization(const DtString& name);
446 
448  virtual DtLineTaskVisualizationPtr lineTaskVisualization(const DtString& name);
449 
451  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(const DtString& name);
452 
454  virtual DtTextTaskVisualizationPtr textTaskVisualization(const DtString& name);
455 
457  double calculateNextTaskVisTickTime() const;
458 
459 private:
462  DtSimComponent();
463 
465  DtSimComponent(const DtSimComponent& orig);
466 
468  DtSimComponent& operator=(const DtSimComponent& orig);
469 
470 
471 protected:
477  DtListItem* myListItem;
478 
479  typedef std::map<DtString, DtInputPort*> DtInputPortMap;
480  typedef std::map<DtString, DtOutputPort*> DtOutputPortMap;
481  typedef std::map<DtString, DtInputPortGroup*> DtInputPortGroupMap;
482  typedef std::map<DtString, DtOutputPortGroup*> DtOutputPortGroupMap;
483 
488 
490 
492 
497  double myDT;
498 
502 
506 
511 
513 
516  std::list<DtVrfProcessStateRepository*> myComponentPsrs;
517 
520 
523 
526 };
527 
528 inline double DtSimComponent::dT() const
529 {
530  return myDT;
531 }
532 

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)