"btGImpactBvh.h" divided into two files "btGImpactBvh.h" and "btGImpactBvhSructs.h"
This commit is contained in:
@@ -29,31 +29,7 @@ subject to the following restrictions:
|
|||||||
|
|
||||||
#include "btBoxCollision.h"
|
#include "btBoxCollision.h"
|
||||||
#include "btTriangleShapeEx.h"
|
#include "btTriangleShapeEx.h"
|
||||||
|
#include "btGImpactBvhSructs.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//! Overlapping pair
|
|
||||||
struct GIM_PAIR
|
|
||||||
{
|
|
||||||
int m_index1;
|
|
||||||
int m_index2;
|
|
||||||
GIM_PAIR()
|
|
||||||
{}
|
|
||||||
|
|
||||||
GIM_PAIR(const GIM_PAIR & p)
|
|
||||||
{
|
|
||||||
m_index1 = p.m_index1;
|
|
||||||
m_index2 = p.m_index2;
|
|
||||||
}
|
|
||||||
|
|
||||||
GIM_PAIR(int index1, int index2)
|
|
||||||
{
|
|
||||||
m_index1 = index1;
|
|
||||||
m_index2 = index2;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//! A pairset array
|
//! A pairset array
|
||||||
class btPairSet: public btAlignedObjectArray<GIM_PAIR>
|
class btPairSet: public btAlignedObjectArray<GIM_PAIR>
|
||||||
@@ -74,59 +50,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
///GIM_BVH_DATA is an internal GIMPACT collision structure to contain axis aligned bounding box
|
|
||||||
struct GIM_BVH_DATA
|
|
||||||
{
|
|
||||||
btAABB m_bound;
|
|
||||||
int m_data;
|
|
||||||
};
|
|
||||||
|
|
||||||
//! Node Structure for trees
|
|
||||||
class GIM_BVH_TREE_NODE
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
btAABB m_bound;
|
|
||||||
protected:
|
|
||||||
int m_escapeIndexOrDataIndex;
|
|
||||||
public:
|
|
||||||
GIM_BVH_TREE_NODE()
|
|
||||||
{
|
|
||||||
m_escapeIndexOrDataIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE bool isLeafNode() const
|
|
||||||
{
|
|
||||||
//skipindex is negative (internal node), triangleindex >=0 (leafnode)
|
|
||||||
return (m_escapeIndexOrDataIndex>=0);
|
|
||||||
}
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int getEscapeIndex() const
|
|
||||||
{
|
|
||||||
//btAssert(m_escapeIndexOrDataIndex < 0);
|
|
||||||
return -m_escapeIndexOrDataIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE void setEscapeIndex(int index)
|
|
||||||
{
|
|
||||||
m_escapeIndexOrDataIndex = -index;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int getDataIndex() const
|
|
||||||
{
|
|
||||||
//btAssert(m_escapeIndexOrDataIndex >= 0);
|
|
||||||
|
|
||||||
return m_escapeIndexOrDataIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE void setDataIndex(int index)
|
|
||||||
{
|
|
||||||
m_escapeIndexOrDataIndex = index;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class GIM_BVH_DATA_ARRAY:public btAlignedObjectArray<GIM_BVH_DATA>
|
class GIM_BVH_DATA_ARRAY:public btAlignedObjectArray<GIM_BVH_DATA>
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
@@ -392,5 +315,4 @@ public:
|
|||||||
btPairSet & collision_pairs);
|
btPairSet & collision_pairs);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // GIM_BOXPRUNING_H_INCLUDED
|
#endif // GIM_BOXPRUNING_H_INCLUDED
|
||||||
|
|||||||
161
src/BulletCollision/Gimpact/btGImpactBvhSructs.h
Normal file
161
src/BulletCollision/Gimpact/btGImpactBvhSructs.h
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
#ifndef GIM_BOX_SET_STRUCT_H_INCLUDED
|
||||||
|
#define GIM_BOX_SET_STRUCT_H_INCLUDED
|
||||||
|
|
||||||
|
/*! \file gim_box_set.h
|
||||||
|
\author Francisco Leon Najera
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
This source file is part of GIMPACT Library.
|
||||||
|
|
||||||
|
For the latest info, see http://gimpact.sourceforge.net/
|
||||||
|
|
||||||
|
Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.
|
||||||
|
email: projectileman@yahoo.com
|
||||||
|
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied warranty.
|
||||||
|
In no event will the authors be held liable for any damages arising from the use of this software.
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it freely,
|
||||||
|
subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "LinearMath/btAlignedObjectArray.h"
|
||||||
|
|
||||||
|
#include "btBoxCollision.h"
|
||||||
|
#include "btTriangleShapeEx.h"
|
||||||
|
|
||||||
|
//! Overlapping pair
|
||||||
|
struct GIM_PAIR
|
||||||
|
{
|
||||||
|
int m_index1;
|
||||||
|
int m_index2;
|
||||||
|
|
||||||
|
bool operator<(const GIM_PAIR& obj) const {
|
||||||
|
return
|
||||||
|
m_index1 < obj.m_index1 &&
|
||||||
|
m_index2 < obj.m_index2;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator>(const GIM_PAIR& obj) const {
|
||||||
|
return
|
||||||
|
m_index1 > obj.m_index1 &&
|
||||||
|
m_index2 > obj.m_index2;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const GIM_PAIR& obj) const {
|
||||||
|
return
|
||||||
|
m_index1 == obj.m_index1 &&
|
||||||
|
m_index2 == obj.m_index2;
|
||||||
|
}
|
||||||
|
|
||||||
|
GIM_PAIR()
|
||||||
|
{}
|
||||||
|
|
||||||
|
GIM_PAIR(const GIM_PAIR & p)
|
||||||
|
{
|
||||||
|
m_index1 = p.m_index1;
|
||||||
|
m_index2 = p.m_index2;
|
||||||
|
}
|
||||||
|
|
||||||
|
GIM_PAIR(int index1, int index2)
|
||||||
|
{
|
||||||
|
m_index1 = index1;
|
||||||
|
m_index2 = index2;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
///GIM_BVH_DATA is an internal GIMPACT collision structure to contain axis aligned bounding box
|
||||||
|
struct GIM_BVH_DATA
|
||||||
|
{
|
||||||
|
btAABB m_bound;
|
||||||
|
int m_data;
|
||||||
|
|
||||||
|
bool operator<(const GIM_BVH_DATA& obj) const {
|
||||||
|
return
|
||||||
|
m_bound < obj.m_bound &&
|
||||||
|
m_data < obj.m_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator>(const GIM_BVH_DATA& obj) const {
|
||||||
|
return
|
||||||
|
m_bound > obj.m_bound &&
|
||||||
|
m_data > obj.m_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const GIM_BVH_DATA& obj) const {
|
||||||
|
return
|
||||||
|
m_bound == obj.m_bound &&
|
||||||
|
m_data == obj.m_data;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//! Node Structure for trees
|
||||||
|
class GIM_BVH_TREE_NODE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
btAABB m_bound;
|
||||||
|
protected:
|
||||||
|
int m_escapeIndexOrDataIndex;
|
||||||
|
public:
|
||||||
|
|
||||||
|
bool operator<(const GIM_BVH_TREE_NODE& obj) const {
|
||||||
|
return
|
||||||
|
m_bound < obj.m_bound &&
|
||||||
|
m_escapeIndexOrDataIndex < obj.m_escapeIndexOrDataIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator>(const GIM_BVH_TREE_NODE& obj) const {
|
||||||
|
return
|
||||||
|
m_bound > obj.m_bound &&
|
||||||
|
m_escapeIndexOrDataIndex > obj.m_escapeIndexOrDataIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const GIM_BVH_TREE_NODE& obj) const {
|
||||||
|
return
|
||||||
|
m_bound == obj.m_bound &&
|
||||||
|
m_escapeIndexOrDataIndex == obj.m_escapeIndexOrDataIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
GIM_BVH_TREE_NODE()
|
||||||
|
{
|
||||||
|
m_escapeIndexOrDataIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE bool isLeafNode() const
|
||||||
|
{
|
||||||
|
//skipindex is negative (internal node), triangleindex >=0 (leafnode)
|
||||||
|
return (m_escapeIndexOrDataIndex>=0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE int getEscapeIndex() const
|
||||||
|
{
|
||||||
|
//btAssert(m_escapeIndexOrDataIndex < 0);
|
||||||
|
return -m_escapeIndexOrDataIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE void setEscapeIndex(int index)
|
||||||
|
{
|
||||||
|
m_escapeIndexOrDataIndex = -index;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE int getDataIndex() const
|
||||||
|
{
|
||||||
|
//btAssert(m_escapeIndexOrDataIndex >= 0);
|
||||||
|
|
||||||
|
return m_escapeIndexOrDataIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE void setDataIndex(int index)
|
||||||
|
{
|
||||||
|
m_escapeIndexOrDataIndex = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GIM_BOXPRUNING_H_INCLUDED
|
||||||
Reference in New Issue
Block a user