![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00006 #pragma once 00007 00008 #include <bhavePathDataGen/pathDataGenDefines.h> 00009 #include <bhavePathDataGen/baseImporter.h> 00010 #include <bhavePathDataGen/extentBoxStruct.h> 00011 #include <kypdg.h> 00012 #include <gdb/terrainDb.h> 00013 #include "terrainInterface/terrainProcessPolygonsBox.h" 00014 #include "terrainInterface/terrainInterface.h" 00015 #include <deque> 00016 00017 class DtGdbNode; 00018 class DtTriangleIndirect; 00019 00020 namespace BHAVE { 00021 00024 class DT_DLL_bhavePathDataGen DtTerrainInterfaceImporter : public DtBaseImporter 00025 { 00026 public: 00027 00029 DtTerrainInterfaceImporter(); 00030 00032 DtTerrainInterfaceImporter(const DtTerrainInterfaceImporter& orig); 00033 00035 DtTerrainInterfaceImporter& operator=(const DtTerrainInterfaceImporter& orig); 00036 00038 virtual void setTerrainInterface(const DtTerrainInterface* currentDb); 00039 00041 virtual bool initializeCoordinateSystem(); 00042 00045 virtual bool generateTriangleMesh(Kaim::ClientInputConsumer & kynapseConsumer, DtExtentBoxStruct* boundingBox = 0); 00046 00048 virtual void setImpassableTerrain(DtSoilType soilType); 00049 virtual void unsetImpossibleTerrain(DtSoilType soilType); 00050 00052 virtual void setImpassableWater(DtBodyOfWaterType soilType); 00053 00055 virtual void unsetImpossibleWater(DtBodyOfWaterType soilType); 00056 00058 virtual bool generateVectorNetwork() const { return myGenerateVectorNetwork; } 00059 00061 virtual void setGenerateVectorNetwork(bool val) { myGenerateVectorNetwork = val; } 00062 00064 static void processTriangle(DtTerrainTriangleStruct& triangle, void* usr); 00065 00067 static void finalize(int status, void* usr); 00068 00070 virtual void addTerrainTriangle(const DtTerrainTriangleStruct& triangle); 00071 00073 virtual bool isTriangleSizeWithinLimits(const DtTerrainTriangleStruct& triangle) const; 00074 00076 virtual void setMaximumTriangleSize(const double& lengthInMeters); 00077 00079 virtual double maximumTriangleSize() const; 00080 00082 virtual void splitAndAddTerrainTriangle(const DtTerrainTriangleStruct& triangle); 00083 00084 protected: 00086 virtual void resetTriangleCount(); 00087 00089 virtual double triangleCount() const; 00090 00091 const DtTerrainInterface* myTerrainInterface; 00092 std::set<DtSoilType> myImpassableTerrainTypes; 00093 std::set<DtBodyOfWaterType> myImpassableWaterTypes; 00094 bool myGenerateVectorNetwork; 00095 double myTempMinimumZ; 00096 double myTempMaximumZ; 00097 double myMaximumTriangleSize; 00098 double myTriangleCount; 00099 }; 00100 00101 } 00102