![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: rotWngColAvod.h,v $ $Revision: 1.28 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtRotaryWingCollisionAvoidanceController_H_ 00016 #define DtRotaryWingCollisionAvoidanceController_H_ 00017 00018 #include "vrfmodel/rotWngMvToCtl.h" 00019 #include <vl/hostStructs.h> 00020 #include "vrfobjcore/filteredObjList.h" 00021 00022 #include <vl/objectId.h> 00023 00024 class DtRotaryWingColAvoidanceControllerDescriptor; 00025 00030 #include "vrfmodel/vrfmodelDefines.h" 00031 class DT_DLL_vrfmodel DtRotaryWingCollisionAvoidanceController : public DtRotaryWingMoveToControllerComponent 00032 { 00033 00034 public: 00035 00038 DtRotaryWingCollisionAvoidanceController(const DtString& name, 00039 DtVrfObject* owner, 00040 DtSimManager* simManager, 00041 DtComponentDescriptor* desc = 0, 00042 DtReaderWriterRegistry* parentRegistry = 0); 00043 00045 virtual ~DtRotaryWingCollisionAvoidanceController(); 00046 virtual bool init(); 00047 00049 virtual void tick(); 00050 00052 virtual DtVrfObject * detectCollision(); 00053 00054 virtual bool checkEntityForCollision(DtVrfObject * collidee); 00055 00057 virtual void avoidCollision(DtVrfObject * collidee); 00058 00060 virtual void processExistingCollision(); 00061 00064 virtual DtString type() const; 00065 00069 static DtSimComponent * creator(const DtString& name, 00070 DtVrfObject* owner, 00071 DtSimManager* simManager, 00072 DtComponentDescriptor* desc = 0, 00073 DtReaderWriterRegistry* parentRegistry = 0); 00074 00076 virtual bool distCleared(); 00077 00080 virtual double timeToMinimumDistance(const DtVector & deltaVel, 00081 const DtVector & deltaPos) const; 00082 00083 virtual void registerTaskMsgCallbacks(); 00084 00086 virtual void clearCollision(); 00087 00088 protected: 00089 00090 00096 00098 DtRotaryWingCollisionAvoidanceController(); 00099 00101 DtRotaryWingCollisionAvoidanceController 00102 (const DtRotaryWingCollisionAvoidanceController& orig); 00103 00105 DtRotaryWingCollisionAvoidanceController& operator= 00106 (const DtRotaryWingCollisionAvoidanceController& orig); 00107 00108 00110 virtual void checkMinDiveAltitude(); 00111 00114 virtual void pilotProperties(); 00115 00116 protected: 00118 DtManagedObjectListConstPtr myPhysicalEntityList; 00119 00121 DtVector myEvadeDirection; 00122 DtReal myRelativeVelMag; 00123 DtReal myCurrentDistanceSq; 00125 DtVector myClearingPt; 00126 00127 DtObjectId myObjectId; 00128 DtObjectId myCollidee; 00129 bool myHavePortGroup; 00130 bool myIsColliding; 00131 bool myIsClearing; 00132 bool myTooLow; 00133 DtRotaryWingColAvoidanceControllerDescriptor * 00134 myAvoidanceControllerDescriptor; 00135 }; 00136 00137 #endif 00138