From 78867004f4c7a042bd0ddce10d70f8e3f1f50fa3 Mon Sep 17 00:00:00 2001 From: Shon Ferguson <shonferg@users.sourceforge.net> Date: Thu, 21 Sep 2006 20:17:11 +0000 Subject: [PATCH] Updated to latest XML. --- include/gen/obj_defines.h | 8 ++--- src/gen/obj_impl.cpp | 73 ++++++++++++++++++++------------------- src/niflib.cpp | 4 +-- 3 files changed, 43 insertions(+), 42 deletions(-) diff --git a/include/gen/obj_defines.h b/include/gen/obj_defines.h index 8ac45871..8b48b02e 100644 --- a/include/gen/obj_defines.h +++ b/include/gen/obj_defines.h @@ -535,8 +535,8 @@ return InternalGetRefs(); \ #define NI_DYNAMIC_EFFECT_MEMBERS \ bool switchState; \ mutable uint numAffectedNodes; \ -vector<Ref<NiAVObject > > affectedNodes; \ vector<uint > affectedNodeListPointers; \ +vector<Ref<NiAVObject > > affectedNodes; \ #define NI_DYNAMIC_EFFECT_INCLUDE "NiAVObject.h" \ @@ -3262,15 +3262,15 @@ return InternalGetRefs(); \ uint unknownInt1; \ uint unknownInt2; \ uint unknownInt3; \ -mutable uint numUnknownLinks; \ -vector<Ref<NiObject > > unknownLinks; \ +mutable uint numButtons; \ +vector<FxRadioButton * > buttons; \ #define FX_RADIO_BUTTON_INCLUDE "FxWidget.h" \ #define FX_RADIO_BUTTON_PARENT FxWidget \ #define FX_RADIO_BUTTON_CONSTRUCT \ - : unknownInt1((uint)0), unknownInt2((uint)0), unknownInt3((uint)0), numUnknownLinks((uint)0) \ + : unknownInt1((uint)0), unknownInt2((uint)0), unknownInt3((uint)0), numButtons((uint)0) \ #define FX_RADIO_BUTTON_READ \ InternalRead( in, link_stack, version, user_version ); \ diff --git a/src/gen/obj_impl.cpp b/src/gen/obj_impl.cpp index 0b3e2d10..64610f96 100644 --- a/src/gen/obj_impl.cpp +++ b/src/gen/obj_impl.cpp @@ -1061,30 +1061,37 @@ void NiDynamicEffect::InternalRead( istream& in, list<uint> & link_stack, unsign if ( version >= 0x0A020000 ) { NifStream( switchState, in, version ); }; - NifStream( numAffectedNodes, in, version ); + if ( version <= 0x04000002 ) { + NifStream( numAffectedNodes, in, version ); + affectedNodeListPointers.resize(numAffectedNodes); + for (uint i2 = 0; i2 < affectedNodeListPointers.size(); i2++) { + NifStream( affectedNodeListPointers[i2], in, version ); + }; + }; if ( version >= 0x0A010000 ) { + NifStream( numAffectedNodes, in, version ); affectedNodes.resize(numAffectedNodes); for (uint i2 = 0; i2 < affectedNodes.size(); i2++) { NifStream( block_num, in, version ); link_stack.push_back( block_num ); }; }; - if ( version <= 0x0A000102 ) { - affectedNodeListPointers.resize(numAffectedNodes); - for (uint i2 = 0; i2 < affectedNodeListPointers.size(); i2++) { - NifStream( affectedNodeListPointers[i2], in, version ); - }; - }; } void NiDynamicEffect::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const { NiAVObject::Write( out, link_map, version, user_version ); - numAffectedNodes = uint(affectedNodes.size()); + numAffectedNodes = uint(affectedNodeListPointers.size()); if ( version >= 0x0A020000 ) { NifStream( switchState, out, version ); }; - NifStream( numAffectedNodes, out, version ); + if ( version <= 0x04000002 ) { + NifStream( numAffectedNodes, out, version ); + for (uint i2 = 0; i2 < affectedNodeListPointers.size(); i2++) { + NifStream( affectedNodeListPointers[i2], out, version ); + }; + }; if ( version >= 0x0A010000 ) { + NifStream( numAffectedNodes, out, version ); for (uint i2 = 0; i2 < affectedNodes.size(); i2++) { if ( affectedNodes[i2] != NULL ) NifStream( link_map[StaticCast<NiObject>(affectedNodes[i2])], out, version ); @@ -1092,32 +1099,27 @@ void NiDynamicEffect::InternalWrite( ostream& out, map<NiObjectRef,uint> link_ma NifStream( 0xffffffff, out, version ); }; }; - if ( version <= 0x0A000102 ) { - for (uint i2 = 0; i2 < affectedNodeListPointers.size(); i2++) { - NifStream( affectedNodeListPointers[i2], out, version ); - }; - }; } std::string NiDynamicEffect::InternalAsString( bool verbose ) const { stringstream out; out << NiAVObject::asString(); - numAffectedNodes = uint(affectedNodes.size()); + numAffectedNodes = uint(affectedNodeListPointers.size()); out << " Switch State: " << switchState << endl; out << " Num Affected Nodes: " << numAffectedNodes << endl; - for (uint i1 = 0; i1 < affectedNodes.size(); i1++) { + for (uint i1 = 0; i1 < affectedNodeListPointers.size(); i1++) { if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; }; - out << " Affected Nodes[" << i1 << "]: " << affectedNodes[i1] << endl; + out << " Affected Node List Pointers[" << i1 << "]: " << affectedNodeListPointers[i1] << endl; }; - for (uint i1 = 0; i1 < affectedNodeListPointers.size(); i1++) { + for (uint i1 = 0; i1 < affectedNodes.size(); i1++) { if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; }; - out << " Affected Node List Pointers[" << i1 << "]: " << affectedNodeListPointers[i1] << endl; + out << " Affected Nodes[" << i1 << "]: " << affectedNodes[i1] << endl; }; return out.str(); } @@ -6737,9 +6739,9 @@ void FxRadioButton::InternalRead( istream& in, list<uint> & link_stack, unsigned NifStream( unknownInt1, in, version ); NifStream( unknownInt2, in, version ); NifStream( unknownInt3, in, version ); - NifStream( numUnknownLinks, in, version ); - unknownLinks.resize(numUnknownLinks); - for (uint i1 = 0; i1 < unknownLinks.size(); i1++) { + NifStream( numButtons, in, version ); + buttons.resize(numButtons); + for (uint i1 = 0; i1 < buttons.size(); i1++) { NifStream( block_num, in, version ); link_stack.push_back( block_num ); }; @@ -6747,14 +6749,14 @@ void FxRadioButton::InternalRead( istream& in, list<uint> & link_stack, unsigned void FxRadioButton::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const { FxWidget::Write( out, link_map, version, user_version ); - numUnknownLinks = uint(unknownLinks.size()); + numButtons = uint(buttons.size()); NifStream( unknownInt1, out, version ); NifStream( unknownInt2, out, version ); NifStream( unknownInt3, out, version ); - NifStream( numUnknownLinks, out, version ); - for (uint i1 = 0; i1 < unknownLinks.size(); i1++) { - if ( unknownLinks[i1] != NULL ) - NifStream( link_map[StaticCast<NiObject>(unknownLinks[i1])], out, version ); + NifStream( numButtons, out, version ); + for (uint i1 = 0; i1 < buttons.size(); i1++) { + if ( buttons[i1] != NULL ) + NifStream( link_map[StaticCast<NiObject>(buttons[i1])], out, version ); else NifStream( 0xffffffff, out, version ); }; @@ -6763,34 +6765,32 @@ void FxRadioButton::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, std::string FxRadioButton::InternalAsString( bool verbose ) const { stringstream out; out << FxWidget::asString(); - numUnknownLinks = uint(unknownLinks.size()); + numButtons = uint(buttons.size()); out << " Unknown Int 1: " << unknownInt1 << endl; out << " Unknown Int 2: " << unknownInt2 << endl; out << " Unknown Int 3: " << unknownInt3 << endl; - out << " Num Unknown Links: " << numUnknownLinks << endl; - for (uint i1 = 0; i1 < unknownLinks.size(); i1++) { + out << " Num Buttons: " << numButtons << endl; + for (uint i1 = 0; i1 < buttons.size(); i1++) { if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; }; - out << " Unknown Links[" << i1 << "]: " << unknownLinks[i1] << endl; + out << " Buttons[" << i1 << "]: " << buttons[i1] << endl; }; return out.str(); } void FxRadioButton::InternalFixLinks( const map<unsigned,NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { FxWidget::FixLinks( objects, link_stack, version, user_version ); - for (uint i1 = 0; i1 < unknownLinks.size(); i1++) { - unknownLinks[i1] = FixLink<NiObject>( objects, link_stack, version ); + for (uint i1 = 0; i1 < buttons.size(); i1++) { + buttons[i1] = FixLink<FxRadioButton>( objects, link_stack, version ); }; } std::list<NiObjectRef> FxRadioButton::InternalGetRefs() const { list<Ref<NiObject> > refs; refs = FxWidget::GetRefs(); - for (uint i1 = 0; i1 < unknownLinks.size(); i1++) { - if ( unknownLinks[i1] != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLinks[i1])); + for (uint i1 = 0; i1 < buttons.size(); i1++) { }; return refs; } @@ -12261,3 +12261,4 @@ std::list<NiObjectRef> RootCollisionNode::InternalGetRefs() const { refs = NiNode::GetRefs(); return refs; } + diff --git a/src/niflib.cpp b/src/niflib.cpp index eb64ca6e..389f2668 100644 --- a/src/niflib.cpp +++ b/src/niflib.cpp @@ -2,8 +2,8 @@ All rights reserved. Please see niflib.h for licence. */ //#define DEBUG // this will produce lots of output -#define PRINT_OBJECT_NAMES -#define PRINT_OBJECT_CONTENTS +//#define PRINT_OBJECT_NAMES +//#define PRINT_OBJECT_CONTENTS //#define DEBUG_LINK_PHASE //#define DEBUG_HEADER_FOOTER -- GitLab