![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: msslCollAct.h,v $ $Revision: 1.23 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 00016 #ifndef DtMissileCollisionActuator_H_ 00017 #define DtMissileCollisionActuator_H_ 00018 00019 #include "vrfobjcore/actCmpnt.h" 00020 #include <vl/detonateInter.h> 00021 00022 #include <vl/objectId.h> 00023 00024 class DtMissileStateRepository; 00025 00026 class Dt3dBoundingVolume; 00027 00028 00037 #include "vrfmodel/vrfmodelDefines.h" 00038 class DT_DLL_vrfmodel DtMissileCollisionActuator : public DtActuatorComponent 00039 { 00040 00041 public: 00042 00045 DtMissileCollisionActuator(const DtString& name, 00046 DtVrfObject* owner, 00047 DtSimManager* simManager, 00048 DtComponentDescriptor* desc = 0, 00049 DtReaderWriterRegistry* parentRegistry = 0); 00050 00052 virtual ~DtMissileCollisionActuator(); 00053 00057 virtual bool init(); 00058 00061 virtual DtString type() const; 00062 00065 virtual void tick(); 00066 00082 virtual DtVrfObject * detectCollision(double& distToImpactSqrd, 00083 DtVector& detonLocationOut); 00084 00096 virtual bool checkEntityForCollision(DtVrfObject * collidee, 00097 const DtVector& missilePath, 00098 const DtVector& missileBoxCenter, 00099 DtVector& detonLocationOut, 00100 double& distToImpactSqrd); 00101 00120 virtual bool checkForGroundImpact(double& distToImpactSqrd, 00121 DtVector& impactPoint, 00122 DtDetonationResult& result); 00123 00128 virtual void sendDetonation(DtVrfObject *impactedEntity, 00129 const DtVector& detonLocation); 00130 00134 virtual void sendDetonation(DtDetonationResult result, 00135 const DtVector& collisionPt); 00136 00140 static DtSimComponent * creator(const DtString& name, 00141 DtVrfObject* owner, 00142 DtSimManager* simManager, 00143 DtComponentDescriptor* desc = 0, 00144 DtReaderWriterRegistry* parentRegistry = 0); 00145 00146 protected: 00149 DtMissileCollisionActuator(); 00150 00152 DtMissileCollisionActuator(const DtMissileCollisionActuator & orig); 00153 00155 const DtMissileCollisionActuator & operator=( 00156 const DtMissileCollisionActuator & orig); 00157 00158 protected: 00159 DtMissileStateRepository *myMissileState; 00160 Dt3dBoundingVolume *myCollisionBV; 00161 DtVector myLastPosition; 00162 DtObjectId myObjectId; 00163 bool myStartPositionInited; 00164 00165 }; 00166 00167 #endif 00168 00169