VR-Forces 4.0.4 Class Documentation
include/vrfmodel/gndMvToDestinationCntlr.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00011 
00012 
00013 #pragma once
00014 
00015 
00016 #include "vrfmodel/gndAutoCntlr.h"
00017 #include <matrix/vlVector.h>
00018 #include "vrfobjcore/automotivePSR.h"
00019 
00020 class DtString;
00021 class DtSimManager;
00022 class DtSimMessage;
00023 class DtGroundMoveToDescriptor;
00024 class DtRangeAndDirectionNetworkSegmentMetric;
00025 class DtCollisionInputPort;
00026 class DtInputPortGroup;
00027 
00042 #include "vrfmodel/vrfmodelDefines.h"
00043 class DT_DLL_vrfmodel DtGroundMoveToDestinationControllerComponent : public DtGroundAutoControllerComponent
00044 {
00045 public:
00046 
00049    DtGroundMoveToDestinationControllerComponent(const DtString& name, 
00050       DtVrfObject* owner,
00051       DtSimManager* simManager, 
00052       DtComponentDescriptor* desc = 0,
00053       DtReaderWriterRegistry* parentRegistry = 0);
00054 
00056    virtual ~DtGroundMoveToDestinationControllerComponent();
00057 
00059    virtual bool init();
00060 
00063    virtual void setComponentDescriptor(DtComponentDescriptor *componentDescriptor);
00064 
00070    virtual void tick();
00071 
00074    virtual DtString type() const;
00075 
00077    static void setLocationCallback(DtSimMessage* msg, void* usr);
00080    virtual void processSetLocation(DtSimMessage* msg);
00081    
00083    static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
00087    virtual void processModifyVrfObject(DtSimMessage* msg);
00088 
00090    static void setStayInLaneCallback(DtSimMessage* msg, void* usr);
00094    virtual void processSetStayInLane(DtSimMessage* msg);
00095 
00099    static DtSimComponent * creator(const DtString& name, 
00100       DtVrfObject* owner,
00101       DtSimManager* simManager, 
00102       DtComponentDescriptor* desc = 0,
00103       DtReaderWriterRegistry* parentRegistry = 0);
00104 
00106    virtual void registerTaskMsgCallbacks();
00107 
00116    virtual bool getDestination(DtVector & destination);
00117 
00122    virtual const DtVector& destinationVector() const;
00123 
00130    virtual double findDesiredSpeed();
00131 
00140    virtual double findDesiredHeading();
00141 
00148    virtual DtAutoTransmissionGearEnum determineGearSetting();
00149 
00160    virtual bool nearDestination();
00161 
00170    virtual bool atDestination();
00171 
00181    virtual bool passedDestination();
00182 
00184    virtual void stop();
00185 
00189    virtual bool findUsableRoad(double targetHeading);
00190 
00193    virtual double calculateSteeringForRoad(double currentHeading);
00194 
00197    virtual void doMoving();
00198 
00199 protected:
00203    virtual bool setupDestination();
00204 
00213    virtual void setupDestinationVector() const;
00214 
00216    virtual void invalidateDestinationVector() const;
00217 
00219    virtual double desiredHeadingFromDestination(const DtDcm& localToTopoDcm);
00220 
00222    virtual void moveToDestination();
00223    virtual double distanceToDestination() const;
00224 
00228    virtual void setupRoadMetric();
00229 
00233    virtual bool stayInLaneEnabled();
00234 
00238    virtual bool decideToGiveUpTask() const;
00239 
00240    virtual bool createPortGroups();
00241    virtual bool createPorts();
00242 
00245    virtual void setDestinationIsInsideObstruction(bool yesNo);
00246 
00249    virtual bool destinationIsInsideObstruction() const;
00250 
00251    virtual double sideOfRoad();
00252 
00253 private:
00256    DtGroundMoveToDestinationControllerComponent();
00257 
00259    DtGroundMoveToDestinationControllerComponent(const DtGroundMoveToDestinationControllerComponent &orig);
00260 
00262    const DtGroundMoveToDestinationControllerComponent & operator=(const 
00263       DtGroundMoveToDestinationControllerComponent & orig);
00264 
00265 protected:
00266 
00267    double            myDistanceSquared;
00268 
00269    DtVector          myLocalDestination;
00270    DtVector          myWorldDestination;
00271 
00272    mutable DtVector  myDestinationVector;
00273    mutable bool      myDestinationVectorIsValid;
00274 
00275    double            myDesiredSpeed;
00276    double            myCurrentSpeed;
00277 
00278    bool              myAtDestination;
00279    bool              myNearDestination;
00280    bool              myPassedDestination;
00281 
00282    const DtGroundMoveToDescriptor* myMoveToDescriptor;
00284    DtRangeAndDirectionNetworkSegmentMetric* myRoadMetric;
00285 
00288 
00294    DtCollisionInputPort*   myCollisionAvoidancePort;
00295 
00298    DtInputPortGroup*       myCollisionAvoidancePortGroup;
00299 
00301 
00302    bool myDestinationIsInsideObstruction;
00303 };
00304 
00305 

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)