![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: basicTerrainIntersector.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef basicTerrainIntersector_h 00013 #define basicTerrainIntersector_h 00014 00015 #include "gdb/terrainIntersector.h" 00016 #include "gdb/terrainIntersectorDescriptor.h" 00017 00018 class DtBasicTerrainIntersectorDescriptor; 00019 00020 // An intersector for DtTerrainDatabase class. 00021 // This intersector doesn't use any special intersection optimization, and 00022 // does not allocate any additional memory. It is useful when reduced memory 00023 // footprint is more important than intersection speed. 00024 class DT_DLL_gdb DtBasicTerrainIntersector : public DtTerrainIntersector 00025 { 00026 private: 00027 // Not implemented. 00028 DtBasicTerrainIntersector(); 00029 // Not implemented. 00030 DtBasicTerrainIntersector(const DtBasicTerrainIntersector& orig); 00031 // Not implemented. 00032 DtBasicTerrainIntersector& operator=(const DtBasicTerrainIntersector& orig); 00033 00034 public: 00035 DtBasicTerrainIntersector(DtTerrainDatabase* terrainDb, 00036 const DtTerrainIntersectorDescriptor* descriptor); 00037 virtual ~DtBasicTerrainIntersector(); 00038 00039 virtual bool init(); 00040 virtual bool reinitialize(); 00041 00042 // \return The total number of bytes of memory used by this intersector 00043 // and any of its internal indexing into the terrain. 00044 virtual unsigned int memoryUsage() const; 00045 00046 virtual bool chordIntersect(const DtChord& chord, 00047 DtChordIntersectionRecord& record, 00048 DtGdbNode::DtIntersectRecordType irtFlag = DtGdbNode::IRT_ALL_DATA_TERRAIN) const; 00049 00050 virtual bool allIntersectsAlongChord(const DtChord& chord, 00051 DtChordIntersectRecordList& intList, 00052 DtGdbNode::DtIntersectRecordType irtFlag = DtGdbNode::IRT_ALL_DATA_TERRAIN) const; 00053 00054 virtual bool sphereIntersect(const DtSphere& sphere, DtSphereIntersectionRecord& record, 00055 DtGdbNode::DtIntersectRecordType irtFlag = DtGdbNode::IRT_ALL_DATA_TERRAIN) const; 00056 00057 virtual int terrainIntersectorType() const; 00058 00059 virtual bool load(FILE*) { return true; }; 00060 virtual bool save(FILE*) { return true; }; 00061 00062 // \return A descriptor for setting this intersector to the DtTerrainDatabase. 00063 static DtBasicTerrainIntersectorDescriptor* createDescriptor(); 00064 }; 00065 00066 // Descriptor for the DtBasicTerrainIntersector class. 00067 class DT_DLL_gdb DtBasicTerrainIntersectorDescriptor : public DtTerrainIntersectorDescriptor 00068 { 00069 public: 00070 DtBasicTerrainIntersectorDescriptor(); 00071 DtBasicTerrainIntersectorDescriptor(const DtBasicTerrainIntersectorDescriptor& orig); 00072 virtual ~DtBasicTerrainIntersectorDescriptor(); 00073 00074 DtBasicTerrainIntersectorDescriptor& operator=(const DtBasicTerrainIntersectorDescriptor& orig); 00075 00076 virtual int terrainIntersectorType() const; 00077 00078 virtual DtTerrainIntersectorDescriptor* clone() const; 00079 00080 virtual void descriptorInformation(DtString& name, DtString& properties) const; 00081 }; 00082 00083 #endif