diff --git a/gen/obj_defines.h b/gen/obj_defines.h index 362452b337061952afe7ba21ae3bde7f63993bf1..30fbc1c8a999f76c28acf659ef02897a79771ce6 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 924551ebeda01946bd96875c3d7372929c6eed0c..e475cf93b99fd585d21bc0fbb5df26f089fe945f 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 b5df531fc39a0f0efc5d60a8943f6203ca2a6aa9..a4e31db510b8361cb6911b37021058450dc963aa 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 1849750e57e6e0993088171a4b4eec75d94bb09a..884406bd1bb590ae6b22a6f5ef6eb1019e4342ff 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 814b4c523f5ca32cdc7a32115b94d1d3369b3473..a925bc7968f79502222a7a9b0f15289c125fa4d4 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 9332ea9d6a9e3548b6247affef7d6bc2f0de57e0..5fcbeab62f5e46a8c1c2176f8a464c0198691ecf 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 e1c68a804a3c726edacd7cf3517942d12ada4612..9ba79c2018998757394dfd37dc25ea1e0d7e5a87 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 4728763aef71a9650208620f2745cb28f709f08c..1c26ea788a0355e1e8c1a75b43c107fb4102b9c0 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 2d7a504a87aad180a4d4172ae2cca9a6fda0fce8..183cd57a9b6a87fb9de16a529271ea032b970973 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 268db450f746baaf456f3674c78ef2bbded5f7a2..b1e2e5d38b6a7c87b55b6b6f8475545b89547fcc 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 73f35d53756a858b3620bc4715bc4a9fa3ea6e74..a4babe100cbffafff6a4691e95a812af387fd979 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 b2463e4a5a8cb8bbff1beb9d708b9504e2cbcb23..3f6740f77d18f905e5873e37f4de2f2acf6cca57 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 339d31d6c80ff8add8f70e25e8d90dea93c74c8f..b672b7f54e95618116ff87a50c40be265066a9ff 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 ece80031507db3f84f10a2463df5a9ba0496387c..6077a69fa283c77f8040f447d623e42faf3da1d9 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 f718e884261ee65a2a976517876323aa144a195e..00a8dbb7fbde5ec33487552d748ee57b7f9413ee 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 21037095f59f69d4660c2531a4f816d0571f3c9b..5f8790817641ebb0ff633993d71a832c6f886a28 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 c04a41e11cfcb10cc75ea8940b559ad43e1cee65..96977efdd79981daf6ae21677e4e5661f50cc26a 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 43c8c4adbfb7bc1cd2a1a962fd34a2d935e78fd9..d6353be7c93221eb85f2be20590ef73e27b7fc84 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 4536c968ec2ab5ea027758600f8ffa67a642fd62..5ccfdfc01f0910e52cdcffced5eb57de097bb954 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