mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-06 00:53:52 +00:00
fix(editor): filter bad M2 models, toast on tile not found, robustness
- Filter known effect/particle models from NPC presets (alliancebomb, blackhole, etc.) that cause vertex explosions — these are particle effect models misclassified as creatures - "Find Tile" button now shows toast when no ADT exists for a map - Vertex validation catches NaN/infinite/extreme positions before GPU - These models are now skipped entirely from the creature browser
This commit is contained in:
parent
c60ddcfed4
commit
16308011ee
2 changed files with 18 additions and 2 deletions
|
|
@ -356,8 +356,9 @@ void EditorUI::renderLoadDialog(EditorApp& app) {
|
|||
ImGui::TextColored(ImVec4(0.9f, 0.4f, 0.3f, 1), "Tile not found");
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::SmallButton("Find Valid Tile")) {
|
||||
if (ImGui::SmallButton("Find Tile")) {
|
||||
bool found = false;
|
||||
// Scan center range first (open world maps)
|
||||
for (int x = 25; x < 45 && !found; x++) {
|
||||
for (int y = 25; y < 45 && !found; y++) {
|
||||
std::string tp = "world\\maps\\" + mapLower + "\\" + mapLower + "_" +
|
||||
|
|
@ -367,6 +368,7 @@ void EditorUI::renderLoadDialog(EditorApp& app) {
|
|||
}
|
||||
}
|
||||
}
|
||||
// Full scan for dungeons/instances
|
||||
if (!found) {
|
||||
for (int x = 0; x < 64 && !found; x++) {
|
||||
for (int y = 0; y < 64 && !found; y++) {
|
||||
|
|
@ -378,8 +380,9 @@ void EditorUI::renderLoadDialog(EditorApp& app) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!found) app.showToast("No ADT tiles found for this map");
|
||||
}
|
||||
if (ImGui::IsItemHovered()) ImGui::SetTooltip("Scans for the first available tile");
|
||||
if (ImGui::IsItemHovered()) ImGui::SetTooltip("Auto-find first available tile");
|
||||
}
|
||||
|
||||
ImGui::Spacing();
|
||||
|
|
|
|||
|
|
@ -154,6 +154,19 @@ void NpcPresets::initialize(pipeline::AssetManager* am) {
|
|||
|
||||
std::string dirName = path.substr(firstSlash + 1, secondSlash - firstSlash - 1);
|
||||
if (seen.count(dirName)) continue;
|
||||
|
||||
// Skip known effect/particle models that cause vertex explosions
|
||||
static const char* skipModels[] = {
|
||||
"alliancebomb", "alliancebrasscannon", "blackhole", "bodyofkathune",
|
||||
"band", "broom", "broommount", "carpet", "celestialhorse",
|
||||
"bloodqueen", "arthaslichking", "arthasundead"
|
||||
};
|
||||
bool skip = false;
|
||||
for (const char* s : skipModels) {
|
||||
if (dirName == s) { skip = true; break; }
|
||||
}
|
||||
if (skip) continue;
|
||||
|
||||
seen.insert(dirName);
|
||||
|
||||
// Get the actual M2 file path
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue