VR-Forces 4.0.4 Class Documentation
include/bhaveSim/spawnController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00009 #pragma once
00010 
00011 #include "vrfobjcore/cntrlCmpnt.h"
00012 #include <bhaveSim/bhaveSimDefines.h>
00013 
00014 #include "vrfcore/vrfSimSettingsManager.h"
00015 #include "makSettingsManager/settingsObject.h"
00016 #include "makSettingsManager/boolSetting.h"
00017 #include <vrfmsgs/rwSpawnData.h>
00018 #include <vrfobjcore/vrfObjMgr.h>
00019 
00020 class DtString;
00021 class DtVrfObject;
00022 class DtSimManager;
00023 class DtVrfObjectMessage;
00024 class DtRwObjectTypeInfo;
00025 
00026 namespace BHAVE
00027 {
00028 
00029 const char DtSpawnControllerType[] = "spawn-controller";
00030 
00031 class DtSpawnControllerDescriptor;
00032 class DtSpawnControllerPSR;
00033 
00038 class DT_DLL_bhaveSim DtSpawnController : public DtControllerComponent
00039 {
00040 public:
00041 
00042 //****************************************************************************
00044 //****************************************************************************
00045    DtSpawnController(const DtString& name, 
00046       DtVrfObject* owner,
00047       DtSimManager* simManager, 
00048       DtComponentDescriptor* desc = 0,
00049       DtReaderWriterRegistry* parentRegistry = 0);
00050 
00052    virtual ~DtSpawnController();
00053 
00054    virtual DtString type() const;
00055 
00059    static DtSimComponent * creator(const DtString& name, 
00060       DtVrfObject* owner,
00061       DtSimManager* simManager, 
00062       DtComponentDescriptor* desc = 0,
00063       DtReaderWriterRegistry* parentRegistry = 0);
00064 
00065 //****************************************************************************
00067 //****************************************************************************
00068    static  void settingConsumerCallback(const DtSettingsObject* settingsObject,
00069       void* usr);
00070 
00072 
00074    virtual void registerTaskMsgCallbacks();
00076 
00078    virtual void unregisterTaskMsgCallbacks();
00079 
00080    virtual bool init();
00081 
00082 protected:
00083    virtual void processSetting(const DtBoolSetting* setting);
00084 
00085    virtual DtSpawnControllerPSR* createPSR();
00086 
00087 
00088 //****************************************************************************
00090 //****************************************************************************
00091    static void updateSpawnInstanceCallback(const DtVrfObjectMessage * msg, 
00092       void* usr);
00093    virtual void processUpdateSpawnInstanceCallback(
00094       const DtVrfObjectMessage * msg);
00095 
00096    static void setTemplateNameCallback(const DtVrfObjectMessage * msg, 
00097       void* usr);
00098    virtual void processSetTemplateNameCallback(const DtVrfObjectMessage * msg);
00099 
00100    static void requestSpawnPtDataCallback(const DtVrfObjectMessage * msg, 
00101       void* usr);
00102    virtual void processRequestSpawnPtDataCallback(const DtVrfObjectMessage * msg);
00103 
00104    static void objectRemovedCallback(DtVrfObject* object, void* usr);
00105    virtual void processObjectRemoved(DtVrfObject *object);
00106 
00107    static void objectRenamedCallback(
00108       const DtVrfObjectNameChangedCallbackInfo& info,
00109       void* usr);
00110    virtual void processObjectRenamed(
00111       const DtVrfObjectNameChangedCallbackInfo& info);
00112 
00113 //****************************************************************************
00115 //****************************************************************************
00116 public:
00118    virtual void tick();
00119 
00121    const DtRwSpawnData& spawnParameters() const;
00122 
00125    void setSpawnParameters(const DtRwSpawnData& params);
00126 
00127 protected:
00128 
00129 //****************************************************************************
00131 //****************************************************************************
00134    virtual std::list<DtVrfObject*> testAndSinkTraffic();
00137    virtual bool shouldSinkObject(DtVrfObject* trafficObject, 
00138       DtVrfObject* sinkPoint);
00140    virtual void deleteObjects(const std::list<DtVrfObject*>& objectList);
00141 
00153    virtual bool canCreateNow(DtTime timeNow) const;
00154 
00156    virtual DtString findSinkPoint();
00157 
00161    virtual DtTime nextCreationTime(DtTime timeNow);
00162 
00164    virtual DtVrfObject* createObject(DtVrfObject* sinkPoint,
00165       DtVrfObject* objectToRecycle = 0);
00167    virtual DtVector creationLocationAndOrientation(double& heading,
00168       DtVrfObject* sinkPoint);
00169 
00172    virtual void createAndSendDefaultPlan(DtVrfObject* obj, const DtString& sinkName);
00175    virtual double trafficSpeed();
00176 
00178    virtual void sendEntityPlan(DtVrfObject *entity, const DtPlan& plan);
00179 
00183    virtual bool trafficObjectType(DtRwObjectTypeInfo& objType);
00184 
00185 private:
00187    DtSpawnController();
00188 
00190    DtSpawnController(const DtSpawnController& orig);
00191 
00193    const DtSpawnController & operator=(const DtSpawnController & orig);
00194 
00195 
00196 protected:
00197 
00204    bool myFirstTick;
00205 
00206    DtSpawnControllerPSR* myProcessState;
00207    const DtSpawnControllerDescriptor* myTrafficSourceDescriptor;
00208    bool myDrivingOnLeftEnabled;
00209    DtReal mySinkPointRadiusSq;
00210 };
00211 }
00212 

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)