diff --git a/code/nel/tools/pipeline/max/builtin/reference_maker.cpp b/code/nel/tools/pipeline/max/builtin/reference_maker.cpp index 484932108..2ec47999a 100644 --- a/code/nel/tools/pipeline/max/builtin/reference_maker.cpp +++ b/code/nel/tools/pipeline/max/builtin/reference_maker.cpp @@ -108,7 +108,7 @@ void CReferenceMaker::parse(uint16 version, TParseLevel level) if (references2034->Value[i] > 0) { CReferenceMaker *referenceMaker = dynamic_cast(container()->getByStorageIndex(references2034->Value[i])); - if (!referenceMaker) nlerror("Reference maker is %s not a reference maker", container()->getByStorageIndex(references2034->Value[i])->classDesc()->classId().toString().c_str()); + if (!referenceMaker) nlerror("Reference maker %s %s, 0x%x is not a reference maker", ucstring(container()->getByStorageIndex(references2034->Value[i])->classDesc()->displayName()).toUtf8().c_str(), container()->getByStorageIndex(references2034->Value[i])->classDesc()->classId().toString().c_str(), container()->getByStorageIndex(references2034->Value[i])->classDesc()->superClassId()); setReference(i, referenceMaker); } } @@ -128,7 +128,7 @@ void CReferenceMaker::parse(uint16 version, TParseLevel level) sint32 referenceindex = (*it); ++it; CReferenceMaker *referenceMaker = dynamic_cast(container()->getByStorageIndex(referenceindex)); - if (!referenceMaker) nlerror("Reference maker is %s not a reference maker", container()->getByStorageIndex(referenceindex)->classDesc()->classId().toString().c_str()); + if (!referenceMaker) nlerror("Reference maker %s, 0x%x is not a reference maker", container()->getByStorageIndex(referenceindex)->classDesc()->classId().toString().c_str(), container()->getByStorageIndex(referenceindex)->classDesc()->superClassId()); setReference(index, referenceMaker); } } diff --git a/code/nel/tools/pipeline/max/scene.cpp b/code/nel/tools/pipeline/max/scene.cpp index 2de170cea..3660a3912 100644 --- a/code/nel/tools/pipeline/max/scene.cpp +++ b/code/nel/tools/pipeline/max/scene.cpp @@ -194,8 +194,10 @@ IStorageObject *CSceneClassContainer::createChunkById(uint16 id, bool container) { // Known unknown special identifiers... case 0x2032: + return m_SceneClassRegistry->createUnknown(m_Scene, 0x0, NLMISC::CClassId(0x29263a68, 0x405f22f5), ucstring("Unknown 0x2032"), ucstring("0x2032_0x2033_dll"), ucstring("Not part of the dll directory!")); case 0x2033: - return new CSceneClass(m_Scene); // TODO: Make dummy dllentry and classentry for these... + return m_SceneClassRegistry->createUnknown(m_Scene, 0x0, NLMISC::CClassId(0x4ec13906, 0x5578130e), ucstring("Unknown 0x2033"), ucstring("0x2032_0x2033_dll"), ucstring("Not part of the dll directory!")); + // return new CSceneClass(m_Scene); // TODO: Make dummy dllentry and classentry for these... // return static_cast(new CSceneClassUnknown(dllEntry, classEntry)); } const CClassEntry *classEntry = m_ClassDirectory3->get(id); diff --git a/code/nel/tools/pipeline/max_dump/info.txt b/code/nel/tools/pipeline/max_dump/info.txt index 838100500..bb6d3ee4a 100644 --- a/code/nel/tools/pipeline/max_dump/info.txt +++ b/code/nel/tools/pipeline/max_dump/info.txt @@ -858,3 +858,71 @@ UTILITY_CLASS_ID 0x001020 Size: 6 String: no fx. } } + + + + + +Scene class references + +ver3 + References 0x2034: PARSED { + 0: (Material Editor, (0x00000c80, 0x00000000)) + 1: (MtlBaseLib, (0x00003333, 0x00000000)) + 2: (Default Sound, (0x00000001, 0x00000000)) + 3: (RootNode, (0x00000002, 0x00000000)) + 4: (RenderEnvironment, (0xee448b23, 0x00000000)) + 5: (NamedSelSetList, (0x00008d52, 0x00000000)) + 6: (TVNode, (0x8d73b8aa, 0x90f2ee71)) + 7: (Grid Reference, (0x00000001, 0x00000000)) + 8: (RenderEffects, (0x17356912, 0x00000000)) + 9: (Shadow Map, (0x00000100, 0x00000000)) + 10: (Layer Manager, (0x0d7374fc, 0x51ff028e)) } + +ver9 + References 0x2034: PARSED { + 0: (Material Editor, (0x00000c80, 0x00000000)) + 1: (MtlBaseLib, (0x00003333, 0x00000000)) + 2: (Default Sound, (0x00000001, 0x00000000)) + 3: (RootNode, (0x00000002, 0x00000000)) + 4: (RenderEnvironment, (0xee448b23, 0x00000000)) + 5: (NamedSelSetList, (0x00008d52, 0x00000000)) + 6: (TVNode, (0x8d73b8aa, 0x90f2ee71)) + 7: (Grid Reference, (0x00000001, 0x00000000)) + 8: (RenderEffects, (0x17356912, 0x00000000)) + 9: (Shadow Map, (0x00000100, 0x00000000)) + 10: (Layer Manager, (0x0d7374fc, 0x51ff028e)) + 11: (TrackSetList, (0x2cf03595, 0x00000000)) } + +ver2008 + References 0x2034: PARSED { + 0: (Material Editor, (0x00000c80, 0x00000000)) + 1: (MtlBaseLib, (0x00003333, 0x00000000)) + 2: (Default Sound, (0x00000001, 0x00000000)) + 3: (RootNode, (0x00000002, 0x00000000)) + 4: (RenderEnvironment, (0xee448b23, 0x00000000)) + 5: (NamedSelSetList, (0x00008d52, 0x00000000)) + 6: (TVNode, (0x8d73b8aa, 0x90f2ee71)) + 7: (Grid Reference, (0x00000001, 0x00000000)) + 8: (RenderEffects, (0x17356912, 0x00000000)) + 9: (Shadow Map, (0x00000100, 0x00000000)) + 10: (Layer Manager, (0x0d7374fc, 0x51ff028e)) + 11: (TrackSetList, (0x2cf03595, 0x00000000)) } + +ver2010 + References 0x2034: PARSED { + 0: (Material Editor, (0x00000c80, 0x00000000)) + 1: (MtlBaseLib, (0x00003333, 0x00000000)) + 2: (ProSound, (0x476fa9de, 0x5b918e4a)) + 3: (RootNode, (0x00000002, 0x00000000)) + 4: (RenderEnvironment, (0xee448b23, 0x00000000)) + 5: (NamedSelSetList, (0x00008d52, 0x00000000)) + 6: (TVNode, (0x8d73b8aa, 0x90f2ee71)) + 7: (Grid Reference, (0x00000001, 0x00000000)) + 8: (RenderEffects, (0x17356912, 0x00000000)) + 9: (Shadow Map, (0x00000100, 0x00000000)) + 10: (Layer Manager, (0x0d7374fc, 0x51ff028e)) + 11: (TrackSetList, (0x2cf03595, 0x00000000)) } + + + diff --git a/code/nel/tools/pipeline/max_dump/main.cpp b/code/nel/tools/pipeline/max_dump/main.cpp index 9e7f7a4cc..3fcc02e35 100644 --- a/code/nel/tools/pipeline/max_dump/main.cpp +++ b/code/nel/tools/pipeline/max_dump/main.cpp @@ -31,8 +31,8 @@ #include "../max/builtin/storage/app_data.h" #include "../max/builtin/builtin.h" -//static const char *filename = "/srv/work/database/interfaces/anims_max/cp_fy_hof_species.max"; -static const char *filename = "/home/kaetemi/source/minimax/GE_Acc_MikotoBaniere.max"; +static const char *filename = "/srv/work/database/interfaces/anims_max/cp_fy_hof_species.max"; +//static const char *filename = "/home/kaetemi/source/minimax/GE_Acc_MikotoBaniere.max"; //static const char *filename = "/home/kaetemi/3dsMax/scenes/test2008.max"; //static const char *filename = "/home/kaetemi/3dsMax/scenes/teapot_test_scene.max"; static const char *streamname = "Scene";