VR-Forces 4.0.4 Class Documentation
include/vrfmodel/targetSelectionController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2005 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: targetSelectionController.h,v $ $Revision: 1.24 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #pragma once
00016 
00017 #include "vrfobjcore/singleTaskControllerComponent.h"
00018 #include "vrfobjcore/entityTargetInformation.h"
00019 #include <map>
00020 #include <list>
00021 #include "vrfmodel/vrfmodelDefines.h"
00022 #include "targetRankOperator.h"
00023 
00024 class DtSensorContactListInputPort;
00025 class DtEntityListOutputPort;
00026 class DtObjectTypesListOutputPort;
00027 class DtRwSensorContactInfo;
00028 class DtTargetSelectionCriteria;
00029 class DtTargetRankOperator;
00030 class DtSpatialFilterEvaluator;
00031 class DtTargetSelectionControllerPSR;
00032 class DtSimMessage;
00033 class DtVrfObjectMessage;
00034 class DtWeaponComponentInterface;
00035 
00049 
00076 class DT_DLL_vrfmodel DtTargetSelectionController : public DtSingleTaskControllerComponent
00077 {
00078 private:
00080    DtTargetSelectionController();
00082    DtTargetSelectionController(const DtTargetSelectionController& orig);
00084    DtTargetSelectionController& operator=(
00085       const DtTargetSelectionController& orig);
00086 public:
00087 
00088    typedef std::list<DtWeaponComponentInterface*> DtWeaponInterfaceList;
00089 
00092    DtTargetSelectionController(const DtString& name, DtVrfObject* owner, 
00093       DtSimManager* simManager, DtComponentDescriptor* desc=0, 
00094       DtReaderWriterRegistry *parentRegistry=0);
00095 
00097    virtual ~DtTargetSelectionController();
00098 
00100    virtual bool init();
00101 
00104    virtual DtString type() const;
00105 
00107    virtual void registerTaskMsgCallbacks();
00108 
00111    virtual void updateWeaponInterfaceTaskState(DtWeaponComponentInterface* weapIf);
00112 
00116 
00117    static void fireAtTargetTaskCallback(DtSimMessage* msg, void* usr);
00118    virtual void processFireAtTargetTask(DtSimMessage* msg);
00120 
00123 
00124    static void weaponListRequestCallback(const DtVrfObjectMessage* msg, void* usr);
00125    virtual void processWeaponListRequest(const DtVrfObjectMessage* msg);
00127 
00129 
00130    static void fireNowCallback(DtSimMessage* msg, void* usr);
00131    virtual void processFireNow(DtSimMessage* msg);
00133 
00135    virtual void taskComplete(bool success = true);
00136 
00144    virtual void tick();
00145 
00149    static DtSimComponent* creator(const DtString& name, 
00150       DtVrfObject* owner,
00151       DtSimManager* simManager, 
00152       DtComponentDescriptor* desc = 0,
00153       DtReaderWriterRegistry* parentRegistry = 0);
00154 
00155 protected:
00156    typedef std::set<DtRwSensorContactInfo*, DtTargetRankOperatorWrapper> DtOrderedTargetSet;
00157 
00159    virtual bool createPorts();
00160 
00164    virtual bool createOutputPorts();
00165 
00171    virtual bool createPSR();
00172 
00174    virtual void registerRadioMessageCallbacks();
00175    
00177    static void setTargetCallback(DtSimMessage* msg, void* usr);
00178 
00181    virtual void processSetTarget(DtSimMessage* msg);
00182 
00191    virtual void selectTargets();
00192 
00195    virtual bool targetForce(DtForceType force) const;
00196 
00200    virtual bool validTarget(const DtRwSensorContactInfo& contactInfo, 
00201       const DtWeaponComponentInterface& weapIf) const;
00202 
00205    virtual DtEntityTargetInformation targetInfoFromContactInfo(
00206       const DtRwSensorContactInfo& contactInfo) const;
00207 
00210    virtual void updateRegionEvaluators();
00211 
00215    virtual DtTargetRankOperator* createTargetRankOperator(
00216       const DtTargetSelectionCriteria& criteria) const;
00217 
00220    virtual void setupDetectableForces(DtForceType);
00221 
00224 
00225    static void hostilitiesChangedCallback(DtU8 force, void* usr);
00226    virtual void processHostilitiesChanged(DtU8 force);
00228 
00230    virtual void clearTargets();
00231 
00233    virtual bool isSurrenderedLifeform(const DtVrfObject* entity) const;
00234   
00235    virtual bool findFusedTargets(const DtSensorContactInfoList* contactList, 
00236       const DtWeaponComponentInterface& weapIf, DtRwSensorContactInfo* userTargetInfo, 
00237       DtOrderedTargetSet & orderedTargets);
00238    virtual void setTargetsToWeaponInterface(DtWeaponComponentInterface& weapIf, DtRwSensorContactInfo* userTargetInfo, DtOrderedTargetSet& orderedTargets);
00239 
00242    virtual void findWeaponControlInterfaces();
00243 
00246    virtual bool permissionToFire();
00247 
00248 protected:
00249 
00257 
00264    DtObjectTypesListOutputPort*  myTypesToDetectOutputPort;
00265 
00268    DtTargetSelectionControllerPSR* myProcessState;
00269 
00270    DtSensorContactInfoListChangeMonitor myContactListChangeMonitor;
00271 
00273    DtForceType myForce;
00274 
00278    bool mySetupDetectableForcesRequired;
00279 
00280    bool myFirstTick;
00281 
00284    DtWeaponInterfaceList myWeaponInterfaceList;
00285 };

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)