VR-Forces 4.0.4 Class Documentation
include/vrfmodel/indFireCtlr.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00010 
00011 
00012 #pragma once
00013 
00014 #include "vrfobjcore/singleTaskControllerComponent.h"
00015 #include "vrfutil/simMunition.h"
00016 
00018 #include <vlpi/disEnums.h>
00019 #include <matrix/vlVector.h>
00020 
00021 class DtString;
00022 class DtSimManager;
00023 class DtTaskMessage;
00024 class DtSimMessage;
00025 class DtMunitionResource;
00026 
00027 class DtIndirectFireWeaponController;
00028 class DtIndirectFireControllerDescriptor;
00029 class DtVrfIndirectFirePSR;
00030 
00031 
00036 #include "vrfmodel/vrfmodelDefines.h"
00037 class DT_DLL_vrfmodel DtIndirectFireController : public DtSingleTaskControllerComponent
00038 {
00039 
00040 public:
00041 
00044    DtIndirectFireController(const DtString& name, 
00045       DtVrfObject* owner,
00046       DtSimManager* simManager, 
00047       DtComponentDescriptor* desc = 0,
00048       DtReaderWriterRegistry* parentRegistry = 0);
00049 
00051    virtual ~DtIndirectFireController();
00052 
00054    virtual bool init();
00055 
00058    virtual bool postAddComponentsInit();
00059 
00061    virtual bool createWeaponController();
00062 
00065    virtual DtString type() const;
00066 
00071    virtual void tick();
00072 
00075    virtual void clearTask();
00076 
00078    virtual void setMyFuzeToUse(DtDetonatorFuze fuzeToUse);
00080    virtual DtDetonatorFuze fuzeToUse() const;
00081 
00085    virtual void calculateDesiredElevation(double rangeToTarget);
00086 
00089    virtual void calculateDesiredAzimuth();
00090 
00092    double findBodyHeadingToLocalPosition(DtVector localTargetPosition) const;
00093 
00096    virtual void chooseMaxRange(DtReal rangeToTarget);
00097 
00099    virtual void setCurrentMaxRange(DtReal currentMaxRange);
00101    virtual DtReal currentMaxRange() const;
00102 
00105    virtual DtReal absoluteMaxRange() const;
00106 
00110    virtual bool initializeController(const DtString& ammoType,
00111       int numberOfRounds, DtReal heightAboveTerrain);
00112    
00114    virtual void setCurrentTargetLocation(const DtVector& location);
00116    virtual const DtVector& currentTargetLocation();
00117 
00123    virtual void registerTaskMsgCallbacks();
00124 
00126    static void FFEOnTargetCallback(DtSimMessage * msg, void * usr);
00128    static void FFEOnEntityCallback(DtSimMessage * msg, void * usr);
00130    static void FFEOnLocationCallback(DtSimMessage * msg, void * usr);
00132    static void userTaskCallback(DtSimMessage * msg, void * usr);
00133 
00140    virtual bool processFFEOnTargetTask(DtSimMessage * msg);
00141    virtual bool processFFEOnLocationTask(DtSimMessage * msg);
00142    virtual bool processFFEOnEntityTask(DtSimMessage * msg);
00148    virtual void processUserTask(DtSimMessage * msg);
00151    virtual void processFFETask(DtTaskMessage * tm);
00152 
00153 
00156    virtual bool haveAmmo(const DtString & ammoName) const;
00157 
00160    virtual const DtString & findDefaultAmmo() const;
00161 
00164    virtual void getMunitionFromResourceName(const DtString & resourceName,  
00165             DtSimMunition& munition) const;
00166 
00169    virtual DtMunitionResource * lookupMunitionResource(const DtString & 
00170       resource) const;
00171 
00175    static DtSimComponent * creator(const DtString& name, 
00176       DtVrfObject* owner,
00177       DtSimManager* simManager, 
00178       DtComponentDescriptor* desc = 0,
00179       DtReaderWriterRegistry* parentRegistry = 0);
00180 
00181 protected:
00182    
00185    virtual bool createPortGroups();
00186 
00188    virtual void addRangeItems();
00189 
00190 protected:
00191    
00193    DtIndirectFireController();
00194 
00196    DtIndirectFireController(const DtIndirectFireController & orig);
00197 
00199    const DtIndirectFireController & operator=(const DtIndirectFireController & 
00200       orig);
00201 
00202 protected:
00203 
00205    DtDetonatorFuze myFuzeToUse;
00206   
00207    DtReal myCurrentMaxRange;
00208 
00211    DtSimMunition myMunitionToUse;
00212 
00213    DtIndirectFireWeaponController * myWeaponController;
00214    DtIndirectFireControllerDescriptor * myIndFireDescriptor;
00215 
00217    bool myFirstTick;
00218 };
00219 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)