VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 
407  virtual bool taskVisualizationsEnabled() const;
408 
409 protected:
410 
412  virtual double computeCurrentTime();
413 
418  bool testInvariant() const;
419 
423  virtual bool createPortGroups();
424 
428  virtual bool createPorts();
429 
438  DtVrfProcessStateRepository* createComponentPsr(const DtString& defaultPsrType,
439  const DtString& defaultPsrName, bool useDescriptorParams = true);
440 
443  virtual void updateTaskVisualizations() {};
444 
446  virtual void destroyTaskVisualizations();
447 
449  virtual void destroyTaskVisualization(const DtString& name);
450 
452  virtual DtPointTaskVisualizationPtr pointTaskVisualization(const DtString& name);
453 
455  virtual DtLineTaskVisualizationPtr lineTaskVisualization(const DtString& name);
456 
458  virtual DtAreaTaskVisualizationPtr areaTaskVisualization(const DtString& name);
459 
461  virtual DtTextTaskVisualizationPtr textTaskVisualization(const DtString& name);
462 
464  double calculateNextTaskVisTickTime() const;
465 
466 private:
469  DtSimComponent();
470 
472  DtSimComponent(const DtSimComponent& orig);
473 
475  DtSimComponent& operator=(const DtSimComponent& orig);
476 
477 
478 protected:
484  DtListItem* myListItem;
485 
486  typedef std::map<DtString, DtInputPort*> DtInputPortMap;
487  typedef std::map<DtString, DtOutputPort*> DtOutputPortMap;
488  typedef std::map<DtString, DtInputPortGroup*> DtInputPortGroupMap;
489  typedef std::map<DtString, DtOutputPortGroup*> DtOutputPortGroupMap;
490 
495 
497 
499 
504  double myDT;
505 
509 
513 
518 
520 
523  std::list<DtVrfProcessStateRepository*> myComponentPsrs;
524 
527 
530 
533 };
534 
535 inline double DtSimComponent::dT() const
536 {
537  return myDT;
538 }
539 

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)