![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 00002 /******************************************************************************* 00003 ** Copyright (c) 2011 MAK Technologies, Inc. 00004 ** All rights reserved. 00005 *******************************************************************************/ 00006 00007 00008 #pragma once 00009 00010 #pragma warning (disable : 4284) 00011 00012 #include <bhaveSim/bhaveSimDefines.h> 00013 #include <vrfobjcore/vrfKinState.h> 00014 #include <matrix/3dBoundingVolume.h> 00015 00016 #include <bhaveSim/vrfTaskAgent.h> 00017 #include <bhaveSim/preferredTerraintypeBodyAttribute.h> 00018 #include <bhaveSim/preferredTerraintypeConstraint.h> 00019 00020 #include <kyruntime.h> 00021 00022 class DtVrfObject; 00023 class DtObjectType; 00024 class DtVrfMovingObjectStateRepository; 00025 00026 namespace BHAVE 00027 { 00028 class DtKynapseController; 00029 class DtVrfTaskAgent; 00030 00032 class DT_DLL_bhaveSim DtVrfEntityBot : public Kaim::Bot 00033 { 00034 public: 00035 KY_DECLARE_BOT( DtVrfEntityBot ) 00036 00037 DtVrfEntityBot( ); 00038 virtual ~DtVrfEntityBot(); 00039 00041 virtual KyResult OnInitialize(); 00042 00045 virtual void initializeModifiers(Kaim::Modifiers& mod); 00046 00049 virtual void initializePathfinderOptions(); 00050 00052 virtual void setTaskAgent(DtVrfTaskAgent*); 00053 00054 inline DtVrfTaskAgent* getTaskAgent() const { return myTaskAgent; } 00055 00057 virtual void setMovementMode(const char *); 00058 virtual const char * movementMode(); 00059 00061 virtual bool isExecutingTask(); 00062 00064 virtual bool usingRoadMovement(); 00065 00067 virtual void Think(); 00068 00070 virtual void OnClear(); 00071 00073 DtVrfObject* GetVrfObject() const { return static_cast<DtVrfObject*>(m_body.GetUserData());} 00074 00076 virtual void updateFromVrf(); 00077 00078 //The following are helper classes which can be freely calculated by other functions. 00079 00081 virtual bool objectIsHostile(DtVrfObject* otherObject); 00082 00084 virtual void onTeleport(); 00085 00087 inline double orderedSpeed() const { return myOrderedSpeed; } 00088 00090 virtual void setDistanceToTarget(double dd); 00091 inline double distanceToTarget() const { return myDistanceToTarget; } 00092 00094 Kaim::Database* pathdataDatabase() const { return myDb; } 00095 00098 virtual double pathDataHeight() const {return 2.0;} 00099 00100 public: 00103 static KyBool embarkedEntityFiltering(Kaim::Body& thisEntity, Kaim::Body& targetEntity); 00104 static KyBool embarkedEntityFiltering(Kaim::Bot& thisEntity, Kaim::Bot& targetEntity); 00105 00106 protected: 00107 00109 virtual void updateTorsoOrientation( DtVrfMovingObjectStateRepository* movingSR, Kaim::Body &body ); 00110 virtual void updateOrientation( DtVrfMovingObjectStateRepository* movingSR, Kaim::Body &body ); 00111 virtual void updatePosition( DtVrfMovingObjectStateRepository* movingSR, const Dt3dBoundingVolume &boundingVolume, Kaim::Body &body ); 00112 00113 protected: 00114 00116 Kaim::BodyMaxSpeed * myMaxSpeedAttribute; 00117 Kaim::BodyTorsoOrientation * myTorsoOrientationAttribute; 00118 DtPreferredTerrainTypeBodyAttribute* myPreferredTerrainAttribute; 00119 00121 double myOrderedSpeed; 00122 double myDistanceToTarget; 00123 00125 Kaim::Database* myDb; 00127 DtVrfTaskAgent* myTaskAgent; 00128 00129 DtString myMovementMode; 00130 DtString myContextName; 00131 00132 //Modifier for goal 00133 DtPreferredTerrainTypeConstraint myTerrainTypeConstraint; 00134 }; 00135 00136 } //namespace BHAVE 00137