From eca08d6c90e7dc6244009ebad5b29fc6c7cd8cac Mon Sep 17 00:00:00 2001 From: Tazpn <tazpn@users.sourceforge.net> Date: Sun, 25 Jun 2006 23:24:40 +0000 Subject: [PATCH] Merge in gundalf's changes to bhkNiTriStripsShape and others. --- gen/obj_defines.h | 8 +++--- gen/obj_impl.cpp | 52 ++++++++----------------------------- obj/NiAVObject.cpp | 5 ++++ obj/NiAVObject.h | 2 ++ obj/NiCollisionObject.cpp | 10 +++++++ obj/NiCollisionObject.h | 3 +++ obj/NiExtraData.cpp | 2 +- obj/NiExtraData.h | 2 +- obj/NiObjectNET.cpp | 2 +- obj/NiObjectNET.h | 2 +- obj/bhkCollisionObject.cpp | 5 +++- obj/bhkEntity.cpp | 9 +++++++ obj/bhkEntity.h | 3 +++ obj/bhkNiTriStripsShape.cpp | 11 ++++++++ obj/bhkNiTriStripsShape.h | 3 +++ obj/bhkRigidBody.cpp | 15 +++++++++++ obj/bhkRigidBody.h | 4 +++ obj/bhkSphereRepShape.cpp | 4 +++ obj/bhkSphereRepShape.h | 2 ++ 19 files changed, 94 insertions(+), 50 deletions(-) diff --git a/gen/obj_defines.h b/gen/obj_defines.h index 362452b3..30fbc1c8 100644 --- a/gen/obj_defines.h +++ b/gen/obj_defines.h @@ -1248,9 +1248,9 @@ InternalFixLinks( objects, link_stack, version, user_version ); \ return InternalGetRefs(); \ #define BHK_NI_TRI_STRIPS_SHAPE_MEMBERS \ -array<float,2> unknownFloats1; \ -array<uint,5> unknownInts1; \ -array<float,3> unknownFloats2; \ +float unknownFloat1; \ +uint unknownInt1; \ +Vector3 scale; \ uint unknownInt2; \ mutable uint numStripsData; \ vector<Ref<NiTriStripsData > > stripsData; \ @@ -1262,7 +1262,7 @@ vector<uint > unknownInts3; \ #define BHK_NI_TRI_STRIPS_SHAPE_PARENT bhkSphereRepShape \ #define BHK_NI_TRI_STRIPS_SHAPE_CONSTRUCT \ - : unknownInt2((uint)0), numStripsData((uint)0), numUnknownInts3((uint)0) \ + : unknownFloat1(0.1f), unknownInt1((uint)0x004ABE60), scale(1.0f, 1.0f, 1.0f), unknownInt2((uint)0), numStripsData((uint)0), numUnknownInts3((uint)0) \ #define BHK_NI_TRI_STRIPS_SHAPE_READ \ InternalRead( in, link_stack, version, user_version ); \ diff --git a/gen/obj_impl.cpp b/gen/obj_impl.cpp index 924551eb..e475cf93 100644 --- a/gen/obj_impl.cpp +++ b/gen/obj_impl.cpp @@ -2809,15 +2809,9 @@ std::list<NiObjectRef> bhkMultiSphereShape::InternalGetRefs() const { void bhkNiTriStripsShape::InternalRead( istream& in, list<uint> & link_stack, unsigned int version, unsigned int user_version ) { uint block_num; bhkSphereRepShape::Read( in, link_stack, version, user_version ); - for (uint i1 = 0; i1 < 2; i1++) { - NifStream( unknownFloats1[i1], in, version ); - }; - for (uint i1 = 0; i1 < 5; i1++) { - NifStream( unknownInts1[i1], in, version ); - }; - for (uint i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats2[i1], in, version ); - }; + NifStream( unknownFloat1, in, version ); + NifStream( unknownInt1, in, version ); + NifStream( scale, in, version ); NifStream( unknownInt2, in, version ); NifStream( numStripsData, in, version ); stripsData.resize(numStripsData); @@ -2836,15 +2830,9 @@ void bhkNiTriStripsShape::InternalWrite( ostream& out, map<NiObjectRef,uint> lin bhkSphereRepShape::Write( out, link_map, version, user_version ); numUnknownInts3 = uint(unknownInts3.size()); numStripsData = uint(stripsData.size()); - for (uint i1 = 0; i1 < 2; i1++) { - NifStream( unknownFloats1[i1], out, version ); - }; - for (uint i1 = 0; i1 < 5; i1++) { - NifStream( unknownInts1[i1], out, version ); - }; - for (uint i1 = 0; i1 < 3; i1++) { - NifStream( unknownFloats2[i1], out, version ); - }; + NifStream( unknownFloat1, out, version ); + NifStream( unknownInt1, out, version ); + NifStream( scale, out, version ); NifStream( unknownInt2, out, version ); NifStream( numStripsData, out, version ); for (uint i1 = 0; i1 < stripsData.size(); i1++) { @@ -2864,27 +2852,9 @@ std::string bhkNiTriStripsShape::InternalAsString( bool verbose ) const { out << bhkSphereRepShape::asString(); numUnknownInts3 = uint(unknownInts3.size()); numStripsData = uint(stripsData.size()); - for (uint i1 = 0; i1 < 2; i1++) { - if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Unknown Floats 1[" << i1 << "]: " << unknownFloats1[i1] << endl; - }; - for (uint i1 = 0; i1 < 5; i1++) { - if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Unknown Ints 1[" << i1 << "]: " << unknownInts1[i1] << endl; - }; - for (uint i1 = 0; i1 < 3; i1++) { - if ( !verbose && ( i1 > MAXARRAYDUMP ) ) { - out << "<Data Truncated. Use verbose mode to see complete listing.>" << endl; - break; - }; - out << " Unknown Floats 2[" << i1 << "]: " << unknownFloats2[i1] << endl; - }; + out << " Unknown Float 1: " << unknownFloat1 << endl; + out << " Unknown Int 1: " << unknownInt1 << endl; + out << " Scale: " << scale << endl; out << " Unknown Int 2: " << unknownInt2 << endl; out << " Num Strips Data: " << numStripsData << endl; for (uint i1 = 0; i1 < stripsData.size(); i1++) { @@ -10792,7 +10762,7 @@ void NiSkinPartition::InternalWrite( ostream& out, map<NiObjectRef,uint> link_ma skinPartitionBlocks[i1].numWeightsPerVertex = ushort((skinPartitionBlocks[i1].vertexWeights.size() > 0) ? skinPartitionBlocks[i1].vertexWeights[0].size() : 0); skinPartitionBlocks[i1].numStrips = ushort(skinPartitionBlocks[i1].stripLengths.size()); skinPartitionBlocks[i1].numBones = ushort(skinPartitionBlocks[i1].bones.size()); - skinPartitionBlocks[i1].numTriangles = ushort(skinPartitionBlocks[i1].triangles.size()); + skinPartitionBlocks[i1].numTriangles = skinPartitionBlocks[i1].CalcNumTriangles(); skinPartitionBlocks[i1].numVertices = ushort(skinPartitionBlocks[i1].vertexMap.size()); NifStream( skinPartitionBlocks[i1].numVertices, out, version ); NifStream( skinPartitionBlocks[i1].numTriangles, out, version ); @@ -10883,7 +10853,7 @@ std::string NiSkinPartition::InternalAsString( bool verbose ) const { skinPartitionBlocks[i1].numWeightsPerVertex = ushort((skinPartitionBlocks[i1].vertexWeights.size() > 0) ? skinPartitionBlocks[i1].vertexWeights[0].size() : 0); skinPartitionBlocks[i1].numStrips = ushort(skinPartitionBlocks[i1].stripLengths.size()); skinPartitionBlocks[i1].numBones = ushort(skinPartitionBlocks[i1].bones.size()); - skinPartitionBlocks[i1].numTriangles = ushort(skinPartitionBlocks[i1].triangles.size()); + skinPartitionBlocks[i1].numTriangles = skinPartitionBlocks[i1].CalcNumTriangles(); skinPartitionBlocks[i1].numVertices = ushort(skinPartitionBlocks[i1].vertexMap.size()); out << " Num Vertices: " << skinPartitionBlocks[i1].numVertices << endl; out << " Num Triangles: " << skinPartitionBlocks[i1].numTriangles << endl; diff --git a/obj/NiAVObject.cpp b/obj/NiAVObject.cpp index b5df531f..a4e31db5 100644 --- a/obj/NiAVObject.cpp +++ b/obj/NiAVObject.cpp @@ -145,3 +145,8 @@ Vector3 NiAVObject::GetVelocity() const { void NiAVObject::SetVelocity( const Vector3 & n ) { velocity = n; } + +void NiAVObject::SetCollisionObject(Ref<NiCollisionObject> &obj) +{ + collisionObject = obj; +} \ No newline at end of file diff --git a/obj/NiAVObject.h b/obj/NiAVObject.h index 1849750e..884406bd 100644 --- a/obj/NiAVObject.h +++ b/obj/NiAVObject.h @@ -82,6 +82,8 @@ public: Vector3 GetVelocity() const; void SetVelocity( const Vector3 & n ); + void SetCollisionObject(Ref<NiCollisionObject> &); + protected: NiNode * parent; NI_A_V_OBJECT_MEMBERS diff --git a/obj/NiCollisionObject.cpp b/obj/NiCollisionObject.cpp index 814b4c52..a925bc79 100644 --- a/obj/NiCollisionObject.cpp +++ b/obj/NiCollisionObject.cpp @@ -33,6 +33,16 @@ list<NiObjectRef> NiCollisionObject::GetRefs() const { NI_COLLISION_OBJECT_GETREFS } +void NiCollisionObject::SetParent(NiAVObject *obj) +{ + parent = obj; +} + +void NiCollisionObject::SetBody(const Ref<NiObject> &obj) +{ + body = obj; +} + const Type & NiCollisionObject::GetType() const { return TYPE; }; diff --git a/obj/NiCollisionObject.h b/obj/NiCollisionObject.h index 9332ea9d..5fcbeab6 100644 --- a/obj/NiCollisionObject.h +++ b/obj/NiCollisionObject.h @@ -39,6 +39,9 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + void SetParent(NiAVObject *); + void SetBody(const Ref<NiObject> &); + protected: NiAVObject * NiCollisionObject::Parent() const; NI_COLLISION_OBJECT_MEMBERS diff --git a/obj/NiExtraData.cpp b/obj/NiExtraData.cpp index e1c68a80..9ba79c20 100644 --- a/obj/NiExtraData.cpp +++ b/obj/NiExtraData.cpp @@ -39,7 +39,7 @@ string NiExtraData::GetName() { return name; } -void NiExtraData::SetName( string & new_name ) { +void NiExtraData::SetName( const string & new_name ) { name = new_name; } diff --git a/obj/NiExtraData.h b/obj/NiExtraData.h index 4728763a..1c26ea78 100644 --- a/obj/NiExtraData.h +++ b/obj/NiExtraData.h @@ -60,7 +60,7 @@ public: * version NIF files. * \param new_name The new name for this NiExtraData object. */ - void SetName( string & new_name ); + void SetName( const string & new_name ); /*! * Formats a human readable string that includes the type of the object diff --git a/obj/NiObjectNET.cpp b/obj/NiObjectNET.cpp index 2d7a504a..183cd57a 100644 --- a/obj/NiObjectNET.cpp +++ b/obj/NiObjectNET.cpp @@ -41,7 +41,7 @@ string NiObjectNET::GetName() { return name; } -void NiObjectNET::SetName( string & new_name ) { +void NiObjectNET::SetName( const string & new_name ) { name = new_name; } diff --git a/obj/NiObjectNET.h b/obj/NiObjectNET.h index 268db450..b1e2e5d3 100644 --- a/obj/NiObjectNET.h +++ b/obj/NiObjectNET.h @@ -41,7 +41,7 @@ public: virtual list<NiObjectRef> GetRefs() const; string GetName(); - void SetName( string & new_name ); + void SetName( const string & new_name ); /*! * Formats a human readable string that includes the type of the object * \return A string in the form: address(type) {name} diff --git a/obj/bhkCollisionObject.cpp b/obj/bhkCollisionObject.cpp index 73f35d53..a4babe10 100644 --- a/obj/bhkCollisionObject.cpp +++ b/obj/bhkCollisionObject.cpp @@ -28,7 +28,10 @@ void bhkCollisionObject::FixLinks( const vector<NiObjectRef> & objects, list<uin } list<NiObjectRef> bhkCollisionObject::GetRefs() const { - BHK_COLLISION_OBJECT_GETREFS +// BHK_COLLISION_OBJECT_GETREFS + list<NiObjectRef> refs = InternalGetRefs(); + refs.reverse(); + return refs; } const Type & bhkCollisionObject::GetType() const { diff --git a/obj/bhkEntity.cpp b/obj/bhkEntity.cpp index b2463e4a..3f6740f7 100644 --- a/obj/bhkEntity.cpp +++ b/obj/bhkEntity.cpp @@ -36,3 +36,12 @@ const Type & bhkEntity::GetType() const { return TYPE; }; +void bhkEntity::SetShape(const Ref<bhkShape> &s) +{ + shape = s; +} + +void bhkEntity::SetLayer(int l) +{ + layer = l; +} diff --git a/obj/bhkEntity.h b/obj/bhkEntity.h index 339d31d6..b672b7f5 100644 --- a/obj/bhkEntity.h +++ b/obj/bhkEntity.h @@ -38,6 +38,9 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + void SetShape(const Ref<bhkShape> &); + void SetLayer(int layer); + protected: BHK_ENTITY_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/obj/bhkNiTriStripsShape.cpp b/obj/bhkNiTriStripsShape.cpp index ece80031..6077a69f 100644 --- a/obj/bhkNiTriStripsShape.cpp +++ b/obj/bhkNiTriStripsShape.cpp @@ -36,3 +36,14 @@ const Type & bhkNiTriStripsShape::GetType() const { return TYPE; }; +void bhkNiTriStripsShape::SetNumStripsData(int n) +{ + numStripsData = n; + stripsData.resize(n); +} + +void bhkNiTriStripsShape::SetStripsData(int i, Ref<NiTriStripsData> &strips) +{ + stripsData[i] = strips; +} + diff --git a/obj/bhkNiTriStripsShape.h b/obj/bhkNiTriStripsShape.h index f718e884..00a8dbb7 100644 --- a/obj/bhkNiTriStripsShape.h +++ b/obj/bhkNiTriStripsShape.h @@ -38,6 +38,9 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + void SetNumStripsData(int i); + void SetStripsData(int i, Ref<NiTriStripsData> &); + protected: BHK_NI_TRI_STRIPS_SHAPE_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/obj/bhkRigidBody.cpp b/obj/bhkRigidBody.cpp index 21037095..5f879081 100644 --- a/obj/bhkRigidBody.cpp +++ b/obj/bhkRigidBody.cpp @@ -37,3 +37,18 @@ const Type & bhkRigidBody::GetType() const { return TYPE; }; +void bhkRigidBody::SetTranslation(const Vector3 &v) +{ + translation = v; +} + +void bhkRigidBody::SetRotation(const QuaternionXYZW &q) +{ + rotation = q; +} + +void bhkRigidBody::SetLayerCopy(int l) +{ + layerCopy_ = l; +} + diff --git a/obj/bhkRigidBody.h b/obj/bhkRigidBody.h index c04a41e1..96977efd 100644 --- a/obj/bhkRigidBody.h +++ b/obj/bhkRigidBody.h @@ -39,6 +39,10 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + void SetTranslation(const Vector3 &v); + void SetRotation(const QuaternionXYZW &q); + void SetLayerCopy(int l); + protected: BHK_RIGID_BODY_MEMBERS STANDARD_INTERNAL_METHODS diff --git a/obj/bhkSphereRepShape.cpp b/obj/bhkSphereRepShape.cpp index 43c8c4ad..d6353be7 100644 --- a/obj/bhkSphereRepShape.cpp +++ b/obj/bhkSphereRepShape.cpp @@ -35,3 +35,7 @@ const Type & bhkSphereRepShape::GetType() const { return TYPE; }; +void bhkSphereRepShape::SetMaterial(int m) +{ + material = m; +} diff --git a/obj/bhkSphereRepShape.h b/obj/bhkSphereRepShape.h index 4536c968..5ccfdfc0 100644 --- a/obj/bhkSphereRepShape.h +++ b/obj/bhkSphereRepShape.h @@ -34,6 +34,8 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + void SetMaterial(int m); + protected: BHK_SPHERE_REP_SHAPE_MEMBERS STANDARD_INTERNAL_METHODS -- GitLab