![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: detonationCtlr.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 ** Created: 7/2/07 MEM 00008 *******************************************************************************/ 00009 00012 00015 00016 #ifndef detonationCtlr_H_ 00017 #define detonationCtlr_H_ 00018 00019 00020 #include "vrfobjcore/singleTaskControllerComponent.h" 00021 #include "vrfutil/vlClock.h" 00022 #include <vl/hostStructs.h> 00023 #include "vrfutil/simMunition.h" 00024 #include <vlpi/disEnums.h> 00025 00026 class DtBooleanOutputPort; 00027 class DtIntegerOutputPort; 00028 class DtDetonationControllerDescriptor; 00029 class DtWarheadDetonationActuatorPSR; 00030 class DtSensorContactListMultiInputPort; 00031 class DtObjectTypesListOutputPort; 00032 class DtSimManager; 00033 class DtSimMessage; 00034 class DtRwSensorContactInfo; 00035 00042 #include "vrfmodel/vrfmodelDefines.h" 00043 class DT_DLL_vrfmodel DtDetonationController : public DtSingleTaskControllerComponent 00044 { 00045 00046 public: 00047 00050 DtDetonationController(const DtString& name, 00051 DtVrfObject* owner, 00052 DtSimManager* simManager, 00053 DtComponentDescriptor* desc = 0, 00054 DtReaderWriterRegistry* parentRegistry = 0); 00055 00057 virtual ~DtDetonationController(); 00058 00062 virtual bool postAddComponentsInit(); 00063 00066 virtual DtString type() const; 00067 00070 virtual bool init(); 00071 00075 virtual void tick(); 00076 00079 virtual bool createTriggerPort(); 00080 virtual DtBooleanOutputPort * triggerPort() const; 00081 00082 virtual bool createQuantityOutputPort(); 00083 virtual DtIntegerOutputPort* quantityOutputPort() const; 00084 00085 virtual void setDetonationTime(DtTime detTime); 00086 virtual DtTime detonationTime() const; 00087 00091 virtual void detonate(); 00092 00095 virtual void beginSensing(); 00096 00099 virtual bool tripped(const DtRwSensorContactInfo * potentialVictim); 00100 00102 virtual bool setMunitionToDetonate( DtSimMunition& munition ); 00103 00107 static void setDetonationCallback(DtSimMessage* msg, void* usrData); 00108 00109 virtual void processSetDetonation(DtSimMessage* msg); 00110 00112 static void setArmedCallback(DtSimMessage * msg, void * usr); 00113 00114 virtual void processSetArmed(DtSimMessage* msg); 00115 00116 static void setRestoreCallback(DtSimMessage * msg, void * usrData); 00117 00118 virtual void processSetRestore(DtSimMessage * msg); 00119 00121 virtual DtDetonatorFuze fuseStringToEnum(const DtString & fuseString); 00122 00124 virtual DtString fuseStringToEnum(DtDetonatorFuze fuse); 00125 00129 static DtSimComponent * creator(const DtString& name, 00130 DtVrfObject* owner, 00131 DtSimManager* simManager, 00132 DtComponentDescriptor* desc = 0, 00133 DtReaderWriterRegistry* parentRegistry = 0); 00134 00135 protected: 00136 00138 virtual bool createPorts(); 00139 00140 virtual bool createTypesToDetectPort(); 00141 00149 virtual void lookupAndCacheProcessSR(); 00150 00152 virtual void registerRadioMessageCallbacks(); 00153 00154 protected: 00156 DtDetonationController(); 00157 00159 DtDetonationController(const DtDetonationController & orig); 00160 00162 const DtDetonationController & operator=(const DtDetonationController & 00163 orig); 00164 00165 protected: 00166 00168 00170 00177 DtSensorContactListMultiInputPort* myDetectedObjectsInputPort; 00178 00185 DtObjectTypesListOutputPort* myTypesToDetectOutputPort; 00186 00192 DtBooleanOutputPort * myTriggerPort; 00193 00200 DtIntegerOutputPort* myQuantityOutputPort; 00201 00203 00205 DtSimMunition myCurrentMunition; 00206 DtDetonatorFuze myCurrentFuze; 00207 DtTime myDetonationTime; 00208 bool myAmArmed; 00209 00210 double myDetonationProximity; 00211 00217 DtWarheadDetonationActuatorPSR* myProcessState; 00218 00219 const DtDetonationControllerDescriptor* myDetonationDescriptor; 00220 00221 00222 bool myFirstTick; 00223 }; 00224 00225 #endif 00226 00227 00228 00229