VR-Forces 4.0.4 Class Documentation
include/vrfmodel/railPathController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: railPathController.h,v $ $Revision: 1.1 $ $State: Exp $
00007 ** Created: 4/8/10 MEM
00008 *******************************************************************************/
00009 
00012 
00015 
00016 
00017 #pragma once
00018 
00019 #include "vrfobjcore/singleTaskControllerComponent.h"
00020 #include <matrix/vlVector.h>
00021 #include "vrftasks/setDataReq.h"
00022 #include "vrfutil/railSegment.h"
00023 
00024 class DtRailPathPlanner;
00025 class DtPathMetric;
00026 class DtRailPathMetric;
00027 class DtRailPathControllerPSR;
00028 class DtRailPathControllerDescriptor;
00029 class DtSettingsObject;
00030 class DtBoolSetting;
00031 
00065 #include "vrfmodel/vrfmodelDefines.h"
00066 class DT_DLL_vrfmodel DtRailPathController : public DtSingleTaskControllerComponent
00067 {
00068 private:
00070    DtRailPathController();
00072    DtRailPathController(const DtRailPathController& orig);
00074    DtRailPathController& operator=(const DtRailPathController& orig);
00075 
00076 public:
00077 
00080    DtRailPathController(const DtString& name, 
00081       DtVrfObject* owner,
00082       DtSimManager* simManager, 
00083       DtComponentDescriptor* desc = NULL,
00084       DtReaderWriterRegistry* parentRegistry = NULL);
00085 
00086    virtual ~DtRailPathController();
00087 
00089    virtual bool init();
00090 
00096    virtual bool createPSR();
00097 
00100    virtual DtString type() const;
00101 
00103    virtual void registerTaskMsgCallbacks();
00104 
00106    static void settingConsumerCallback( const DtSettingsObject* settingsObject, void* usr);
00107 
00108    static void plannedMoveToCallback(DtSimMessage * msg, void * usr);
00109 
00110    virtual void processPlannedMoveToTask(DtSimMessage * msg);
00111 
00114    static void taskCompleteReportCallback(DtSimMessage* msg, void* usr);
00115 
00116    virtual void processTaskCompleteReport(DtSimMessage* msg);
00117 
00118    static void destinationChangedCallback(DtVrfObject* obj, void* usrData);
00119 
00124    virtual void processDestinationChanged();
00125 
00128 
00129    static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr);
00130    virtual void processObjectAboutToBeRemoved(DtVrfObject* obj);
00132 
00134    static void setLocationCallback(DtSimMessage* msg, void* usr);
00135 
00140    virtual void processSetLocation(DtSimMessage* msg);
00141 
00143    virtual void tick();
00144 
00145 protected:
00147    virtual void processSetting( const DtBoolSetting* setting);
00148 
00149    virtual bool drivingOnLeftEnabled() const;
00150 
00153    virtual void startPlannedMoveTo(const DtString& objectName);
00154 
00157    virtual void startPlannedMoveTo(const DtVector& localDestination);
00158 
00159    virtual void moveToRailEntry(DtRailSegmentList* rails,const DtVector& entryPt);
00160 
00162    virtual void directMove();
00163 
00167    virtual void registerDestinationChangedCallback();
00168 
00171    virtual void unregisterDestinationChangedCallback();
00172 
00176    virtual DtVrfObject* publishDebugPath();
00177 
00180    virtual void removeDebugPath();
00181 
00183    virtual bool makePath(const DtVector& start, const DtVector& end);
00184 
00187    virtual bool destinationValid(DtVector& localDest);
00188 
00192    virtual void clearTask();
00193 
00195    virtual DtPathMetric* createPathMetric();
00196 
00197 public:
00198 
00202    static DtSimComponent * creator(const DtString& name, 
00203       DtVrfObject* owner,
00204       DtSimManager* simManager, 
00205       DtComponentDescriptor* desc = 0,
00206       DtReaderWriterRegistry* parentRegistry = 0);
00207 
00208 protected:
00211    DtRailPathPlanner* myPathPlanner;
00212 
00215    DtRailPathControllerPSR* myProcessState;
00216    //Keep track of which subtask we're responsible for
00217    int   mySubTaskId;
00218 
00219    const DtRailPathControllerDescriptor* myPathDescriptor;
00220    bool myDestinationChangedCallbackRegistered; 
00221 
00223    DtVector myStartPoint; 
00225    DtVector myEndPoint; 
00226    DtRailPathMetric* myPathMetric;
00227    bool myDrivingOnLeftEnabled;
00228    bool myFirstTick;
00229 };
00230 

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)