![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00010 00011 #pragma once 00012 00013 #include <vrvCore/vrvCore.h> 00014 #include <vrvCore/DtUniqueID.h> 00015 #include <vrvCore/DtIntersector.h> 00016 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 00019 #include <vector> 00020 00021 class DtVector; 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 00030 class DtSimpleIntersectorResult : public DtIntersectorResult 00031 { 00032 public: 00033 DtSimpleIntersectorResult(); 00034 DtSimpleIntersectorResult( double cx, double cy, double cz, 00035 double cnormalX, double cnormalY, double cnormalZ, 00036 const DtUniqueID& cid, unsigned int celementType); 00037 00038 DtSimpleIntersectorResult( const DtSimpleIntersectorResult& orig ); 00039 DtSimpleIntersectorResult& operator=( const DtSimpleIntersectorResult& orig ); 00040 00041 public: 00042 // Actually a DtElementEntry::ElementType 00043 unsigned int elementType; 00044 }; 00045 00051 class DT_DLL_VRVCORE DtSimpleIntersector : public DtVirtualBaseClass 00052 { 00053 public: 00055 static DtSimpleIntersector& instance(DtDe& de); 00056 00058 static void registerInstance(DtDe& de, DtSimpleIntersector* anInstance); 00059 00061 virtual ~DtSimpleIntersector(); 00062 00065 virtual double heightAboveTerrain( 00066 const DtVector& loc, 00067 DtSimpleIntersectorResult& result, 00068 int modelSet=0, 00069 bool useHighLod=false, 00070 bool includeEntities=false, 00071 std::vector<DtElementID>* ignoreList=0 00072 ); 00073 00074 virtual double heightAboveTerrain( 00075 DtElementID element, 00076 DtSimpleIntersectorResult& result, 00077 int modelSet=0, 00078 bool useHighLod=false, 00079 bool includeEntities=false, 00080 std::vector<DtElementID>* ignoreList=0 00081 ); 00082 00084 virtual double heightOfTerrain( 00085 const DtVector& loc, 00086 DtSimpleIntersectorResult& result, 00087 int modelSet=0, 00088 bool useHighLod=false); 00089 00093 virtual bool hasLineOfSight( 00094 const DtVector& fromLoc, 00095 const DtVector& toLoc, 00096 DtSimpleIntersectorResult& result, 00097 int modelSet=0, 00098 bool useHighLod=false, 00099 bool includeEntities=false, 00100 std::vector<DtElementID>* ignoreList=0); 00101 00102 virtual bool hasLineOfSight( 00103 DtElementID fromElem, 00104 DtElementID toElem, 00105 DtSimpleIntersectorResult& result, 00106 int modelSet=0, 00107 bool useHighLod=false, 00108 bool includeEntities=false, 00109 std::vector<DtElementID>* ignoreList=0); 00110 00111 protected: 00112 DtSimpleIntersector(DtDe& de); 00113 00115 virtual DtUniqueID sceneObjectIdFromElementId( 00116 DtElementID element, int modelSet); 00117 00119 virtual DtVector positionFromSceneObjectId(DtUniqueID sceneObjectId); 00120 00123 virtual bool getTerrainIntersection( 00124 const DtVector& loc, 00125 DtIntersectorResult& result, 00126 int modelSet=0, 00127 bool useHighLod=false, 00128 bool includeEntities=false, 00129 std::vector<DtElementID>* ignoreList=0); 00130 00131 virtual void fillInElementType(DtSimpleIntersectorResult& result); 00132 00133 protected: 00134 DtDe& myDe; 00135 00136 }; 00137 }