VR-Forces 4.0.4 Class Documentation
include/vrfmodel/convoyTaskController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: convoyTaskController.h,v $ $Revision: 1.0 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #ifndef convoyTaskController_H_
00016 #define convoyTaskController_H_
00017 
00018 #include "vrfmodel/vrfmodelDefines.h"
00019 #include "vrfobjcore/convoyPSR.h"
00020 #include "vrfobjcore/singleTaskControllerComponent.h"
00021 #include "vrfobjparam/convoyDescriptor.h"
00022 #include "vrftasks/setDataReq.h"
00023 #include "vrfutil/rwRailSegment.h"
00024 #include "vrfutil/rwReal.h"
00025 #include "vrfutil/rwTemplatedList.h"
00026 #include "terrainCS/coordSystem.h"
00027 
00028 class DtVrfObjectMessage;
00029 
00047 class DT_DLL_vrfmodel DtConvoyTaskController : public DtSingleTaskControllerComponent
00048 {
00049 public:
00052    DtConvoyTaskController(const DtString& name, 
00053       DtVrfObject* owner,
00054       DtSimManager* simManager, 
00055       DtComponentDescriptor* desc = 0,
00056       DtReaderWriterRegistry* parentRegistry = 0);
00057 
00059    virtual ~DtConvoyTaskController();
00060 
00062    virtual bool init();
00063 
00066    virtual DtString type() const;
00067 
00069    virtual void clearTask();
00070  
00072    virtual void registerTaskMsgCallbacks();
00073 
00078    static void convoyTaskCallback(DtSimMessage * msg, void * usr);
00079 
00083    static void taskCompleteReportCallback(const DtVrfObjectMessage* msg, void * usr);
00084 
00086    static void destinationChangedCallback(DtVrfObject* obj, void* usr);
00087 
00089    static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr);
00090 
00094    static DtSimComponent * creator(const DtString& name, 
00095       DtVrfObject* owner,
00096       DtSimManager* simManager, 
00097       DtComponentDescriptor* desc = 0,
00098       DtReaderWriterRegistry* parentRegistry = 0);
00099 
00100    virtual void tick();
00101 
00102    virtual bool createPSR();
00103 
00104 protected:
00108    void onObjectAboutToBeRemoved(DtVrfObject* obj);
00109 
00113    virtual void onModifyVrfObject(DtVrfObject* obj);
00114 
00119    virtual void onConvoyTask(DtSimMessage * msg);
00120 
00123    virtual void onTaskComplete(const DtVrfObjectMessage* msg);
00124 
00129    virtual void sendTaskToSubordinate(const DtSimTask& task, 
00130       const DtString& subordinateObjectName);
00131 
00136    virtual void sendSetToSubordinate(DtSetDataRequest& request,
00137       const DtString& subordinateObjectName);
00138 
00145    virtual bool setupTask(const DtVrfObject* aggregate, const DtVrfObject* destination, 
00146       bool pathPlan, const Coordinate_System* coordSys);
00147 
00155    virtual DtVector findAssemblyPoint(const DtVrfObject* aggregate, const DtVector& destination, 
00156       bool haveRails, const Coordinate_System* coordSys);
00157 
00164    virtual DtRwRailSegment* createEntrySegment(const DtVrfObject* entity, 
00165       const DtVector& assemblyPoint, const Coordinate_System* coordSys) const;
00166 
00173    virtual bool setupSubordinates(const DtVrfObject* aggregate, bool clearSubs, bool leaderSet = false);
00174 
00179    virtual void setupLeadOnDistance(int numberOfEntities, float distanceBetween);
00180 
00188    virtual bool createRailPath(const DtVrfObject* leadEntity, const DtVrfObject* destination,
00189       bool pathPlan, const Coordinate_System* coordSys);
00190 
00198    virtual bool areSeparationDistancesWithinRange(const DtConvoyPSR::DtRwSubordinateList& subordinates, 
00199       const float distance, const float tolerance, const Coordinate_System* coordSys);
00200 
00204    virtual void setLeaderSpeed(const float speed);
00205 
00209    virtual void resettingPhaseTick(bool retask = true);
00210 
00213    virtual void startingPhaseTick();
00214 
00218    virtual void assemblingPhaseTick();
00219 
00222    virtual void convoyingPhaseTick();
00223 
00227    virtual void finishingPhaseTick();
00228 
00235    virtual DtVector findIntersectionOfLineAndCircle(const DtVector& centerPoint, 
00236       const DtVector& endPoint, double radius, const Coordinate_System* coordSys) const;
00237 
00245    virtual bool getEntityToPathEntry(const DtVrfObject* entity, const DtVector& assemblyPoint,
00246       const Coordinate_System* coordSys);
00247 
00257    virtual DtRailSegment* findClosestEntryRail(const DtVrfObject* aggregate, 
00258       const double& radius,
00259       DtRailSegmentList* rails,
00260       int& railNumber,
00261       const Coordinate_System* coordSys) const;
00262 
00270    virtual bool isPointWithinRadius(const DtVector& center, double radius, 
00271       const DtVector& point, const Coordinate_System* coordSys) const;
00272 
00280    virtual bool findPointOnRailOutsideSphere(const DtVector& center, const double& radius, 
00281       const DtRailSegment* segment, DtVector& resultPoint, const Coordinate_System* coordSys) const;
00282 
00284    virtual void registerDestinationChangedCallback();
00285    
00287    virtual void unregisterDestinationChangedCallback();
00288 
00297    virtual bool updateConvoySubordinates(DtVrfObject* aggregate,
00298       std::vector<DtString>& tempList, 
00299       bool recursive = false);
00300 
00301    virtual bool isEntityPartOfConvoy(const DtString& name) const;
00302 
00303    virtual bool isEntityIndependentlyTasked(const DtVrfObject* entity) const;
00304 
00305    virtual void setConvoyFollowing();
00306 
00307    virtual void destroyedPhaseTick();
00308 
00309 private:
00310 
00312    DtConvoyTaskController(const DtConvoyTaskController& orig);
00313 
00315    DtConvoyTaskController& operator=(const DtConvoyTaskController& orig);
00316 
00317    const DtConvoyDescriptor* myDescriptor;
00318    DtConvoyPSR* myProcessState;
00319    bool myDestinationChangedCallbackRegistered;
00320 };
00321 
00322 #endif

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)