Recast editor cleanup and improvements

* Removed Samples button and dialogue.
* Removed SoloMesh.
* Removed TempObstacles.
* Limit 'Verts Per Poly' to 6 (DT_VERTS_PER_POLYGON).
* Moved hulldef constant and handler to TileMesh.
* Set m_tileSize based on hull (small = 32, med_short = 32, medium = 32, large = 64, extra_large = 64).
This commit is contained in:
Kawe Mazidjatari 2022-07-26 15:45:40 +02:00
parent 112a530d5a
commit ba97662c99
6 changed files with 22 additions and 112 deletions

View File

@ -178,25 +178,8 @@ void Sample::resetCommonSettings()
m_partitionType = SAMPLE_PARTITION_WATERSHED;
m_reachabilityTableCount = 4;
}
const hulldef hulls[5] = {
{ "small", 8, 72 * 0.5, 45, 512.0f },
{ "med_short", 20, 72 * 0.5, 50, 512.0f },
{ "medium", 48, 150 * 0.5, 55, 512.0f },
{ "large", 60, 235 * 0.5, 60, 960.0f },
{ "extra_large", 88, 235 * 0.5, 65, 960.0f },
};
void Sample::handleCommonSettings()
{
for (const hulldef& h : hulls)
{
if (imguiButton(h.name))
{
m_agentRadius = h.radius;
m_agentMaxClimb = h.climb_height;
m_agentHeight = h.height;
m_navmeshName = h.name;
}
}
imguiLabel("Rasterization");
imguiSlider("Cell Size", &m_cellSize, 0.1f, 100.0f, 0.01f);
imguiSlider("Cell Height", &m_cellHeight, 0.1f, 100.0f, 0.01f);
@ -246,7 +229,7 @@ void Sample::handleCommonSettings()
imguiLabel("Polygonization");
imguiSlider("Max Edge Length", &m_edgeMaxLen, 0.0f, 50.0f, 1.0f);
imguiSlider("Max Edge Error", &m_edgeMaxError, 0.1f, 3.0f, 0.1f);
imguiSlider("Verts Per Poly", &m_vertsPerPoly, 3.0f, 12.0f, 1.0f);
imguiSlider("Verts Per Poly", &m_vertsPerPoly, 3.0f, 6.0f, 1.0f);
imguiSeparator();
imguiLabel("Detail Mesh");

View File

@ -207,9 +207,26 @@ void Sample_TileMesh::cleanup()
rcFreePolyMeshDetail(m_dmesh);
m_dmesh = 0;
}
const hulldef hulls[5] = {
{ "small", 8, 72 * 0.5, 45, 32.0f },
{ "med_short", 20, 72 * 0.5, 50, 32.0f },
{ "medium", 48, 150 * 0.5, 55, 32.0f },
{ "large", 60, 235 * 0.5, 60, 64.0f },
{ "extra_large", 88, 235 * 0.5, 65, 64.0f },
};
void Sample_TileMesh::handleSettings()
{
for (const hulldef& h : hulls)
{
if (imguiButton(h.name))
{
m_agentRadius = h.radius;
m_agentMaxClimb = h.climb_height;
m_agentHeight = h.height;
m_navmeshName = h.name;
m_tileSize = h.tile_size;
}
}
Sample::handleCommonSettings();
if (imguiCheck("Keep Itermediate Results", m_keepInterResults))
@ -776,6 +793,7 @@ void Sample_TileMesh::buildAllHulls()
m_agentMaxClimb = h.climb_height;
m_agentHeight = h.height;
m_navmeshName = h.name;
m_tileSize = h.tile_size;
handleSettings();
handleBuild();

View File

@ -135,7 +135,7 @@ protected:
float m_detailSampleMaxError;
int m_partitionType;
int m_reachabilityTableCount;
const char* m_navmeshName="unk";
const char* m_navmeshName = "unnamed";
SampleTool* m_tool;
SampleToolState* m_toolStates[MAX_TOOLS];

View File

@ -23,9 +23,7 @@
#include "NavEditor/Include/InputGeom.h"
#include "NavEditor/Include/TestCase.h"
#include "NavEditor/Include/Filelist.h"
#include "NavEditor/Include/Sample_SoloMesh.h"
#include "NavEditor/Include/Sample_TileMesh.h"
#include "NavEditor/Include/Sample_TempObstacles.h"
#include "NavEditor/Include/Sample_Debug.h"
#include "NavEditor/include/DroidSans.h"
@ -37,17 +35,8 @@ struct SampleItem
Sample* (*create)();
const string name;
};
Sample* createSolo() { return new Sample_SoloMesh(); }
Sample* createTile() { return new Sample_TileMesh(); }
Sample* createTempObstacle() { return new Sample_TempObstacles(); }
Sample* createDebug() { return new Sample_Debug(); }
static SampleItem g_samples[] =
{
{ createSolo, "Solo Mesh" },
{ createTile, "Tile Mesh" },
{ createTempObstacle, "Temp Obstacles" },
};
static const int g_nsamples = sizeof(g_samples) / sizeof(SampleItem);
void save_ply(std::vector<float>& pts,std::vector<int>& colors,rcIntArray& tris)
{
@ -395,7 +384,6 @@ int not_main(int argc, char** argv)
float camr = 1000;
float origCameraEulers[] = {0, 0}; // Used to compute rotational changes across frames.
string sampleName = "Choose Sample...";
vector<string> files;
const string meshesFolder = "Levels";
string meshName = "Choose Level...";
@ -411,8 +399,7 @@ int not_main(int argc, char** argv)
//Load tiled sample
sample = g_samples[1].create();
sampleName = g_samples[1].name;
sample = createTile();
sample->setContext(&ctx);
if (geom)
{
@ -828,22 +815,6 @@ int not_main(int argc, char** argv)
if (imguiCheck("Show Tools", showTools))
showTools = !showTools;
imguiSeparator();
imguiLabel("Sample");
if (imguiButton(sampleName.c_str()))
{
if (showSample)
{
showSample = false;
}
else
{
showSample = true;
showLevels = false;
showTestCases = false;
}
}
imguiSeparator();
imguiLabel("Input Level");
@ -940,34 +911,6 @@ int not_main(int argc, char** argv)
if (showSample)
{
static int levelScroll = 0;
if (imguiBeginScrollArea("Choose Sample", width-10-250-10-200, height-10-250, 200, 250, &levelScroll))
mouseOverMenu = true;
Sample* newSample = 0;
for (int i = 0; i < g_nsamples; ++i)
{
if (imguiItem(g_samples[i].name.c_str()))
{
newSample = g_samples[i].create();
if (newSample)
{
sampleName = g_samples[i].name;
//newSample->is_tf2 = &tf2_transforms;
}
}
}
if (newSample)
{
delete sample;
sample = newSample;
sample->setContext(&ctx);
if (geom)
{
sample->handleMeshChanged(geom);
}
showSample = false;
}
if (geom || sample)
{
const float* bmin = 0;
@ -1085,24 +1028,6 @@ int not_main(int argc, char** argv)
test = 0;
}
// Create sample
Sample* newSample = 0;
for (int i = 0; i < g_nsamples; ++i)
{
if (g_samples[i].name == test->getSampleName())
{
newSample = g_samples[i].create();
if (newSample)
{
sampleName = g_samples[i].name;
//newSample->is_tf2 = &tf2_transforms;
}
}
}
delete sample;
sample = newSample;
if (sample)
{
sample->setContext(&ctx);

View File

@ -30,8 +30,6 @@
<ClInclude Include="..\naveditor\include\Sample.h" />
<ClInclude Include="..\naveditor\include\SampleInterfaces.h" />
<ClInclude Include="..\naveditor\include\Sample_Debug.h" />
<ClInclude Include="..\naveditor\include\Sample_SoloMesh.h" />
<ClInclude Include="..\naveditor\include\Sample_TempObstacles.h" />
<ClInclude Include="..\naveditor\include\Sample_TileMesh.h" />
<ClInclude Include="..\naveditor\include\TestCase.h" />
<ClInclude Include="..\naveditor\include\ValueHistory.h" />
@ -58,8 +56,6 @@
<ClCompile Include="..\naveditor\Sample.cpp" />
<ClCompile Include="..\naveditor\SampleInterfaces.cpp" />
<ClCompile Include="..\naveditor\Sample_Debug.cpp" />
<ClCompile Include="..\naveditor\Sample_SoloMesh.cpp" />
<ClCompile Include="..\naveditor\Sample_TempObstacles.cpp" />
<ClCompile Include="..\naveditor\Sample_TileMesh.cpp" />
<ClCompile Include="..\naveditor\TestCase.cpp" />
<ClCompile Include="..\naveditor\ValueHistory.cpp" />

View File

@ -57,12 +57,6 @@
<ClInclude Include="..\naveditor\include\InputGeom.h">
<Filter>builder\include</Filter>
</ClInclude>
<ClInclude Include="..\naveditor\include\Sample_SoloMesh.h">
<Filter>builder\include</Filter>
</ClInclude>
<ClInclude Include="..\naveditor\include\Sample_TempObstacles.h">
<Filter>builder\include</Filter>
</ClInclude>
<ClInclude Include="..\naveditor\include\Sample_TileMesh.h">
<Filter>builder\include</Filter>
</ClInclude>
@ -176,12 +170,6 @@
<ClCompile Include="..\naveditor\ValueHistory.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\naveditor\Sample_SoloMesh.cpp">
<Filter>builder</Filter>
</ClCompile>
<ClCompile Include="..\naveditor\Sample_TempObstacles.cpp">
<Filter>builder</Filter>
</ClCompile>
<ClCompile Include="..\naveditor\Sample_TileMesh.cpp">
<Filter>builder</Filter>
</ClCompile>