![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00006 #pragma once 00007 00011 00015 00016 #include <vlutil/vlMachineTypes.h> 00017 #include <vl/detonateInter.h> 00018 00019 #include "vrfobjcore/vrfMvObjSR.h" 00020 #include "vrfutil/simMunition.h" 00021 #include "vrfobjcore/vrfObjMgr.h" 00022 00023 #include <vl/objectId.h> 00024 #include <vl/eventId.h> 00025 00026 class DtMissileParameters; 00027 class DtVector; 00028 class DtVrfObjectManager; 00029 00035 #include "vrfobjcore/vrfobjcoreDefines.h" 00036 class DT_DLL_vrfobjcore DtMissileStateRepository : public DtVrfMovingObjectStateRepository 00037 { 00038 00039 protected: 00040 //default constructor do not use 00041 DtMissileStateRepository(); 00042 00043 public: 00044 00046 DtMissileStateRepository(DtVrfObject* vrfObject, 00047 const DtObjectType& objectType, DtVrfObjectParameters* parameters, 00048 const DtString& rwName = DtString::nullString(), 00049 DtReaderWriterRegistry* parentRegistry = 0); 00050 00052 DtMissileStateRepository(const DtMissileStateRepository 00053 & orig, const DtString& rwName = DtString::nullString(), 00054 DtReaderWriterRegistry* parentRegistry = 0); 00055 00057 const DtMissileStateRepository & operator=(const 00058 DtMissileStateRepository & orig); 00059 00061 virtual ~DtMissileStateRepository(); 00062 00063 virtual DtSimObjectStateRepository* clone( 00064 const DtString& rwName = DtString::nullString(), 00065 DtReaderWriterRegistry* parentRegistry = 0) const; 00066 00067 virtual bool init(); 00068 00070 virtual DtString type() const; 00071 00073 virtual const int vrfMovingObjectStateRepositorySubType() const; 00074 00076 virtual const int missileEntityStateRepositorySubType() const; 00077 00078 00081 virtual void tick(); 00082 00083 virtual bool createParameters(); 00084 00085 virtual void initializeFromParameters(); 00086 00087 virtual const DtMissileParameters * missileParameters() const; 00088 00090 virtual DtReal range() const; 00091 virtual void setRange(const DtReal range); 00092 00094 virtual DtReal maxManeuverGs() const; 00095 virtual void setMaxManeuverGs(const DtReal maxAcceleration); 00096 00098 virtual void setFuzeType(DtDetonatorFuze fuze); 00099 virtual DtDetonatorFuze fuzeType() const; 00100 00102 virtual void setWarheadType(DtWarheadType type); 00103 virtual DtWarheadType warheadType() const; 00104 00106 virtual void setFireAndForget(bool isFireAndForget); 00107 virtual bool fireAndForget() const; 00108 00110 virtual void setAttackerId(const DtObjectId& attackerId); 00111 virtual const DtObjectId& attackerId() const; 00112 00121 virtual DtReal radiusCEP() const; 00122 virtual void setRadiusCEP(const DtReal radiusCEP); 00123 00126 virtual void place(const DtVector& location); 00127 00135 virtual void place(const DtReal heading); 00136 00144 virtual void place(const DtReal heading, const DtReal pitch); 00145 00153 virtual void place(const DtVector& location, const DtReal heading); 00154 00161 virtual void place(const DtVector& location, const DtReal heading, 00162 const DtReal pitch); 00163 00169 virtual void setStartLocalPosition(const DtVector& localPosition); 00170 virtual void setStartLocalVelocity(const DtVector& localVelocity); 00171 virtual void setStartLocalOrientationWrtDatabase( 00172 const DtTaitBryan& localOrientation); 00173 00177 virtual bool setTargetPoint(const DtVector& localTerrainPoint); 00178 virtual bool setTargetEntity(const DtObjectId & id); 00179 00184 virtual void setEventId(const DtEventId& eventId); 00185 virtual const DtEventId& eventId() const; 00186 00194 virtual void setDisconnectedFromLauncher(); 00195 00200 virtual bool missilePassedTarget(double &distSquaredToTargetOut) const; 00201 00203 virtual void missileDetonated(DtDetonationInteraction * detInter); 00204 00205 static void detonationCallback(DtDetonationInteraction * detInter, 00206 void * usr); 00207 00209 virtual DtReal currentPitch() const; 00210 00213 virtual double calcDistanceSquaredToTarget(); 00214 00217 virtual DtReal transitionAngle() const; 00218 virtual void setTransitionAngle(DtReal angle); 00219 00221 virtual DtReal proportionalNavigationGain() const; 00222 virtual void setProportionalNavigationGain(DtReal gain); 00223 00227 virtual void putSelf(FILE *fp, int indentLevel = 0, bool writeUnspecified = false, 00228 const DtFilename& path = DtReaderWriter::appPath()); 00229 virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath, 00230 const DtVariableBindingsList& variableBindings); 00231 00232 static DtVrfObjectStateRepository * creator(const DtString& name, 00233 DtVrfObject* vrfObject, const DtObjectType& objectType, 00234 DtVrfObjectParameters * parameters, 00235 DtReaderWriterRegistry * parentRegistry); 00236 00239 static DtMissileStateRepository* isMissileStateRepository( 00240 DtSimObjectStateRepository* repository); 00241 00242 static const DtMissileStateRepository* isMissileStateRepository( 00243 const DtSimObjectStateRepository* repository); 00244 00250 virtual void setStartLocalOrientation(const DtTaitBryan& 00251 topocentricOrientation); 00252 00253 protected: 00254 00255 DtObjectId myAttackerId; 00256 00257 DtReal myRange; 00258 DtReal myMaxManeuverGs; 00259 DtDetonatorFuze myFuzeType; 00260 DtWarheadType myWarheadType; 00261 bool myFireAndForget; 00262 DtReal myRadiusCEP; 00263 00264 bool myMarkedForRemoval; 00265 00266 DtObjectId *myTargetEntity; 00267 DtVector *myTargetPoint; 00268 00271 DtVector myVectorToTarget; 00272 00273 double myDistanceSquaredToTarget; 00274 double myLastDistanceSquaredToTarget; 00275 00278 static DtVrfObjectManager *myDetCbackRegWithThisEntMgr; 00279 00280 DtReal myTransitionAngle; 00281 DtReal myProportionalNavigationGain; 00282 00283 DtRwString myAttackerName; 00284 DtRwString myTargetEntityName; 00285 00286 DtEventId myEventId; 00287 };