Hello, i got world map with multiple meshes and their placements. I loading it like this: bool MeshLoader::loadMeshes() {
    std::vector<IPLObject> modelPlacements;
    std::unordered_map<uint16_t, MeshObject> meshesObjs;
    if (!ReadMapMeshes("output_new.cadf", modelPlacements, meshesObjs)) {
        modelPlacements.clear();
        meshesObjs.clear();
        return false;
    }
    m_Meshes.reserve(meshesObjs.size());
    for (const auto& [modelId, meshObj] : meshesObjs) {
        Mesh& mesh = m_Meshes[modelId];
        // Process spheres
        for (const auto& sphere : meshObj.spheres) {
            mesh.addSphere(sphere.radius, 16, 8, sphere.center.x, sphere.center.y, sphere.center.z);
        }
        // Process boxes
        for (const auto& box : meshObj.boxes) {
            float corners[8][3] = {
                {box.min.x, box.min.y, box.min.z},
                {box.max.x, box.min.y, box.min.z},
                {box.min.x, box.max.y, box.min.z},
                {box.max.x, box.max.y, box.min.z},
                {box.min.x, box.min.y, box.max.z},
                {box.max.x, box.min.y, box.max.z},
                {box.min.x, box.max.y, box.max.z},
                {box.max.x, box.max.y, box.max.z}
            };
            int v0 = mesh.getVertCount();
            for (int i = 0; i < 8; ++i) {
                mesh.addVertex(corners[i][0], corners[i][1], corners[i][2]);
            }
            // Add triangles for each face of the box
            mesh.addTriangle(v0 + 0, v0 + 1, v0 + 2);
            mesh.addTriangle(v0 + 1, v0 + 3, v0 + 2);
            mesh.addTriangle(v0 + 4, v0 + 6, v0 + 5);
            mesh.addTriangle(v0 + 5, v0 + 6, v0 + 7);
            mesh.addTriangle(v0 + 0, v0 + 2, v0 + 4);
            mesh.addTriangle(v0 + 2, v0 + 6, v0 + 4);
            mesh.addTriangle(v0 + 1, v0 + 5, v0 + 3);
            mesh.addTriangle(v0 + 5, v0 + 7, v0 + 3);
            mesh.addTriangle(v0 + 2, v0 + 3, v0 + 6);
            mesh.addTriangle(v0 + 3, v0 + 7, v0 + 6);
            mesh.addTriangle(v0 + 4, v0 + 5, v0 + 0);
            mesh.addTriangle(v0 + 5, v0 + 1, v0 + 0);
        }

        // Process faces
        for (const auto& face : meshObj.faces) {
            int v0 = mesh.getVertCount();
            mesh.addVertex(face.a.x, face.a.y, face.a.z);
            mesh.addVertex(face.b.x, face.b.y, face.b.z);
            mesh.addVertex(face.c.x, face.c.y, face.c.z);
            mesh.addTriangle(v0, v0 + 1, v0 + 2);
        }
    }
    static uint32_t uid = 0;
    // Store placements as instances
    m_MeshPlacementData.reserve(modelPlacements.size());
    for (const auto& placement : modelPlacements) {
        if (m_Meshes.find(placement.ModelID) != m_Meshes.end()) {
            m_MeshPlacementData.push_back({ placement.ModelID, uid++, placement });
        }
    }
    modelPlacements.clear();
    meshesObjs.clear();
    return true;
}, so i can get it like this: m_MeshLoader->getMeshes(),
        m_MeshLoader->getMeshPlacementData().  Here meshplacement structure: struct IPLData {
    uint16_t MeshID;
    uint32_t UniqueID;
    IPLObject Transform; //item placement
}; and here mesh class: class Mesh
{
    float m_scale;
    std::vector<float> m_verts;
    std::vector<int> m_tris;
    int m_vertCount;
    int m_triCount;
    int id;
public:
    Mesh() : m_scale(1.0f), m_vertCount(0), m_triCount(0) {}
    void addVertex(float x, float y, float z);
    void addTriangle(int a, int b, int c);
    void addBox(float centerX, float centerY, float centerZ,
        float width, float height, float depth);
    void addSphere(float radius, int segments, int rings, float centerX, float centerY, float centerZ);
    const float* getVerts() const { return m_verts.data(); }
    const int* getTris() const { return m_tris.data(); }
    int getVertCount() const { return m_vertCount; }
    int getTriCount() const { return m_triCount; }
    void calculateNormal(int triIndex, float* normal) const;
    int getId() { return id; }
};. How to make pathfinding using Recast&Detour? Map is really big, so better use DetourTileCache