VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/simCmpnt.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00006 #pragma once
00007 
00011 
00015 
00016 #include <vlutil/vlString.h>
00017 #include <vlutil/vlList.h>
00018 #include "vrfutil/rdrWritr.h"
00019 #include "vrfobjcore/compFactory.h"
00020 #include "vrfobjcore/vrfObjSR.h"
00021 #include <vlutil/vlHashlist.h>
00022 #include "vrfobjcore/vrfobjcoreDefines.h"
00023 
00024 class DtSimManager;
00025 class DtVrfObject;
00026 class DtComponentDescriptor;
00027 class DtInputPort;
00028 class DtOutputPort;
00029 class DtInputPortGroup;
00030 class DtOutputPortGroup;
00031 class DtAttachedTerrain;
00032 class DtPhysicalWorld;
00033 class Coordinate_System;
00034 class DtComponentSystem;
00035 class DtVrfProcessStateRepositoryManager;
00036 class DtSimResourceManager;
00037 
00060 class DT_DLL_vrfobjcore DtSimComponent : public DtReaderWriter
00061 {
00062 
00063 public:
00064 
00072    DtSimComponent(const DtString& name, 
00073       DtVrfObject* owner, 
00074       DtSimManager* simManager, 
00075       DtComponentDescriptor* desc = 0,
00076       DtReaderWriterRegistry* parentRegistry = 0);
00077 
00079    virtual ~DtSimComponent();
00080 
00085    void setParentSystem(DtComponentSystem* system);
00086 
00089    virtual bool init();
00090 
00094    virtual bool postAddComponentsInit() { return true; }
00095 
00099    virtual void enable();
00100    virtual void disable();
00101    virtual bool isEnabled();
00102    virtual void setIsEnabled(bool yesNo);
00104 
00108    virtual void tick();
00109 
00112    virtual void postTick();
00113 
00121    virtual void timedTick();
00122 
00125    virtual void setMinTickPeriod(double minTickPeriod);
00126 
00128    virtual double minTickPeriod() const;
00129 
00131    virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
00132 
00134    virtual double minTickPeriodVariance() const;
00135 
00139    virtual void setNextTickTime(double nextTickTime);
00140 
00142    virtual double nextTickTime() const;
00143 
00149    virtual double calculateNextTickTime() const;
00150 
00155    virtual double calculateFirstTickTime() const;
00156 
00161    virtual DtString type() const;
00162 
00169    virtual void setEntity(DtVrfObject* entity);
00170 
00172    virtual DtSimComponent* nextComponent();
00173    virtual DtSimComponent* prevComponent();
00174 
00176    virtual void setListItem(DtListItem* item);
00177    virtual DtListItem* listItem();
00178  
00181    virtual void putData(FILE* fp, int indentLevel = 0);
00182 
00185    virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath,
00186       const DtVariableBindingsList& variableBindings);
00187 
00190    virtual void addInputPort(DtInputPort* port);
00191    virtual void removeInputPort(DtInputPort* port);
00192 
00198    virtual DtInputPort* lookupInputPort(const DtString& portName);
00199 
00201    virtual DtList inputPortList() const;
00202 
00205    virtual void addOutputPort(DtOutputPort* port);
00206    virtual void removeOutputPort(DtOutputPort* port);
00207 
00213    virtual DtOutputPort* lookupOutputPort(const DtString& portName);
00214 
00216    virtual DtList outputPortList() const;
00217 
00220    virtual void addInputPortGroup(DtInputPortGroup* group);
00221    virtual void removeInputPortGroup(DtInputPortGroup* group);
00222 
00225    virtual DtInputPortGroup* lookupInputPortGroup(const DtString& groupName);
00226 
00228    virtual DtList inputPortGroupList() const;
00229 
00232    virtual void addOutputPortGroup(DtOutputPortGroup* group);
00233    virtual void removeOutputPortGroup(DtOutputPortGroup* group);
00234 
00237    virtual DtOutputPortGroup* lookupOutputPortGroup(const DtString& groupName);
00238 
00240    virtual DtList outputPortGroupList() const;
00241 
00248    virtual int priority() const;
00254    virtual void setPriority(int priority);
00255 
00259    double dT() const;
00260 
00265    virtual void setDT(double deltaT);
00266 
00270    virtual void setComponentDescriptor(DtComponentDescriptor* componentDescriptor);
00271    virtual const DtComponentDescriptor* componentDescriptor() const;
00272 
00277    virtual bool tickWhileDestroyed() const;
00278 
00281    virtual DtOutputStream& objectConsoleDebug() const;
00282    virtual DtOutputStream& objectConsoleVerbose() const;
00283    virtual DtOutputStream& objectConsoleInfo() const;
00284    virtual DtOutputStream& objectConsoleWarn() const;
00285    virtual DtOutputStream& objectConsoleError() const;
00287 
00292    DtVrfProcessStateRepositoryManager* psrManager();
00293 
00296 
00297    virtual DtSimResourceManager& resourceManager();
00298    virtual const DtSimResourceManager& resourceManager() const;
00300 
00304    virtual DtString componentFullName() const;
00305 
00309    static DtSimComponentFactory* factory();
00310    static void setFactory(DtSimComponentFactory* factory);
00311 
00314    static DtSimComponent* createComponent(const DtString& name, 
00315       const DtString& type, DtVrfObject* owner, DtSimManager* simManager, 
00316       DtComponentSystem* parentSystem,
00317       DtComponentDescriptor* desc = 0, 
00318       DtReaderWriterRegistry* parentRegistry = 0);
00319 
00325    static void addSimComponentCreatorFcn(const DtString& type, 
00326       DtSimComponentCreatorFcn fcn);
00327 
00328 protected:
00329 
00334    bool testInvariant() const;
00335 
00339    virtual bool createPortGroups();
00340 
00344    virtual bool createPorts();
00345 
00347    virtual DtPhysicalWorld* physicalWorld();
00348    virtual const DtPhysicalWorld* physicalWorld() const;
00349 
00351    virtual DtAttachedTerrain* terrainAttachedTo();
00352    virtual const DtAttachedTerrain* terrainAttachedTo() const;
00353 
00355    virtual DtVrfObject* entity();
00356    virtual const DtVrfObject* entity() const;
00357 
00359    virtual DtSimManager* simManager();
00360    virtual const DtSimManager* simManager() const;
00361 
00366    virtual const Coordinate_System* coordinateSystem() const;
00367    virtual Coordinate_System* coordinateSystem();
00368 
00370    virtual DtVrfObjectStateRepository* localStateRepository();
00371    virtual const DtVrfObjectStateRepository* localStateRepository() const;
00372 
00373 
00374 private:
00377    DtSimComponent();
00378 
00380    DtSimComponent(const DtSimComponent& orig);
00381 
00383    DtSimComponent& operator=(const DtSimComponent& orig);
00384 
00385 
00386 protected:
00387    DtVrfObject*                  myEntity;
00388    DtVrfObjectStateRepository*   myLocalStateRepository;
00389    DtSimManager*                 mySimManager;
00391    DtComponentSystem*            mySystem;
00392    DtListItem*                   myListItem;
00393 
00394    typedef std::map<DtString, DtInputPort*> DtInputPortMap;
00395    typedef std::map<DtString, DtOutputPort*> DtOutputPortMap;
00396    typedef std::map<DtString, DtInputPortGroup*> DtInputPortGroupMap;
00397    typedef std::map<DtString, DtOutputPortGroup*> DtOutputPortGroupMap;
00398 
00399    DtInputPortMap myInputPortList;
00400    DtOutputPortMap myOutputPortList;
00401    DtInputPortGroupMap myInputPortGroupList;
00402    DtOutputPortGroupMap myOutputPortGroupList;
00403 
00404    static DtSimComponentFactory* myFactory;
00405 
00406    int                           myPriority;
00407 
00408    double myMinTickPeriod;
00409    double myMinTickPeriodVariance;
00410    double myNextTickTime;
00411    double myLastTickSimTime;
00412    double myDT;
00413 
00416    bool myIsEnabled;
00417 
00418    const DtComponentDescriptor* myComponentDescriptor;
00419 };
00420 
00421 inline double DtSimComponent::dT() const
00422 {
00423    return myDT;
00424 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)