![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: damageAdjudicationActuator.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 00015 #ifndef damageAdjudicationActuator_H_ 00016 #define damageAdjudicationActuator_H_ 00017 00018 #include "vrfobjcore/actCmpnt.h" 00019 00020 #include <geometry/boundingVolumeFace.h> 00021 00022 class DtDetonationContext; 00023 class DtDamageAdjudicationComponentDescriptor; 00024 class DtSimMessage; 00025 class DtSimBaseRadio; 00026 class DtPrbRangeTableEntry; 00027 00044 00063 00064 #include "vrfmodel/vrfmodelDefines.h" 00065 class DT_DLL_vrfmodel DtDamageAdjudicationActuator : public DtActuatorComponent 00066 { 00067 00068 public: 00069 00072 DtDamageAdjudicationActuator(const DtString& name, 00073 DtVrfObject* owner, 00074 DtSimManager* simManager, 00075 DtComponentDescriptor* desc = 0, 00076 DtReaderWriterRegistry* parentRegistry = 0); 00077 00080 virtual ~DtDamageAdjudicationActuator(); 00081 00091 virtual bool init(); 00092 00099 static bool processDirectDetonationCallback(const DtDetonationContext& detonationContext, void* usr); 00100 00107 static bool processCollateralDetonationCallback(const DtDetonationContext& detonationContext, void* usr); 00108 00131 00133 virtual bool adjudicateDirectDamage(const DtDetonationContext& detonationContext); 00134 00136 virtual bool adjudicateCollateralDamage(const DtDetonationContext& detonationContext); 00137 00140 virtual DtString type() const; 00141 00151 virtual void tick(); 00152 00154 static void setDestroyedCallback(DtSimMessage* msg, void* usrData); 00155 00157 static void setRestoredCallback(DtSimMessage* msg, void* usrData); 00158 00162 static DtSimComponent * creator(const DtString& name, 00163 DtVrfObject* owner, 00164 DtSimManager* simManager, 00165 DtComponentDescriptor* desc = 0, 00166 DtReaderWriterRegistry* parentRegistry = 0); 00167 00168 protected: 00169 00172 virtual void getDirectFireSurfaceAndAngleOfIncidence(DtDetonationContext& detonationContext); 00173 00176 virtual void getIndirectFireSurfaceAndAngleOfIncidence(DtDetonationContext& detonationContext); 00177 00179 virtual DtSymbolString getSurface(DtBoundingVolumeFace impactSurface); 00180 00192 virtual bool getRangeEntry(const DtDetonationContext& detonationContext, 00193 DtPrbRangeTableEntry& rangeEntry, bool isDirectDamage = true) const; 00194 00205 virtual bool isCatastrophicallyKilled(DtPrbRangeTableEntry& rangeEntry, 00206 DtSymbolString catastrophicKillString) const; 00207 00217 virtual bool isFirepowerKilled(DtPrbRangeTableEntry& rangeEntry, 00218 DtSymbolString firepowerKillString) const; 00219 00229 virtual bool isMobilityKilled(DtPrbRangeTableEntry& rangeEntry, 00230 DtSymbolString mobilityKillString) const; 00231 00232 00234 virtual DtSymbolString catastrophicKillString() const; 00235 00237 virtual DtSymbolString mobilityKillString() const; 00238 00240 virtual DtSymbolString firepowerKillString() const; 00241 00248 virtual void determineDestroyedStatus(); 00249 00250 00253 virtual bool isRegisteredForDetonations() const; 00254 virtual void setIsRegisteredForDetonations(bool yesOrNo); 00256 00264 virtual void setDestroyed(); 00265 00268 virtual void setRestored(); 00269 00274 virtual bool registerForDetonations(); 00275 00279 virtual bool unregisterForDetonations(); 00280 00282 virtual void setMobilityKilled(); 00283 00285 virtual void setFirepowerKilled(); 00286 00288 virtual void setRadio(DtSimBaseRadio* radio); 00289 00290 protected: 00291 00292 DtDamageAdjudicationComponentDescriptor* myDamageComponentDescriptor; 00293 DtTime myStopSmokingTime; 00294 DtTime myStopFlamingTime; 00295 00296 00297 private: 00298 00300 DtDamageAdjudicationActuator(); 00301 00303 DtDamageAdjudicationActuator(const DtDamageAdjudicationActuator& orig); 00304 00306 DtDamageAdjudicationActuator& operator=(const DtDamageAdjudicationActuator& orig); 00307 00308 private: 00311 bool myIsRegisteredForDetonations; 00312 }; 00313 00314 #endif 00315