fix(editor): add M2 render diagnostics to Info panel for NPC debugging

- Info panel now shows M2 renderer stats: model count, instance count,
  draw call count — visible in real-time to diagnose NPC rendering issues
- When placing NPCs: if models=0/instances=0, the model failed to load
  If models>0 but draws=0, it's a culling/frame-sync issue
  If draws>0, the model IS rendering but may be too small to see
This commit is contained in:
Kelsi 2026-05-05 05:56:49 -07:00
parent 9322d37b81
commit b25f7fa4bf
3 changed files with 9 additions and 0 deletions

View file

@ -49,6 +49,7 @@ public:
NpcPresets& getNpcPresets() { return npcPresets_; }
AssetBrowser& getAssetBrowser() { return assetBrowser_; }
rendering::TerrainRenderer* getTerrainRenderer();
rendering::M2Renderer* getM2Renderer() { return viewport_.getM2Renderer(); }
pipeline::AssetManager* getAssetManager() { return assetManager_.get(); }
const std::string& getLoadedMap() const { return loadedMap_; }

View file

@ -1221,6 +1221,13 @@ void EditorUI::renderPropertiesPanel(EditorApp& app) {
if (holeChunks > 0) ImGui::Text("Hole chunks: %d", holeChunks);
}
// M2 render diagnostics
if (auto* m2r = app.getM2Renderer()) {
ImGui::Text("M2: %u models, %u instances, %u draws",
m2r->getModelCount(), m2r->getInstanceCount(),
m2r->getDrawCallCount());
}
ImGui::Separator();
auto pos = app.getEditorCamera().getCamera().getPosition();
ImGui::Text("Camera: %.0f, %.0f, %.0f", pos.x, pos.y, pos.z);

View file

@ -61,6 +61,7 @@ public:
glm::vec3 getLightDir() const { return lightDir_; }
rendering::TerrainRenderer* getTerrainRenderer() { return terrainRenderer_.get(); }
rendering::M2Renderer* getM2Renderer() { return m2Renderer_.get(); }
private:
bool createPerFrameResources();