58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
#pragma once
|
|
|
|
struct rcChunkyTriMeshNode
|
|
{
|
|
float bmin[2];
|
|
float bmax[2];
|
|
int i;
|
|
int n;
|
|
};
|
|
|
|
struct rcChunkyTriMesh
|
|
{
|
|
inline rcChunkyTriMesh() : nodes(0), nnodes(0), tris(0), ntris(0), maxTrisPerChunk(0) {};
|
|
inline ~rcChunkyTriMesh() { delete [] nodes; delete [] tris; }
|
|
|
|
rcChunkyTriMeshNode* nodes;
|
|
int nnodes;
|
|
int* tris;
|
|
int ntris;
|
|
int maxTrisPerChunk;
|
|
|
|
private:
|
|
// Explicitly disabled copy constructor and copy assignment operator.
|
|
rcChunkyTriMesh(const rcChunkyTriMesh&);
|
|
rcChunkyTriMesh& operator=(const rcChunkyTriMesh&);
|
|
};
|
|
|
|
namespace f8
|
|
{
|
|
|
|
class InputGeom
|
|
{
|
|
public:
|
|
void Init(float width, float height);
|
|
|
|
const float* GetMeshBoundsMin() const { return min_; }
|
|
const float* GetMeshBoundsMax() const { return max_; }
|
|
const float* GetVerts() const { return !verts_.empty() ? &verts_[0] : nullptr; }
|
|
int GetVertCount() const { return verts_.size() / 3; }
|
|
const int* GetTris() const { return !tris_.empty() ? &tris_[0] : nullptr; }
|
|
int GetTriCount() const { return tris_.size() / 3; }
|
|
const rcChunkyTriMesh* GetChunkyMesh() { return &chunky_mesh_; }
|
|
|
|
private:
|
|
float min_[3] = {0};
|
|
float max_[3] = {0};
|
|
std::vector<float> verts_;
|
|
std::vector<int> tris_;
|
|
rcChunkyTriMesh chunky_mesh_;
|
|
};
|
|
|
|
}
|
|
|
|
int rcGetChunksOverlappingRect(const rcChunkyTriMesh* cm,
|
|
float bmin[2], float bmax[2],
|
|
int* ids, const int maxIds);
|
|
|