![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: warheadDetAct.h,v $ $Revision: 1.18 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 00016 #ifndef DtWarheadDetonationActuator_H_ 00017 #define DtWarheadDetonationActuator_H_ 00018 00019 #include "vrfobjcore/actCmpnt.h" 00020 #include <vl/detonateInter.h> 00021 #include <vl/eventId.h> 00022 00023 #include <vl/objectId.h> 00024 00025 class Dt3dBoundingVolume; 00026 class DtWarheadDetonationActuatorPSR; 00027 class DtWarheadDetonationActuatorDescriptor; 00028 class DtSimMessage; 00029 class DtBooleanInputPort; 00030 00031 00052 #include "vrfmodel/vrfmodelDefines.h" 00053 class DT_DLL_vrfmodel DtWarheadDetonationActuator : public DtActuatorComponent 00054 { 00055 00056 public: 00057 00060 DtWarheadDetonationActuator(const DtString& name, 00061 DtVrfObject* owner, 00062 DtSimManager* simManager, 00063 DtComponentDescriptor* desc = 0, 00064 DtReaderWriterRegistry* parentRegistry = 0); 00065 00067 virtual ~DtWarheadDetonationActuator(); 00068 00070 virtual bool init(); 00071 00073 virtual bool registerRadioMessageCallbacks(); 00074 00080 virtual bool createPSR(); 00081 00083 virtual void setComponentDescriptor(DtComponentDescriptor *componentDescriptor); 00084 00087 virtual DtString type() const; 00088 00091 virtual void tick(); 00092 00093 protected: 00094 00096 virtual bool createPorts(); 00097 00101 virtual bool checkArmed(); 00102 00104 virtual bool checkTrigger(); 00105 00110 virtual bool checkProximityDetonate(); 00111 00113 virtual void checkMissileDetonation(); 00114 00130 virtual DtVrfObject * detectCollision(double& distToImpactSqrd, 00131 DtVector& detonLocationOut); 00132 00144 virtual bool checkEntityForCollision(DtVrfObject * collidee, 00145 const DtVector& missilePath, 00146 const DtVector& missileBoxCenter, 00147 DtVector& detonLocationOut, 00148 double& distToImpactSqrd); 00149 00168 virtual bool checkForGroundImpact(double& distToImpactSqrd, 00169 DtVector& impactPoint, 00170 DtDetonationResult& result); 00171 00176 virtual void sendDetonation(DtVrfObject *impactedEntity, 00177 const DtVector& detonLocation); 00178 00182 virtual void sendDetonation(DtDetonationResult result, 00183 const DtVector& collisionPt); 00184 00188 virtual void destroyAndRemoveEntity(); 00189 00190 public: 00192 static void setWarheadInfoCallback(DtSimMessage* msg, void* usr); 00193 00196 virtual void processWarheadInfoCallback(DtSimMessage* msg); 00197 00201 static DtSimComponent * creator(const DtString& name, 00202 DtVrfObject* owner, 00203 DtSimManager* simManager, 00204 DtComponentDescriptor* desc = 0, 00205 DtReaderWriterRegistry* parentRegistry = 0); 00206 00207 private: 00210 DtWarheadDetonationActuator(); 00211 00213 DtWarheadDetonationActuator(const DtWarheadDetonationActuator & orig); 00214 00216 const DtWarheadDetonationActuator & operator=( 00217 const DtWarheadDetonationActuator & orig); 00218 00219 protected: 00220 00225 DtBooleanInputPort * myTriggerInputPort; 00226 00227 DtVrfObjectStateRepository *myStateRep; 00228 Dt3dBoundingVolume *myCollisionBV; 00229 DtVector myLastPosition; 00230 bool myStartPositionInited; 00231 00234 DtWarheadDetonationActuatorPSR* myProcessState; 00235 00236 DtWarheadDetonationActuatorDescriptor* myWarheadDescriptor; 00237 DtEventId myEventId; 00240 DtVrfObject* myTargetObject; 00241 00245 bool myNeedToDisplayTargetNotFoundWarning; 00248 bool myAmMissile; 00249 }; 00250 00251 #endif 00252 00253