00001 #pragma once 00002 #include "../../core/src/geometry.h" 00003 #include "../../core/src/bvolumes.h" 00004 00005 #include "../../core/src/bvhnode.h" 00006 00007 using namespace VRUT; 00008 00009 00010 namespace CollisionDetectionNamespace 00011 { 00012 00014 class CollisionDetection_BVHNode : public BVHNode 00015 { 00016 public: 00017 00019 CollisionDetection_BVHNode(void) 00020 { 00021 BVHNode::BVHNode(); 00022 lChild = rChild = NULL; 00023 00024 } 00025 00027 ~CollisionDetection_BVHNode() 00028 { 00029 SAFE_DELETE(lChild); 00030 SAFE_DELETE(rChild); 00031 } 00032 00035 std::vector<Triangle>* GetTargetTriangles() 00036 { 00037 return &targetTriangles; 00038 } 00039 00042 std::vector<Triangle>* GetTargetOrigTriangles() 00043 { 00044 return &targetTrianglesOrig; 00045 } 00046 00049 CollisionDetection_BVHNode* CreateLChild(){lChild = new CollisionDetection_BVHNode();return lChild;} 00050 00053 CollisionDetection_BVHNode* GetLChild(){return lChild;} 00054 00057 CollisionDetection_BVHNode* CreateRChild(){rChild = new CollisionDetection_BVHNode(); return rChild;} 00058 00061 CollisionDetection_BVHNode* GetRChild(){return rChild;} 00062 00065 AABB* GetAABB() {return &aabb;} 00066 00067 private: 00068 00070 AABB aabb; 00071 00073 BSphere bSphere; 00074 00076 bool valid; 00077 00079 CollisionDetection_BVHNode * lChild; 00080 00082 CollisionDetection_BVHNode * rChild; 00083 00084 00086 std::vector<Triangle> targetTriangles; 00087 00089 std::vector<Triangle> targetTrianglesOrig; 00090 00091 00092 friend class CollisionDetection_BVH; 00093 }; 00094 00095 };
1.5.5