VR-Forces 4.0.4 Class Documentation
include/vrfmodel/diGuyController.h
Go to the documentation of this file.
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 

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)