VR-Forces 4.0.4 Class Documentation
include/vrfmodel/obstructionSens.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: obstructionSens.h,v $ $Revision: 1.20 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #ifndef obstructionSensor_H_
00016 #define obstructionSensor_H_
00017 
00018 #include "vrfobjcore/simCmpnt.h"
00019 #include "vrfutil/vlClock.h"
00020 #include "vrfobjcore/vrfObjMgr.h"
00021 #include <vl/hostStructs.h>
00022 #include <vl/objIdHashLst.h>
00023 #include "vrfobjcore/collisionIOPort.h"
00024 #include "gdb/specification.h"
00025 #include "vrfobjcore/vectorObstructionID.h"
00026 #include "vrfmodel/collisionDetector.h"
00027 
00028 #include <list>
00029 
00030 class DtString;
00031 class DtSimManager;
00032 class Dt3dBoundingVolume;
00033 class DtVectorObstructionID;
00034 class DtObstructionSensorDescriptor;
00035 class DtObstructionSensorPSR;
00036 class DtRwVectorObstructionType;
00037 
00042 #include "vrfmodel/vrfmodelDefines.h"
00043 class DT_DLL_vrfmodel DtObstructionSensor : public DtSimComponent
00044 {
00045 
00046 public:
00047 
00050    DtObstructionSensor(const DtString& name, 
00051                        DtVrfObject* owner,
00052                        DtSimManager* simManager, 
00053                        DtComponentDescriptor* desc = 0,
00054                        DtReaderWriterRegistry* parentRegistry = 0);
00055 
00057    virtual ~DtObstructionSensor();
00058 
00059 private:
00061    DtObstructionSensor(const DtObstructionSensor& orig);
00062 
00064    DtObstructionSensor& operator=(const DtObstructionSensor& orig);
00065 
00066 
00067 public:
00073    virtual bool init();
00074 
00083    virtual void tick();
00084 
00087    virtual DtString type() const;
00088 
00089 protected:
00090 
00096    virtual bool createPSR();
00097 
00099    virtual bool createCollisionDetector();
00100 
00106    virtual bool setObstructionIDsInCollisionDetector();
00107 
00111    virtual bool initializeCollisionBV();
00112 
00127    virtual bool calculateStoppingDistance(const DtObstructionSensorDescriptor& obstructionSensorDesc,
00128                                           double& stoppingDistance);
00129 
00137    virtual bool calculateCollisionBV();
00138 
00140    virtual void registerMessageCallbacks();
00141 
00143    static void setCollisionAvoidTypesCallback(DtSimMessage* msg, void* usr);
00144 
00147    virtual void processCollisionAvoidTypes(DtSimMessage* msg);
00148 
00152    virtual bool addVectorObstructionType(const DtRwVectorObstructionType& obsId);
00153 
00157    virtual bool removeVectorObstructionType(const DtRwVectorObstructionType& obsId);
00158 
00163    virtual DtRwVectorObstructionType buildingVectorObstructionType() const;
00164 
00169    virtual DtRwVectorObstructionType treeVectorObstructionType() const; 
00170 
00171    virtual double decelerationSoilFactor() const;
00172 
00173 public:
00177    static DtSimComponent * creator(const DtString& name, 
00178       DtVrfObject* owner,
00179       DtSimManager* simManager, 
00180       DtComponentDescriptor* desc = 0,
00181       DtReaderWriterRegistry* parentRegistry = 0);
00182 
00183 protected:
00184 
00189    virtual bool createPorts();
00190 
00194    virtual bool createPortGroups();
00195 
00196 protected:
00197 
00200 
00207    DtCollisionOutputPort* myPotentialCollisionInfoPort;
00208 
00211    DtOutputPortGroup*     myObstructionInfoPortGroup;
00212 
00214 
00215    Dt3dBoundingVolume*      myCollisionBV;
00216    DtCollisionDetector*   myCollisionDetector;
00217    DtCollisionDetector::DtObjectObstructionIDContainer myObjectObstructionIDs;
00218    DtCollisionDetector::DtVectorObstructionIDContainer myVectorObstructionIDs;
00219    const DtObstructionSensorDescriptor* myObstructionSensorDesc;
00220 
00223    DtObstructionSensorPSR* myProcessState;
00224 
00225    bool myFirstTick;
00226 
00227 protected:
00228    mutable DtCollision*             myPotentialCollision;
00229 };
00230 
00231 #endif
00232 
00233 
00234 
00235 
00236 
00237 
00238 

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)