feat: add eSceneType enum, filter scene graph to general scenes, zone parsing improvements

- Add eSceneType enum (General, Audio) replacing raw uint32_t in SceneRef
- Filter BuildSceneGraph to only include General scenes
- Skip transitions referencing non-general scenes in adjacency graph
- Rename SceneRef unknown fields to scenePosition/sceneRadius
- Zone parsing and Level improvements

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-06-21 11:38:47 -05:00
parent 1aeede3cd1
commit 7dd918d894
7 changed files with 386 additions and 112 deletions

View File

@@ -4,6 +4,20 @@
#include "NiQuaternion.h"
#include "LDFFormat.h"
#include <vector>
#include <string>
#include <array>
struct RenderAttr {
std::string name;
uint32_t numFloats{};
bool isColor{};
std::array<float, 4> values{};
};
struct RenderTechnique {
std::string name;
std::vector<RenderAttr> attrs;
};
struct SceneObject {
LWOOBJID id;
@@ -13,7 +27,7 @@ struct SceneObject {
NiPoint3 position;
NiQuaternion rotation = QuatUtils::IDENTITY;
float scale = 1.0f;
uint32_t value3;
RenderTechnique renderTechnique;
LwoNameValue settings;
};