VR-Forces 4.0.4 Class Documentation
include/bhaveSim/kynapseCtrl.h
Go to the documentation of this file.
00001 
00002 /*******************************************************************************
00003 ** Copyright (c) 2009 MAK Technologies, Inc.
00004 ** All rights reserved.
00005 *******************************************************************************/
00006 
00007 #pragma once
00008 
00009 #include <vrfobjcore/singleTaskControllerComponent.h>
00010 #include <vrftasks/userTask.h>
00011 #include <vrfobjcore/entityTargetInformation.h>
00012 
00013 #include <bhaveSim/bhaveSimDefines.h>
00014 #include <kyruntime.h>
00015 
00016 #define KYCRTL_PUBLISH_ROUTE_REFRESH_RATE 10 //debug route will be checked every 10 ticks
00017 
00018 class DtAnalogOutputPort;
00019 class DtBooleanOutputPort;
00020 class DtConstrainedIntegerOutputPort;
00021 class DtConstrainedAnalogOutputPort;
00022 class DtOutputPortGroup;
00023 class DtGroundVehicleStateRepository;
00024 class DtScenario;
00025 class DtAnalogOutputPort;
00026 class DtAnalogOutputPort;
00027 class DtOutputPortGroup;
00028 class DtSensorContactListInputPort;
00029 class DtSensorContactInfoList;
00030 class DtVrfObjectMessage;
00031 
00032 
00033 namespace BHAVE
00034 {
00035    class KynapseDescriptor;
00036    class DtKynapsePSR;
00037    class DtVrfEntityBot;
00038 
00040 const char DtKynapseControllerType[] = "kynapse-controller";
00041 
00043 static void setLocationRequestCallack(DtSimMessage * msg, void * usrData);
00044 
00050 class DT_DLL_bhaveSim DtKynapseController : public DtSingleTaskControllerComponent
00051 {
00052 public:
00053 
00055    DtKynapseController(const DtString & name, DtVrfObject* owner, 
00056       DtSimManager * simManager, DtComponentDescriptor* desc = NULL,
00057       DtReaderWriterRegistry * parentRegistry = 0);
00058    
00060    virtual ~DtKynapseController();
00061    
00063    DtKynapseController(const DtKynapseController& orig);
00064    
00066    DtKynapseController& operator=(const DtKynapseController& orig);
00067 
00069    virtual bool init();
00070    
00072    virtual DtString type() const;
00073 
00075    virtual void setComponentDescriptor(DtComponentDescriptor* descriptor);
00076 
00078    static DtSimComponent* creator(const DtString& name, 
00079       DtVrfObject* owner, DtSimManager* simManager, DtComponentDescriptor* desc,
00080       DtReaderWriterRegistry* parentRegistry);
00081 
00083 
00085    virtual void registerTaskMsgCallbacks();
00087 
00089    virtual void unregisterTaskMsgCallbacks();
00090    
00094    static void userTaskCallback(DtSimMessage * msg, void * usr);
00095    
00100    virtual void processUserTask();
00101    
00103    DtVrfEntityBot* kynapseEntity();
00104 
00106    const DtSensorContactInfoList& getSensorContacts();
00107 
00108 
00111    static void setBhaveMovementModeCallback(DtSimMessage* msg, void* usr);
00112 
00115    virtual DtBoolean checkTick();
00116 
00118    virtual void NotifyTaskCompleted(bool success = true);
00119 
00121    virtual void clearTask();
00122 
00124    virtual void tick();
00125 
00127    virtual void firstTick();
00128 
00130    virtual void processSetBhaveMovementMode(DtSimMessage* msg);
00131 
00133    void drawDebugRoutes();
00134 
00135 protected: 
00136 
00138    virtual DtBoolean createPorts();
00139    virtual DtBoolean createPortGroups();
00140 
00141    virtual bool createKynapsePSR();
00142 
00143    static void aboutToSaveCheckpointCallback(DtScenario& scn, void* usr);
00146    virtual void processAboutToSaveCheckpoint();
00147 
00148    static void postLoadCheckpointCallback(const DtScenario& scn, void* usr);
00149    static void postRewindCallback(void* usr);
00152    virtual void processPostLoadCheckpoint();
00153 
00154    static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
00155    virtual void processObjectAboutToBeRemoved(DtVrfObject* object);
00156 
00158    static void objectDestroyedCallback(DtVrfObject* obj, DtVrfObjectPredicateEvaluator* eval, void* usr);
00159    virtual void processObjectDestroyed(DtVrfObject* obj);
00160 
00164    virtual bool updateDebugRoute();
00165    
00166    
00168    virtual void clearDebugRoute();
00169 
00171    virtual void setBhaveMovementMode(const DtString & movementMode);
00172 
00175    virtual bool IsExecutingBHAVETask();
00176 
00180    virtual DtBoolean applyKynapseRecommendations();
00181 
00183    virtual DtBoolean deactivateOutputControl() {return false;};
00184 
00185 protected: 
00186 
00188    DtKynapsePSR* myKynapsePSR;
00189 
00190    bool myFirstTick;
00191    
00193    const KynapseDescriptor* myKynapseDescriptor;
00194 
00196    DtVrfEntityBot* myKynapseEntity;
00197 
00198    bool pathFindingAccidentAlreadyReported;
00199    DtUserTask *myUserTask;
00200 
00201    struct VRFDebugInfo {
00202       int skipUpdateTickCount;
00203       bool draw;
00205       bool needsRedraw;
00207       std::list<DtVector> localVRFPath;
00208    } debugView;
00209 };
00210 
00211 } //namespace BHAVE
00212 
00213 

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)