From ce74e6080ded039a9acab3405f7773bc04722d97 Mon Sep 17 00:00:00 2001 From: Shon Ferguson <shonferg@users.sourceforge.net> Date: Fri, 7 Jul 2006 02:37:19 +0000 Subject: [PATCH] Determined that there are references to NiBSplineData and NiBSplineBasisData in all NiBSplineInterpolator derived classes. Consolidated the various references from the derived classes to the NiBSplineInterpolator class in the XML and in Niflib. --- gen/obj_defines.h | 13 +-- gen/obj_impl.cpp | 117 +++++++-------------- obj/NiBSplineCompPoint3Interpolator.cpp | 11 -- obj/NiBSplineCompPoint3Interpolator.h | 10 -- obj/NiBSplineCompTransformInterpolator.cpp | 18 ---- obj/NiBSplineCompTransformInterpolator.h | 16 --- obj/NiBSplineInterpolator.cpp | 17 +++ obj/NiBSplineInterpolator.h | 15 +++ 8 files changed, 77 insertions(+), 140 deletions(-) diff --git a/gen/obj_defines.h b/gen/obj_defines.h index 9ab7c252..3cd44b8d 100644 --- a/gen/obj_defines.h +++ b/gen/obj_defines.h @@ -442,13 +442,15 @@ return InternalGetRefs(); \ #define NI_B_SPLINE_INTERPOLATOR_MEMBERS \ float startTime; \ float stopTime; \ +Ref<NiBSplineData > splineData; \ +Ref<NiBSplineBasisData > basisData; \ #define NI_B_SPLINE_INTERPOLATOR_INCLUDE "NiInterpolator.h" \ #define NI_B_SPLINE_INTERPOLATOR_PARENT NiInterpolator \ #define NI_B_SPLINE_INTERPOLATOR_CONSTRUCT \ - : startTime(0.0f), stopTime(0.0f) \ + : startTime(0.0f), stopTime(0.0f), splineData(NULL), basisData(NULL) \ #define NI_B_SPLINE_INTERPOLATOR_READ \ InternalRead( in, link_stack, version, user_version ); \ @@ -2143,7 +2145,7 @@ InternalFixLinks( objects, link_stack, version, user_version ); \ return InternalGetRefs(); \ #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_MEMBERS \ -array<float,6> unknownFloats; \ +array<float,4> unknownFloats; \ #define NI_B_SPLINE_COMP_FLOAT_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \ @@ -2167,8 +2169,6 @@ InternalFixLinks( objects, link_stack, version, user_version ); \ return InternalGetRefs(); \ #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS \ -Ref<NiBSplineData > data; \ -Ref<NiObject > unknownLink; \ array<float,6> unknownFloats; \ #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_INCLUDE "NiBSplineInterpolator.h" \ @@ -2176,7 +2176,6 @@ array<float,6> unknownFloats; \ #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_PARENT NiBSplineInterpolator \ #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_CONSTRUCT \ - : data(NULL), unknownLink(NULL) \ #define NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_READ \ InternalRead( in, link_stack, version, user_version ); \ @@ -2194,8 +2193,6 @@ InternalFixLinks( objects, link_stack, version, user_version ); \ return InternalGetRefs(); \ #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS \ -Ref<NiBSplineData > data; \ -Ref<NiBSplineBasisData > basisData; \ Vector3 translation; \ Quaternion rotation; \ float scale; \ @@ -2212,7 +2209,7 @@ float scaleMultiplier; \ #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_PARENT NiBSplineInterpolator \ #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_CONSTRUCT \ - : data(NULL), basisData(NULL), scale(0.0f), translateBias(0.0f), translateMultiplier(0.0f), rotationBias(0.0f), rotationMultiplier(0.0f), scaleBias(0.0f), scaleMultiplier(0.0f) \ + : scale(0.0f), translateBias(0.0f), translateMultiplier(0.0f), rotationBias(0.0f), rotationMultiplier(0.0f), scaleBias(0.0f), scaleMultiplier(0.0f) \ #define NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_READ \ InternalRead( in, link_stack, version, user_version ); \ diff --git a/gen/obj_impl.cpp b/gen/obj_impl.cpp index 93fc8436..df56df67 100644 --- a/gen/obj_impl.cpp +++ b/gen/obj_impl.cpp @@ -802,15 +802,28 @@ std::list<NiObjectRef> NiBlendInterpolator::InternalGetRefs() const { } void NiBSplineInterpolator::InternalRead( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { + uint block_num; NiInterpolator::Read( in, link_stack, version, user_version ); NifStream( startTime, in, version ); NifStream( stopTime, in, version ); + NifStream( block_num, in, version ); + link_stack.push_back( block_num ); + NifStream( block_num, in, version ); + link_stack.push_back( block_num ); } void NiBSplineInterpolator::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const { NiInterpolator::Write( out, link_map, version, user_version ); NifStream( startTime, out, version ); NifStream( stopTime, out, version ); + if ( splineData != NULL ) + NifStream( link_map[StaticCast<NiObject>(splineData)], out, version ); + else + NifStream( 0xffffffff, out, version ); + if ( basisData != NULL ) + NifStream( link_map[StaticCast<NiObject>(basisData)], out, version ); + else + NifStream( 0xffffffff, out, version ); } std::string NiBSplineInterpolator::InternalAsString( bool verbose ) const { @@ -818,16 +831,40 @@ std::string NiBSplineInterpolator::InternalAsString( bool verbose ) const { out << NiInterpolator::asString(); out << " Start Time: " << startTime << endl; out << " Stop Time: " << stopTime << endl; + out << " Spline Data: " << splineData << endl; + out << " Basis Data: " << basisData << endl; return out.str(); } void NiBSplineInterpolator::InternalFixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { NiInterpolator::FixLinks( objects, link_stack, version, user_version ); + if (link_stack.empty()) + throw runtime_error("Trying to pop a link from empty stack. This is probably a bug."); + if (link_stack.front() != 0xffffffff) { + splineData = DynamicCast<NiBSplineData>(objects[link_stack.front()]); + if ( splineData == NULL ) + throw runtime_error("Link could not be cast to required type during file read. This NIF file may be invalid or improperly understood."); + } else + splineData = NULL; + link_stack.pop_front(); + if (link_stack.empty()) + throw runtime_error("Trying to pop a link from empty stack. This is probably a bug."); + if (link_stack.front() != 0xffffffff) { + basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); + if ( basisData == NULL ) + throw runtime_error("Link could not be cast to required type during file read. This NIF file may be invalid or improperly understood."); + } else + basisData = NULL; + link_stack.pop_front(); } std::list<NiObjectRef> NiBSplineInterpolator::InternalGetRefs() const { list<Ref<NiObject> > refs; refs = NiInterpolator::GetRefs(); + if ( splineData != NULL ) + refs.push_back(StaticCast<NiObject>(splineData)); + if ( basisData != NULL ) + refs.push_back(StaticCast<NiObject>(basisData)); return refs; } @@ -4436,14 +4473,14 @@ std::list<NiObjectRef> NiBSplineBasisData::InternalGetRefs() const { void NiBSplineCompFloatInterpolator::InternalRead( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { NiBSplineInterpolator::Read( in, link_stack, version, user_version ); - for (uint i1 = 0; i1 < 6; i1++) { + for (uint i1 = 0; i1 < 4; i1++) { NifStream( unknownFloats[i1], in, version ); }; } void NiBSplineCompFloatInterpolator::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const { NiBSplineInterpolator::Write( out, link_map, version, user_version ); - for (uint i1 = 0; i1 < 6; i1++) { + for (uint i1 = 0; i1 < 4; i1++) { NifStream( unknownFloats[i1], out, version ); }; } @@ -4451,7 +4488,7 @@ void NiBSplineCompFloatInterpolator::InternalWrite( ostream& out, map<NiObjectRe std::string NiBSplineCompFloatInterpolator::InternalAsString( bool verbose ) const { stringstream out; out << NiBSplineInterpolator::asString(); - for (uint i1 = 0; i1 < 6; i1++) { + for (uint i1 = 0; i1 < 4; i1++) { if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; break; @@ -4472,12 +4509,7 @@ std::list<NiObjectRef> NiBSplineCompFloatInterpolator::InternalGetRefs() const { } void NiBSplineCompPoint3Interpolator::InternalRead( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { - uint block_num; NiBSplineInterpolator::Read( in, link_stack, version, user_version ); - NifStream( block_num, in, version ); - link_stack.push_back( block_num ); - NifStream( block_num, in, version ); - link_stack.push_back( block_num ); for (uint i1 = 0; i1 < 6; i1++) { NifStream( unknownFloats[i1], in, version ); }; @@ -4485,14 +4517,6 @@ void NiBSplineCompPoint3Interpolator::InternalRead( istream& in, list<uint> & li void NiBSplineCompPoint3Interpolator::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const { NiBSplineInterpolator::Write( out, link_map, version, user_version ); - if ( data != NULL ) - NifStream( link_map[StaticCast<NiObject>(data)], out, version ); - else - NifStream( 0xffffffff, out, version ); - if ( unknownLink != NULL ) - NifStream( link_map[StaticCast<NiObject>(unknownLink)], out, version ); - else - NifStream( 0xffffffff, out, version ); for (uint i1 = 0; i1 < 6; i1++) { NifStream( unknownFloats[i1], out, version ); }; @@ -4501,8 +4525,6 @@ void NiBSplineCompPoint3Interpolator::InternalWrite( ostream& out, map<NiObjectR std::string NiBSplineCompPoint3Interpolator::InternalAsString( bool verbose ) const { stringstream out; out << NiBSplineInterpolator::asString(); - out << " Data: " << data << endl; - out << " Unknown Link: " << unknownLink << endl; for (uint i1 = 0; i1 < 6; i1++) { if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; @@ -4515,43 +4537,16 @@ std::string NiBSplineCompPoint3Interpolator::InternalAsString( bool verbose ) co void NiBSplineCompPoint3Interpolator::InternalFixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { NiBSplineInterpolator::FixLinks( objects, link_stack, version, user_version ); - if (link_stack.empty()) - throw runtime_error("Trying to pop a link from empty stack. This is probably a bug."); - if (link_stack.front() != 0xffffffff) { - data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); - if ( data == NULL ) - throw runtime_error("Link could not be cast to required type during file read. This NIF file may be invalid or improperly understood."); - } else - data = NULL; - link_stack.pop_front(); - if (link_stack.empty()) - throw runtime_error("Trying to pop a link from empty stack. This is probably a bug."); - if (link_stack.front() != 0xffffffff) { - unknownLink = DynamicCast<NiObject>(objects[link_stack.front()]); - if ( unknownLink == NULL ) - throw runtime_error("Link could not be cast to required type during file read. This NIF file may be invalid or improperly understood."); - } else - unknownLink = NULL; - link_stack.pop_front(); } std::list<NiObjectRef> NiBSplineCompPoint3Interpolator::InternalGetRefs() const { list<Ref<NiObject> > refs; refs = NiBSplineInterpolator::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - if ( unknownLink != NULL ) - refs.push_back(StaticCast<NiObject>(unknownLink)); return refs; } void NiBSplineCompTransformInterpolator::InternalRead( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { - uint block_num; NiBSplineInterpolator::Read( in, link_stack, version, user_version ); - NifStream( block_num, in, version ); - link_stack.push_back( block_num ); - NifStream( block_num, in, version ); - link_stack.push_back( block_num ); NifStream( translation, in, version ); NifStream( rotation, in, version ); NifStream( scale, in, version ); @@ -4566,14 +4561,6 @@ void NiBSplineCompTransformInterpolator::InternalRead( istream& in, list<uint> & void NiBSplineCompTransformInterpolator::InternalWrite( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version, unsigned int user_version ) const { NiBSplineInterpolator::Write( out, link_map, version, user_version ); - if ( data != NULL ) - NifStream( link_map[StaticCast<NiObject>(data)], out, version ); - else - NifStream( 0xffffffff, out, version ); - if ( basisData != NULL ) - NifStream( link_map[StaticCast<NiObject>(basisData)], out, version ); - else - NifStream( 0xffffffff, out, version ); NifStream( translation, out, version ); NifStream( rotation, out, version ); NifStream( scale, out, version ); @@ -4589,8 +4576,6 @@ void NiBSplineCompTransformInterpolator::InternalWrite( ostream& out, map<NiObje std::string NiBSplineCompTransformInterpolator::InternalAsString( bool verbose ) const { stringstream out; out << NiBSplineInterpolator::asString(); - out << " Data: " << data << endl; - out << " Basis Data: " << basisData << endl; out << " Translation: " << translation << endl; out << " Rotation: " << rotation << endl; out << " Scale: " << scale << endl; @@ -4606,33 +4591,11 @@ std::string NiBSplineCompTransformInterpolator::InternalAsString( bool verbose ) void NiBSplineCompTransformInterpolator::InternalFixLinks( const vector<NiObjectRef> & objects, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { NiBSplineInterpolator::FixLinks( objects, link_stack, version, user_version ); - if (link_stack.empty()) - throw runtime_error("Trying to pop a link from empty stack. This is probably a bug."); - if (link_stack.front() != 0xffffffff) { - data = DynamicCast<NiBSplineData>(objects[link_stack.front()]); - if ( data == NULL ) - throw runtime_error("Link could not be cast to required type during file read. This NIF file may be invalid or improperly understood."); - } else - data = NULL; - link_stack.pop_front(); - if (link_stack.empty()) - throw runtime_error("Trying to pop a link from empty stack. This is probably a bug."); - if (link_stack.front() != 0xffffffff) { - basisData = DynamicCast<NiBSplineBasisData>(objects[link_stack.front()]); - if ( basisData == NULL ) - throw runtime_error("Link could not be cast to required type during file read. This NIF file may be invalid or improperly understood."); - } else - basisData = NULL; - link_stack.pop_front(); } std::list<NiObjectRef> NiBSplineCompTransformInterpolator::InternalGetRefs() const { list<Ref<NiObject> > refs; refs = NiBSplineInterpolator::GetRefs(); - if ( data != NULL ) - refs.push_back(StaticCast<NiObject>(data)); - if ( basisData != NULL ) - refs.push_back(StaticCast<NiObject>(basisData)); return refs; } diff --git a/obj/NiBSplineCompPoint3Interpolator.cpp b/obj/NiBSplineCompPoint3Interpolator.cpp index 47158d6f..0e2d2d52 100644 --- a/obj/NiBSplineCompPoint3Interpolator.cpp +++ b/obj/NiBSplineCompPoint3Interpolator.cpp @@ -2,8 +2,6 @@ All rights reserved. Please see niflib.h for licence. */ #include "NiBSplineCompPoint3Interpolator.h" -#include "NiBSplineData.h" -#include "NiObject.h" using namespace Niflib; //Definition of TYPE constant @@ -36,12 +34,3 @@ list<NiObjectRef> NiBSplineCompPoint3Interpolator::GetRefs() const { const Type & NiBSplineCompPoint3Interpolator::GetType() const { return TYPE; }; - -Ref<NiBSplineData > NiBSplineCompPoint3Interpolator::GetData() const { - return data; -} - -void NiBSplineCompPoint3Interpolator::SetData( Ref<NiBSplineData > value ) { - data = value; -} - diff --git a/obj/NiBSplineCompPoint3Interpolator.h b/obj/NiBSplineCompPoint3Interpolator.h index ef6234ef..12c64178 100644 --- a/obj/NiBSplineCompPoint3Interpolator.h +++ b/obj/NiBSplineCompPoint3Interpolator.h @@ -10,10 +10,6 @@ All rights reserved. Please see niflib.h for licence. */ #include "../Ref.h" namespace Niflib { -// Forward define of referenced blocks -class NiBSplineData; -class NiObject; - #include "../gen/obj_defines.h" class NiBSplineCompPoint3Interpolator; @@ -39,12 +35,6 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; - /*! - * Refers to NiBSplineData. - */ - Ref<NiBSplineData > GetData() const; - void SetData( Ref<NiBSplineData > value ); - protected: NI_B_SPLINE_COMP_POINT3_INTERPOLATOR_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/obj/NiBSplineCompTransformInterpolator.cpp b/obj/NiBSplineCompTransformInterpolator.cpp index 64f8c73f..ebf906ec 100644 --- a/obj/NiBSplineCompTransformInterpolator.cpp +++ b/obj/NiBSplineCompTransformInterpolator.cpp @@ -2,8 +2,6 @@ All rights reserved. Please see niflib.h for licence. */ #include "NiBSplineCompTransformInterpolator.h" -#include "NiBSplineData.h" -#include "NiBSplineBasisData.h" using namespace Niflib; //Definition of TYPE constant @@ -37,19 +35,3 @@ const Type & NiBSplineCompTransformInterpolator::GetType() const { return TYPE; }; -Ref<NiBSplineData > NiBSplineCompTransformInterpolator::GetData() const { - return data; -} - -void NiBSplineCompTransformInterpolator::SetData( Ref<NiBSplineData > value ) { - data = value; -} - -Ref<NiBSplineBasisData > NiBSplineCompTransformInterpolator::GetBasisData() const { - return basisData; -} - -void NiBSplineCompTransformInterpolator::SetBasisData( Ref<NiBSplineBasisData > value ) { - basisData = value; -} - diff --git a/obj/NiBSplineCompTransformInterpolator.h b/obj/NiBSplineCompTransformInterpolator.h index d662b90c..408d81fd 100644 --- a/obj/NiBSplineCompTransformInterpolator.h +++ b/obj/NiBSplineCompTransformInterpolator.h @@ -10,10 +10,6 @@ All rights reserved. Please see niflib.h for licence. */ #include "../Ref.h" namespace Niflib { -// Forward define of referenced blocks -class NiBSplineData; -class NiBSplineBasisData; - #include "../gen/obj_defines.h" class NiBSplineCompTransformInterpolator; @@ -39,18 +35,6 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; - /*! - * Refers to NiBSplineData. - */ - Ref<NiBSplineData > GetData() const; - void SetData( Ref<NiBSplineData > value ); - - /*! - * Refers to NiBSPlineBasisData. - */ - Ref<NiBSplineBasisData > GetBasisData() const; - void SetBasisData( Ref<NiBSplineBasisData > value ); - protected: NI_B_SPLINE_COMP_TRANSFORM_INTERPOLATOR_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/obj/NiBSplineInterpolator.cpp b/obj/NiBSplineInterpolator.cpp index a3a17a06..ea280a1b 100644 --- a/obj/NiBSplineInterpolator.cpp +++ b/obj/NiBSplineInterpolator.cpp @@ -2,6 +2,8 @@ All rights reserved. Please see niflib.h for licence. */ #include "NiBSplineInterpolator.h" +#include "NiBSplineData.h" +#include "NiBSplineBasisData.h" using namespace Niflib; //Definition of TYPE constant @@ -51,3 +53,18 @@ void NiBSplineInterpolator::SetStopTime( float value ) { stopTime = value; } +Ref<NiBSplineData > NiBSplineInterpolator::GetSplineData() const { + return splineData; +} + +void NiBSplineInterpolator::SetSplineData( Ref<NiBSplineData > value ) { + splineData = value; +} + +Ref<NiBSplineBasisData > NiBSplineInterpolator::GetBasisData() const { + return basisData; +} + +void NiBSplineInterpolator::SetBasisData( Ref<NiBSplineBasisData > value ) { + basisData = value; +} \ No newline at end of file diff --git a/obj/NiBSplineInterpolator.h b/obj/NiBSplineInterpolator.h index 42b106ee..c3feaabd 100644 --- a/obj/NiBSplineInterpolator.h +++ b/obj/NiBSplineInterpolator.h @@ -7,6 +7,9 @@ All rights reserved. Please see niflib.h for licence. */ #include "NiInterpolator.h" namespace Niflib { +// Forward define of referenced blocks +class NiBSplineData; +class NiBSplineBasisData; #include "../gen/obj_defines.h" @@ -45,6 +48,18 @@ public: float GetStopTime() const; void SetStopTime( float value ); + /*! + * Refers to NiBSplineData. + */ + Ref<NiBSplineData > GetSplineData() const; + void SetSplineData( Ref<NiBSplineData > value ); + + /*! + * Refers to NiBSPlineBasisData. + */ + Ref<NiBSplineBasisData > GetBasisData() const; + void SetBasisData( Ref<NiBSplineBasisData > value ); + protected: NI_B_SPLINE_INTERPOLATOR_MEMBERS STANDARD_INTERNAL_METHODS -- GitLab