bool Sample_Debug::handleBuild() { char sMapID[5]; sprintf(sMapID, "%.3s", m_meshName); int mapID = atoi(sMapID); delete m_navMesh; m_navMesh = 0; delete [] m_pmesh; m_pmesh = 0; delete [] m_hf; m_hf = 0; m_hfCount = 0; delete [] m_chf; m_chf = 0; m_chfCount = 0; delete [] m_cset; m_cset = 0; m_csetCount = 0; duReadNavMesh(mapID, m_navMesh); m_pmeshCount = duReadPolyMesh(mapID, m_pmesh); m_hfCount = duReadHeightfield(mapID, m_hf); m_chfCount = duReadCompactHeightfield(mapID, m_chf); m_dmeshCount = duReadDetailMesh(mapID, m_dmesh); m_csetCount = duReadContourSet(mapID, m_cset); if(m_tool) m_tool->init(this); if(m_navMesh) { m_drawMode = DRAWMODE_NAVMESH_TRANS; m_tileSize = m_navMesh->getParams()->tileHeight; } return true; }
Sample_Debug::Sample_Debug() : m_chf(0), m_cset(0), m_pmesh(0) { resetCommonSettings(); // Test /* m_chf = rcAllocCompactHeightfield(); FileIO io; if (!io.openForRead("test.chf")) { delete m_chf; m_chf = 0; } else { if (!duReadCompactHeightfield(*m_chf, &io)) { delete m_chf; m_chf = 0; } }*/ /* if (m_chf) { unsigned short ymin = 0xffff; unsigned short ymax = 0; for (int i = 0; i < m_chf->spanCount; ++i) { const rcCompactSpan& s = m_chf->spans[i]; if (s.y < ymin) ymin = s.y; if (s.y > ymax) ymax = s.y; } printf("ymin=%d ymax=%d\n", (int)ymin, (int)ymax); int maxSpans = 0; for (int i = 0; i < m_chf->width*m_chf->height; ++i) { maxSpans = rcMax(maxSpans, (int)m_chf->cells[i].count); } printf("maxSpans = %d\n", maxSpans); }*/ /* const float orig[3] = {0,0,0}; m_navMesh = new dtNavMesh; m_navMesh->init(orig, 133.333f,133.333f, 2048, 4096, 4096); unsigned char* data = 0; int dataSize = 0; // Tile_-13_-14.bin is basically just the bytes that was output by Detour. It should be loaded at X: -13 and Y: -14. dataSize = loadBin("Tile_-13_-13.bin", &data); if (dataSize > 0) { m_navMesh->addTileAt(-13,-13, data, dataSize, true); dtMeshHeader* header = (dtMeshHeader*)data; vcopy(m_bmin, header->bmin); vcopy(m_bmax, header->bmax); } dataSize = loadBin("Tile_-13_-14.bin", &data); if (dataSize > 0) { m_navMesh->addTileAt(-13,-14, data, dataSize, true); } dataSize = loadBin("Tile_-14_-14.bin", &data); if (dataSize > 0) { m_navMesh->addTileAt(-14,-14, data, dataSize, true); } const float ext[3] = {40,100,40}; const float center[3] = { -1667.9491f, 135.52649f, -1680.6149f }; dtQueryFilter filter; m_ref = m_navMesh->findNearestPoly(center, ext, &filter, 0); vcopy(m_ext, ext); vcopy(m_center, center);*/ { m_cset = rcAllocContourSet(); if (m_cset) { FileIO io; if (io.openForRead("PathSet_TMP_NA_PathingTestAReg1_1_2_CS.rc")) { duReadContourSet(*m_cset, &io); printf("bmin=(%f,%f,%f) bmax=(%f,%f,%f)\n", m_cset->bmin[0], m_cset->bmin[1], m_cset->bmin[2], m_cset->bmax[0], m_cset->bmax[1], m_cset->bmax[2]); printf("cs=%f ch=%f\n", m_cset->cellSizeXZ, m_cset->cellSizeY); } else { printf("could not open test.cset\n"); } } else { printf("Could not alloc cset\n"); } /* if (m_cset) { m_pmesh = rcAllocPolyMesh(); if (m_pmesh) { rcBuildPolyMesh(m_ctx, *m_cset, 6, *m_pmesh); } }*/ } }