![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00010 00011 #pragma once 00012 00013 #include "vrfmodel/vrfmodelDefines.h" 00014 #include "vrfutil/railSegment.h" 00015 #include <list> 00016 #include "vrfobjcore/entityCollision.h" 00017 #include "vrfmodel/railObstructionInfo.h" 00018 #include "vrfutil/rwObjectTypeList.h" 00019 00020 class DtVrfObjectManager; 00021 class DtPhysicalWorld; 00022 class DtVector; 00023 class DtCollisionDetector; 00024 class DtVrfObject; 00025 00028 class DT_DLL_vrfmodel DtRailObstructionFinder 00029 { 00030 public: 00031 00032 DtRailObstructionFinder(DtVrfObjectManager* objMgr, DtPhysicalWorld* world, 00033 DtVrfObject* hostEntity); 00034 virtual ~DtRailObstructionFinder(); 00035 00036 virtual void init(const DtRwObjectTypeList & passableObjectTypes); 00037 00041 virtual void findObstructions(const DtRailSegmentList& rail, const DtVector& point, 00042 double distance, std::list<DtRailObstructionPtr>& result); 00043 00044 protected: 00047 virtual bool fillObstructionList(const DtRailSegmentList& rail, const DtVector& startPoint, 00048 double testDistance, std::list<DtRailObstructionPtr>& collisionList); 00049 00052 virtual bool findObstructionsAlongSegment(const DtRailSegment* segment, double testAltitude, 00053 double distFromSegStart, double testDistance, std::list<DtRailObstructionPtr>& collisionList); 00054 00058 virtual void mergeObstructions(const std::list<DtRailObstructionPtr>& sourceList, 00059 std::list<DtRailObstructionPtr>& destiatnionList, double adjustmentDistance); 00060 00062 void publishDebugPath(const DtVector& localStart, 00063 const DtVector& localEnd); 00064 00065 private: 00067 00068 DtRailObstructionFinder(); 00069 DtRailObstructionFinder(const DtRailObstructionFinder& orig); 00070 DtRailObstructionFinder& operator=(const DtRailObstructionFinder& orig); 00072 00073 protected: 00074 DtVrfObjectManager* myObjectManager; 00075 DtPhysicalWorld* myPhysicalWorld; 00076 DtCollisionDetector* myCollisionDetector; 00077 DtVrfObject* myHostEntity; 00078 DtVrfObject* myDebugRoute; 00079 };