![]() |
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 00014 #pragma warning (disable : 4273) //Disable inconsistent dll warnings 00015 00016 class DtTerrainDatabase; 00017 class DtGdbNode; 00018 class DtTriangleIndirect; 00019 00020 namespace BHAVE { 00021 00024 class DT_DLL_bhavePathDataGen DtTerrainDatabaseImporter : public DtBaseImporter 00025 { 00026 public: 00027 00029 DtTerrainDatabaseImporter(); 00030 00032 DtTerrainDatabaseImporter(const DtTerrainDatabaseImporter& orig); 00033 00035 DtTerrainDatabaseImporter& operator=(const DtTerrainDatabaseImporter& orig); 00036 00038 virtual void setTerrainDatabase(const DtTerrainDatabase* currentDb); 00039 00041 virtual bool initializeCoordinateSystem(); 00042 00045 virtual bool generateTriangleMesh(Kaim::ClientInputConsumer & kynapseConsumer, DtExtentBoxStruct* boundingBox = 0); 00046 00047 virtual void setImpassableTerrain(DtSoilType soilType); 00048 virtual void unsetImpossibleTerrain(DtSoilType soilType); 00049 00050 virtual void setImpassableWater(DtBodyOfWaterType soilType); 00051 virtual void unsetImpossibleWater(DtBodyOfWaterType soilType); 00052 00053 bool generateVectorNetwork() const { return myGenerateVectorNetwork; } 00054 void setGenerateVectorNetwork(bool val) { myGenerateVectorNetwork = val; } 00055 00056 protected: 00057 const DtTerrainDatabase* myTerrainDatabase; 00058 std::set<DtSoilType> myImpassableTerrainTypes; 00059 std::set<DtBodyOfWaterType> myImpassableWaterTypes; 00060 bool myGenerateVectorNetwork; 00061 00062 virtual void consumeGdbNode(Kaim::ClientInputConsumer &kynapseConsumer, DtGdbNode* gdbNode, 00063 DtExtentBoxStruct* boundingBox); 00064 00066 virtual bool isInsideBoundingBox( DtTriangleIndirect* triangleNode, const DtExtentBoxStruct& boundingBox ); 00067 virtual bool isInsideBoundingBox( DtPoint &firstPoint, const DtExtentBoxStruct &boundingBox ); 00068 00069 virtual double determineSideOfLine(double x1, double x2, double y1, double y2, double xp, double yp ); 00070 }; 00071 00072 } 00073