Polished collision editor UI a bit

This commit is contained in:
Aruki
2019-02-18 03:59:19 -07:00
parent 0827c05802
commit 3507be8e42
12 changed files with 179 additions and 28 deletions

View File

@@ -0,0 +1,14 @@
#include "CCollidableOBBTree.h"
void CCollidableOBBTree::BuildRenderData()
{
if (!mRenderData.IsBuilt())
{
mRenderData.BuildRenderData(mIndexData);
mRenderData.BuildBoundingHierarchyRenderData(mpOBBTree.get());
}
}
void CCollidableOBBTree::BuildOBBTree()
{
}

View File

@@ -11,14 +11,9 @@ class CCollidableOBBTree : public CCollisionMesh
std::unique_ptr<SOBBTreeNode> mpOBBTree;
public:
virtual void BuildRenderData() override
{
if (!mRenderData.IsBuilt())
{
mRenderData.BuildRenderData(mIndexData);
mRenderData.BuildBoundingHierarchyRenderData(mpOBBTree.get());
}
}
virtual void BuildRenderData() override;
void BuildOBBTree();
/** Accessors */
inline SOBBTreeNode* GetOBBTree() const

View File

@@ -134,7 +134,7 @@ void CCollisionRenderData::BuildBoundingHierarchyRenderData(const SOBBTreeNode*
mBoundingIndexBuffer.SetPrimitiveType(GL_LINES);
// Iterate through the OBB tree, building a list of nodes as we go.
// We iterate through this using a breadth-first search in order to group together
// We iterate through this using a breadth-first traversal in order to group together
// OBBs in the same depth level in the index buffer. This allows us to render a
// subset of the bounding hierarchy based on a max depth level.
std::vector<const SOBBTreeNode*> TreeNodes;
@@ -199,7 +199,7 @@ void CCollisionRenderData::BuildBoundingHierarchyRenderData(const SOBBTreeNode*
2, 6,
3, 7
};
uint FirstIndex = mBoundingIndexBuffer.GetSize();
uint FirstIndex = mBoundingVertexBuffer.Size() - 8;
for (uint i=0; i<24; i++)
{
mBoundingIndexBuffer.AddIndex(skUnitCubeWireIndices[i] + FirstIndex);
@@ -261,3 +261,8 @@ void CCollisionRenderData::RenderBoundingHierarchy(int MaxDepthLevel /*= -1*/)
mBoundingIndexBuffer.DrawElements(FirstIndex, NumIndices);
mBoundingVertexBuffer.Unbind();
}
int CCollisionRenderData::MaxBoundingHierarchyDepth() const
{
return mBoundingHierarchyBuilt ? mBoundingDepthOffsets.size()-1 : 0;
}

View File

@@ -49,10 +49,10 @@ public:
/** Render */
void Render(bool Wireframe, int MaterialIndex = -1);
void RenderBoundingHierarchy(int MaxDepthLevel = -1);
int MaxBoundingHierarchyDepth() const;
/** Accessors */
inline bool IsBuilt() const { return mBuilt; }
inline int MaxBoundingHierarchyDepth() const { return mBoundingHierarchyBuilt ? mBoundingDepthOffsets.size() - 1 : 0; }
};
#endif // CCOLLISIONRENDERDATA_H