diff --git a/gen/obj_defines.h b/gen/obj_defines.h index 9ab7c25237ed742996789d6981f2edd94f3ce933..3cd44b8dacefb9da0272f88d1e9d68d990c92e06 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 93fc8436f9cdd09eba8e21b97714c13c80298ec4..df56df67b588405314250c4a86ce9523f61fc19f 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 47158d6f9959bd5dea4a20788d182250c31a9481..0e2d2d522c138b07a1972ebebac34e296e5c0a23 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 ef6234efa7d8b3786b15923ceba1983334e6b5b5..12c641789dedc83ece033beb8c4241be831209f0 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 64f8c73f2f4b46123a5a9522b76d73978655e299..ebf906ecb3ffc3c5cb43568b9d0558fd73ce6d37 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 d662b90c8a9da1c6c5c7a8dcebe7876b51bf09f6..408d81fd02cfe5e1c6feb0236cab792722f620a6 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 a3a17a06819277dcc9ac6e3dc6dd7c9f09bc791c..ea280a1b6aa58909ad104b39a87a612444f2f359 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 42b106ee90ba5abb71abbd3c625cc04cf7ef7d6e..c3feaabdfa895619f47cbb83a3ec6666ed63ac7f 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