f8/cpp/inputgeom.h
2020-08-18 13:25:11 +08:00

54 lines
1.3 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(); }
const rcChunkyTriMesh* GetChunkyMesh() { return &chunky_mesh_; }
private:
float min_[3] = {0};
float max_[3] = {0};
std::vector<float> verts_;
rcChunkyTriMesh chunky_mesh_;
};
}
int rcGetChunksOverlappingRect(const rcChunkyTriMesh* cm,
float bmin[2], float bmax[2],
int* ids, const int maxIds);