#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 verts_; rcChunkyTriMesh chunky_mesh_; }; } int rcGetChunksOverlappingRect(const rcChunkyTriMesh* cm, float bmin[2], float bmax[2], int* ids, const int maxIds);