![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: diGuyController.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 ** Created: 4/3/08 MEM 00008 *******************************************************************************/ 00009 00012 00015 00016 #ifndef diGuyController_H_ 00017 #define diGuyController_H_ 00018 00019 00020 #include "vrfobjcore/singleTaskControllerComponent.h" 00021 #include "vrfutil/vlClock.h" 00022 #include <vl/hostStructs.h> 00023 #include "vrfobjcore/boolIOPort.h" 00024 00025 #include "vrfutil/lifeformStaticPostures.h" 00026 00027 class DtSimManager; 00028 class DtSimMessage; 00029 class DtDIGuyCharacterData; 00030 class DtDIGuyAnimation; 00031 class DtDIGuyControllerPSR; 00032 class DtVrfMovingObjectStateRepository; 00033 class DtBooleanOutputPort; 00034 class DtCollisionInputPort; 00035 class DtInputPortGroup; 00036 class DtAnalogInputPort; 00037 class DtBooleanInputPort; 00038 00039 enum DtDIGuyDirectionType 00040 { 00041 DtDIGuyDirectionNone = 0, 00042 DtDIGuyDirectionFoward, 00043 DtDIGuyDirectionBackward, 00044 DtDIGuyDirectionLeft, 00045 DtDIGuyDirectionRight, 00046 DtDIGuyDirectionTurnLeft8th, 00047 DtDIGuyDirectionTurnRight8th 00048 }; 00049 00061 #include "vrfmodel/vrfmodelDefines.h" 00062 class DT_DLL_vrfmodel DtDIGuyController : public DtSingleTaskControllerComponent 00063 { 00064 00065 public: 00066 00069 DtDIGuyController(const DtString& name, 00070 DtVrfObject* owner, 00071 DtSimManager* simManager, 00072 DtComponentDescriptor* desc = 0, 00073 DtReaderWriterRegistry* parentRegistry = 0); 00074 00076 virtual ~DtDIGuyController(); 00077 00080 virtual DtString type() const; 00081 00084 virtual bool init(); 00085 00091 virtual bool createPSR(); 00092 00094 virtual void tick(); 00095 00099 virtual void taskedTick(DtTime & dT); 00100 00103 virtual bool intrinsicOverride(); 00104 00108 virtual bool intrinsicTick(DtLifeformStaticPosture post, 00109 double speed,DtWeaponState weapon, DtString & demeanor); 00110 00112 virtual bool tickWhileDestroyed() const; 00113 00114 virtual DtBooleanOutputPort * movementDisablePort() const; 00115 00116 virtual void setCurrentAnimation(DtDIGuyAnimation * animation); 00117 00120 virtual void sendSetPosture(DtLifeformState post); 00121 00123 static void setAppearanceCallback(DtSimMessage * msg, void * usr); 00124 virtual void processSetCharacterAppearance(DtSimMessage* msg); 00125 00126 static void setRestoreCallback(DtSimMessage * msg, void * usrData); 00127 virtual void processSetRestore(DtSimMessage * msg); 00128 00129 static void animationTaskCallback(DtSimMessage * msg, void * usrData); 00130 virtual void processAnimationTask(DtSimMessage * msg); 00131 00134 virtual void clearTask(); 00135 virtual void taskComplete(bool success = true); 00136 virtual void reset(); 00137 00138 virtual void updateAnimationState(DtLifeformStaticPosture post, 00139 double speed,DtWeaponState weapon, const DtString & demeanor); 00140 00142 virtual DtDIGuyDirectionType directionStringToEnum(const DtString & direction); 00143 00147 static DtSimComponent * creator(const DtString& name, 00148 DtVrfObject* owner, 00149 DtSimManager* simManager, 00150 DtComponentDescriptor* desc = 0, 00151 DtReaderWriterRegistry* parentRegistry = 0); 00152 00153 protected: 00154 00156 virtual void registerRadioMessageCallbacks(); 00158 virtual void registerTaskMsgCallbacks(); 00159 00160 protected: 00162 DtDIGuyController(); 00163 00165 DtDIGuyController(const DtDIGuyController & orig); 00166 00168 const DtDIGuyController & operator=(const DtDIGuyController & 00169 orig); 00170 00172 virtual bool createPorts(); 00173 00176 virtual bool createCollisionPort(); 00177 virtual bool createAimDirectionPort(); 00178 virtual bool createMovementDisablePort(); 00179 00180 virtual bool determineDemeanor(DtWeaponState weapon, DtString & demeanor); 00181 00182 virtual void determineDirection(); 00183 00184 virtual void updatePosition(const DtTime & dT,DtTaitBryan & localOrientation); 00185 00186 protected: 00187 00188 //const DtDiGuyControllerDescriptor* myDiGuyDescriptor; 00189 DtDIGuyCharacterData * myCharacterData; 00190 DtVrfMovingObjectStateRepository * myLocalState; 00191 DtDIGuyAnimation * myDefaultAnimation; 00192 DtLifeformStaticPosture myDefaultAnimationPosture; 00193 bool myTaskInterrupted; 00194 DtDIGuyAnimation * myTaskedAnimation; 00195 DtTaitBryan myTaskedOrientation; 00196 00197 DtDIGuyAnimation * myCurrentAnimation; 00198 DtWeaponState myCurrentAnimationWeaponState; 00199 DtLifeformStaticPosture myCurrentAnimationPosture; 00200 double myCurrentAnimationSpeed; 00201 00206 double myAnimationDuration; 00207 DtTime myTimeElapsed; 00208 bool myAmRotating; 00209 double myDirectionOfMovement; 00210 00213 DtDIGuyControllerPSR * myProcessState; 00214 00221 DtBooleanInputPort* myCollisionPort; 00222 00229 DtAnalogInputPort* myAimDirectionPort; 00230 00240 DtBooleanOutputPort* myMovementDisablePort; 00241 00242 bool myTickWhileDead; 00243 bool myFirstTick; 00244 bool myNeedUpdate; 00245 bool myDisableMovement; 00246 }; 00247 00248 #endif 00249 00250 00251 00252