From 9500afaa5a265ba49fcf8bb95b73edc4b1c9a4e8 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:21:07 +0300 Subject: [PATCH 1/8] Load BSFurnitureMarker --- components/nif/extra.cpp | 34 ++++++++++++++++++++++++++++++++++ components/nif/extra.hpp | 24 ++++++++++++++++++++++++ components/nif/niffile.cpp | 1 + components/nif/record.hpp | 3 ++- 4 files changed, 61 insertions(+), 1 deletion(-) diff --git a/components/nif/extra.cpp b/components/nif/extra.cpp index a45ea8c50b..1401291a0f 100644 --- a/components/nif/extra.cpp +++ b/components/nif/extra.cpp @@ -94,4 +94,38 @@ void BSBound::read(NIFStream *nif) halfExtents = nif->getVector3(); } +void BSFurnitureMarker::LegacyFurniturePosition::read(NIFStream *nif) +{ + offset = nif->getVector3(); + orientation = nif->getUShort(); + positionRef = nif->getChar(); + nif->skip(1); // Position ref 2 +} + +void BSFurnitureMarker::FurniturePosition::read(NIFStream *nif) +{ + offset = nif->getVector3(); + heading = nif->getFloat(); + type = nif->getUShort(); + entryPoint = nif->getUShort(); +} + +void BSFurnitureMarker::read(NIFStream *nif) +{ + Extra::read(nif); + unsigned int num = nif->getUInt(); + if (nif->getBethVersion() <= NIFFile::BethVersion::BETHVER_FO3) + { + legacyMarkers.resize(num); + for (auto& marker : legacyMarkers) + marker.read(nif); + } + else + { + markers.resize(num); + for (auto& marker : markers) + marker.read(nif); + } +} + } diff --git a/components/nif/extra.hpp b/components/nif/extra.hpp index f4ac1caff9..bbc5c216d8 100644 --- a/components/nif/extra.hpp +++ b/components/nif/extra.hpp @@ -120,5 +120,29 @@ struct BSBound : public Extra void read(NIFStream *nif) override; }; +struct BSFurnitureMarker : public Extra +{ + struct LegacyFurniturePosition + { + osg::Vec3f offset; + uint16_t orientation; + uint8_t positionRef; + void read(NIFStream *nif); + }; + + struct FurniturePosition + { + osg::Vec3f offset; + float heading; + uint16_t type, entryPoint; + void read(NIFStream *nif); + }; + + std::vector legacyMarkers; + std::vector markers; + + void read(NIFStream *nif) override; +}; + } // Namespace #endif diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 6863209988..7f330450a0 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -136,6 +136,7 @@ static std::map makeFactory() factory["BSShaderProperty"] = {&construct , RC_BSShaderProperty }; factory["BSShaderPPLightingProperty"] = {&construct , RC_BSShaderPPLightingProperty }; factory["BSShaderNoLightingProperty"] = {&construct , RC_BSShaderNoLightingProperty }; + factory["BSFurnitureMarker"] = {&construct , RC_BSFurnitureMarker }; return factory; } diff --git a/components/nif/record.hpp b/components/nif/record.hpp index dc81eb69c7..dc7314cc95 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -125,7 +125,8 @@ enum RecordType RC_BSLODTriShape, RC_BSShaderProperty, RC_BSShaderPPLightingProperty, - RC_BSShaderNoLightingProperty + RC_BSShaderNoLightingProperty, + RC_BSFurnitureMarker }; /// Base class for all records From 55710991476930c79c6cc37cc88aa625ea31c58b Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:31:28 +0300 Subject: [PATCH 2/8] Load NiCollisionObject and bhkCollisionObject --- components/CMakeLists.txt | 2 +- components/nif/niffile.cpp | 2 ++ components/nif/node.hpp | 7 +++- components/nif/physics.cpp | 32 +++++++++++++++++++ components/nif/physics.hpp | 62 ++++++++++++++++++++++++++++++++++++ components/nif/record.hpp | 4 ++- components/nif/recordptr.hpp | 6 ++++ 7 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 components/nif/physics.cpp create mode 100644 components/nif/physics.hpp diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index 0b3c95ff45..5c0ead4ad0 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -61,7 +61,7 @@ add_component_dir (sceneutil ) add_component_dir (nif - controlled effect niftypes record controller extra node record_ptr data niffile property nifkey base nifstream + controlled effect niftypes record controller extra node record_ptr data niffile property nifkey base nifstream physics ) add_component_dir (nifosg diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 7f330450a0..1f6cc256fc 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -137,6 +137,8 @@ static std::map makeFactory() factory["BSShaderPPLightingProperty"] = {&construct , RC_BSShaderPPLightingProperty }; factory["BSShaderNoLightingProperty"] = {&construct , RC_BSShaderNoLightingProperty }; factory["BSFurnitureMarker"] = {&construct , RC_BSFurnitureMarker }; + factory["NiCollisionObject"] = {&construct , RC_NiCollisionObject }; + factory["bhkCollisionObject"] = {&construct , RC_bhkCollisionObject }; return factory; } diff --git a/components/nif/node.hpp b/components/nif/node.hpp index 406a4d4549..c01ba9b663 100644 --- a/components/nif/node.hpp +++ b/components/nif/node.hpp @@ -8,6 +8,7 @@ #include "niftypes.hpp" #include "controller.hpp" #include "base.hpp" +#include "physics.hpp" #include @@ -143,6 +144,9 @@ struct Node : public Named bool hasBounds{false}; NiBoundingVolume bounds; + // Collision object info + NiCollisionObjectPtr collision; + void read(NIFStream *nif) override { Named::read(nif); @@ -160,7 +164,7 @@ struct Node : public Named bounds.read(nif); // Reference to the collision object in Gamebryo files. if (nif->getVersion() >= NIFStream::generateVersion(10,0,1,0)) - nif->skip(4); + collision.read(nif); parent = nullptr; @@ -171,6 +175,7 @@ struct Node : public Named { Named::post(nif); props.post(nif); + collision.post(nif); } // Parent node, or nullptr for the root node. As far as I'm aware, only diff --git a/components/nif/physics.cpp b/components/nif/physics.cpp new file mode 100644 index 0000000000..fbbc459ab2 --- /dev/null +++ b/components/nif/physics.cpp @@ -0,0 +1,32 @@ +#include "physics.hpp" +#include "node.hpp" + +namespace Nif +{ + void bhkCollisionObject::read(NIFStream *nif) + { + NiCollisionObject::read(nif); + flags = nif->getUShort(); + body.read(nif); + } + + void bhkWorldObject::read(NIFStream *nif) + { + shape.read(nif); + if (nif->getVersion() <= NIFFile::NIFVersion::VER_OB_OLD) + nif->skip(4); // Unknown + flags = nif->getUInt(); + nif->skip(4); // Unused + worldObjectInfo.phaseType = nif->getChar(); + nif->skip(3); // Unused + worldObjectInfo.data = nif->getUInt(); + worldObjectInfo.size = nif->getUInt(); + worldObjectInfo.capacityAndFlags = nif->getUInt(); + } + + void bhkWorldObject::post(NIFFile *nif) + { + shape.post(nif); + } + +} // Namespace \ No newline at end of file diff --git a/components/nif/physics.hpp b/components/nif/physics.hpp new file mode 100644 index 0000000000..e64eb349eb --- /dev/null +++ b/components/nif/physics.hpp @@ -0,0 +1,62 @@ +#ifndef OPENMW_COMPONENTS_NIF_PHYSICS_HPP +#define OPENMW_COMPONENTS_NIF_PHYSICS_HPP + +#include "base.hpp" + +// This header contains certain record definitions +// specific to Bethesda implementation of Havok physics +namespace Nif +{ + +// Generic collision object +struct NiCollisionObject : public Record +{ + // The node that references this object + NodePtr target; + + void read(NIFStream *nif) override + { + target.read(nif); + } + void post(NIFFile *nif) override + { + target.post(nif); + } +}; + +// Bethesda Havok-specific collision object +struct bhkCollisionObject : public NiCollisionObject +{ + unsigned short flags; + CollisionBodyPtr body; + + void read(NIFStream *nif) override; + void post(NIFFile *nif) override + { + NiCollisionObject::post(nif); + body.post(nif); + } +}; + + +// Abstract Havok shape info record +struct bhkWorldObject : public Record +{ + bhkShapePtr shape; + unsigned int flags; // Havok layer type, collision filter flags and group + struct WorldObjectInfo + { + unsigned char phaseType; + unsigned int data; + unsigned int size; + unsigned int capacityAndFlags; + }; + WorldObjectInfo worldObjectInfo; + void read(NIFStream *nif) override; + void post(NIFFile *nif) override; +}; + +struct bhkShape : public Record {}; + +} // Namespace +#endif \ No newline at end of file diff --git a/components/nif/record.hpp b/components/nif/record.hpp index dc7314cc95..88ffbe4141 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -126,7 +126,9 @@ enum RecordType RC_BSShaderProperty, RC_BSShaderPPLightingProperty, RC_BSShaderNoLightingProperty, - RC_BSFurnitureMarker + RC_BSFurnitureMarker, + RC_NiCollisionObject, + RC_bhkCollisionObject }; /// Base class for all records diff --git a/components/nif/recordptr.hpp b/components/nif/recordptr.hpp index b30d99fbe4..a25480fe43 100644 --- a/components/nif/recordptr.hpp +++ b/components/nif/recordptr.hpp @@ -148,6 +148,9 @@ struct BSShaderTextureSet; struct NiGeometryData; struct BSShaderProperty; struct NiAlphaProperty; +struct NiCollisionObject; +struct bhkWorldObject; +struct bhkShape; using NodePtr = RecordPtrT; using ExtraPtr = RecordPtrT; @@ -175,6 +178,9 @@ using BSShaderTextureSetPtr = RecordPtrT; using NiGeometryDataPtr = RecordPtrT; using BSShaderPropertyPtr = RecordPtrT; using NiAlphaPropertyPtr = RecordPtrT; +using NiCollisionObjectPtr = RecordPtrT; +using CollisionBodyPtr = RecordPtrT; +using bhkShapePtr = RecordPtrT; using NodeList = RecordListT; using PropertyList = RecordListT; From 41097352a8d4fe1ac58490f58fe1b26e0d5369e2 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:40:02 +0300 Subject: [PATCH 3/8] Load BSDismemberSkinInstance --- components/nif/data.cpp | 7 +++++++ components/nif/data.hpp | 5 +++++ components/nif/niffile.cpp | 1 + components/nif/record.hpp | 3 ++- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/components/nif/data.cpp b/components/nif/data.cpp index b6674611bc..cac924733d 100644 --- a/components/nif/data.cpp +++ b/components/nif/data.cpp @@ -34,6 +34,13 @@ void NiSkinInstance::post(NIFFile *nif) } } +void BSDismemberSkinInstance::read(NIFStream *nif) +{ + NiSkinInstance::read(nif); + unsigned int numPartitions = nif->getUInt(); + nif->skip(4 * numPartitions); // Body part information +} + void NiGeometryData::read(NIFStream *nif) { if (nif->getVersion() >= NIFStream::generateVersion(10,1,0,114)) diff --git a/components/nif/data.hpp b/components/nif/data.hpp index efbe138c53..70171ac47c 100644 --- a/components/nif/data.hpp +++ b/components/nif/data.hpp @@ -170,6 +170,11 @@ struct NiSkinInstance : public Record void post(NIFFile *nif) override; }; +struct BSDismemberSkinInstance : public NiSkinInstance +{ + void read(NIFStream *nif) override; +}; + struct NiSkinData : public Record { struct VertWeight diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 1f6cc256fc..4e184f68fa 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -139,6 +139,7 @@ static std::map makeFactory() factory["BSFurnitureMarker"] = {&construct , RC_BSFurnitureMarker }; factory["NiCollisionObject"] = {&construct , RC_NiCollisionObject }; factory["bhkCollisionObject"] = {&construct , RC_bhkCollisionObject }; + factory["BSDismemberSkinInstance"] = {&construct , RC_BSDismemberSkinInstance }; return factory; } diff --git a/components/nif/record.hpp b/components/nif/record.hpp index 88ffbe4141..23a1a6df2b 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -128,7 +128,8 @@ enum RecordType RC_BSShaderNoLightingProperty, RC_BSFurnitureMarker, RC_NiCollisionObject, - RC_bhkCollisionObject + RC_bhkCollisionObject, + RC_BSDismemberSkinInstance }; /// Base class for all records From 923756b407feecb97673e9a557472c582e86b0c5 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:42:55 +0300 Subject: [PATCH 4/8] Load NiControllerManager --- components/nif/controller.cpp | 9 +++++++++ components/nif/controller.hpp | 6 ++++++ components/nif/niffile.cpp | 1 + components/nif/record.hpp | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index 704c4928e6..513c781c58 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -270,6 +270,15 @@ namespace Nif nif->getUInt(); // Zero } + void NiControllerManager::read(NIFStream *nif) + { + Controller::read(nif); + cumulative = nif->getBoolean(); + unsigned int numSequences = nif->getUInt(); + nif->skip(4 * numSequences); // Controller sequences + nif->skip(4); // Object palette + } + void NiPoint3Interpolator::read(NIFStream *nif) { defaultVal = nif->getVector3(); diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index 503710fe90..15a2937b80 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -184,6 +184,12 @@ struct bhkBlendController : public Controller void read(NIFStream *nif) override; }; +struct NiControllerManager : public Controller +{ + bool cumulative; + void read(NIFStream *nif) override; +}; + struct Interpolator : public Record { }; struct NiPoint3Interpolator : public Interpolator diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 4e184f68fa..24b9bbceed 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -140,6 +140,7 @@ static std::map makeFactory() factory["NiCollisionObject"] = {&construct , RC_NiCollisionObject }; factory["bhkCollisionObject"] = {&construct , RC_bhkCollisionObject }; factory["BSDismemberSkinInstance"] = {&construct , RC_BSDismemberSkinInstance }; + factory["NiControllerManager"] = {&construct , RC_NiControllerManager }; return factory; } diff --git a/components/nif/record.hpp b/components/nif/record.hpp index 23a1a6df2b..0b9b2dc998 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -129,7 +129,8 @@ enum RecordType RC_BSFurnitureMarker, RC_NiCollisionObject, RC_bhkCollisionObject, - RC_BSDismemberSkinInstance + RC_BSDismemberSkinInstance, + RC_NiControllerManager }; /// Base class for all records From 9880c43c86b699f30eef2cc78143162d34cff70c Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:58:06 +0300 Subject: [PATCH 5/8] Add specular strength shader parameter --- apps/openmw/mwrender/objectpaging.cpp | 1 + apps/openmw/mwrender/renderingmanager.cpp | 1 + components/nifosg/nifloader.cpp | 3 +++ components/resource/scenemanager.cpp | 1 + files/shaders/nv_default_fragment.glsl | 3 ++- files/shaders/objects_fragment.glsl | 2 ++ 6 files changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/objectpaging.cpp b/apps/openmw/mwrender/objectpaging.cpp index 4e21d33475..90069c2d8d 100644 --- a/apps/openmw/mwrender/objectpaging.cpp +++ b/apps/openmw/mwrender/objectpaging.cpp @@ -359,6 +359,7 @@ namespace MWRender stateset->setAttribute(m); stateset->addUniform(new osg::Uniform("colorMode", 0)); stateset->addUniform(new osg::Uniform("emissiveMult", 1.f)); + stateset->addUniform(new osg::Uniform("specStrength", 1.f)); node.setStateSet(stateset); } }; diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 06bfb3582f..e0cd3f713a 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -500,6 +500,7 @@ namespace MWRender defaultMat->setSpecular(osg::Material::FRONT_AND_BACK, osg::Vec4f(0.f, 0.f, 0.f, 0.f)); sceneRoot->getOrCreateStateSet()->setAttribute(defaultMat); sceneRoot->getOrCreateStateSet()->addUniform(new osg::Uniform("emissiveMult", 1.f)); + sceneRoot->getOrCreateStateSet()->addUniform(new osg::Uniform("specStrength", 1.f)); mFog.reset(new FogManager()); diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index a745d50eda..e46e2d934b 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -1932,6 +1932,7 @@ namespace NifOsg int lightmode = 1; float emissiveMult = 1.f; + float specStrength = 1.f; for (const Nif::Property* property : properties) { @@ -2081,6 +2082,8 @@ namespace NifOsg stateset->setAttributeAndModes(mat, osg::StateAttribute::ON); if (emissiveMult != 1.f) stateset->addUniform(new osg::Uniform("emissiveMult", emissiveMult)); + if (specStrength != 1.f) + stateset->addUniform(new osg::Uniform("specStrength", specStrength)); } }; diff --git a/components/resource/scenemanager.cpp b/components/resource/scenemanager.cpp index 8a88f7def9..f6c041a879 100644 --- a/components/resource/scenemanager.cpp +++ b/components/resource/scenemanager.cpp @@ -524,6 +524,7 @@ namespace Resource result.getNode()->accept(colladaAlphaTrickVisitor); result.getNode()->getOrCreateStateSet()->addUniform(new osg::Uniform("emissiveMult", 1.f)); + result.getNode()->getOrCreateStateSet()->addUniform(new osg::Uniform("specStrength", 1.f)); result.getNode()->getOrCreateStateSet()->addUniform(new osg::Uniform("envMapColor", osg::Vec4f(1,1,1,1))); result.getNode()->getOrCreateStateSet()->addUniform(new osg::Uniform("useFalloff", false)); } diff --git a/files/shaders/nv_default_fragment.glsl b/files/shaders/nv_default_fragment.glsl index 17204534e3..ff81a2b94d 100644 --- a/files/shaders/nv_default_fragment.glsl +++ b/files/shaders/nv_default_fragment.glsl @@ -39,6 +39,7 @@ varying vec3 passNormal; #include "alpha.glsl" uniform float emissiveMult; +uniform float specStrength; void main() { @@ -80,7 +81,7 @@ void main() gl_FragData[0].xyz *= lighting; float shininess = gl_FrontMaterial.shininess; - vec3 matSpec = getSpecularColor().xyz; + vec3 matSpec = getSpecularColor().xyz * specStrength; #if @normalMap matSpec *= normalTex.a; #endif diff --git a/files/shaders/objects_fragment.glsl b/files/shaders/objects_fragment.glsl index d750a4dd1f..99ed44919b 100644 --- a/files/shaders/objects_fragment.glsl +++ b/files/shaders/objects_fragment.glsl @@ -71,6 +71,7 @@ centroid varying vec3 shadowDiffuseLighting; #else uniform float emissiveMult; #endif +uniform float specStrength; varying vec3 passViewPos; varying vec3 passNormal; @@ -204,6 +205,7 @@ void main() vec3 matSpec = getSpecularColor().xyz; #endif + matSpec *= specStrength; if (matSpec != vec3(0.0)) { #if (!@normalMap && !@parallax && !@forcePPL) From 6de9b49d3dfdaf6934f6abf1a1f5f839109452c4 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:59:13 +0300 Subject: [PATCH 6/8] Remove an empty line --- components/nif/physics.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/components/nif/physics.hpp b/components/nif/physics.hpp index e64eb349eb..a8f053b3be 100644 --- a/components/nif/physics.hpp +++ b/components/nif/physics.hpp @@ -38,7 +38,6 @@ struct bhkCollisionObject : public NiCollisionObject } }; - // Abstract Havok shape info record struct bhkWorldObject : public Record { From 6e5b45453d919a0e952a806f362a79b83c7990f5 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 20:16:05 +0300 Subject: [PATCH 7/8] some physics stuff idk --- components/nif/physics.cpp | 22 ++++++++++++++++++++++ components/nif/physics.hpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/components/nif/physics.cpp b/components/nif/physics.cpp index fbbc459ab2..fddaaa8cc1 100644 --- a/components/nif/physics.cpp +++ b/components/nif/physics.cpp @@ -29,4 +29,26 @@ namespace Nif shape.post(nif); } + void bhkEntity::read(NIFStream *nif) + { + bhkWorldObject::read(nif); + responseType = static_cast(nif->getChar()); + nif->skip(1); // Unused + processContactDelay = nif->getUShort(); + } + + void HavokMaterial::read(NIFStream *nif) + { + if (nif->getVersion() <= NIFFile::NIFVersion::VER_OB_OLD) + nif->skip(4); // Unknown + material = nif->getUInt(); + } + + void hkSubPartData::read(NIFStream *nif) + { + havokFilter = nif->getUInt(); + numVertices = nif->getUInt(); + material.read(nif); + } + } // Namespace \ No newline at end of file diff --git a/components/nif/physics.hpp b/components/nif/physics.hpp index a8f053b3be..ae7da6d141 100644 --- a/components/nif/physics.hpp +++ b/components/nif/physics.hpp @@ -57,5 +57,33 @@ struct bhkWorldObject : public Record struct bhkShape : public Record {}; +enum class hkResponseType : uint8_t +{ + Invalid = 0, + SimpleContact = 1, + Reporting = 2, + None = 3 +}; + +struct bhkEntity : public bhkWorldObject +{ + hkResponseType responseType; + unsigned short processContactDelay; + void read(NIFStream *nif) override; +}; + +struct HavokMaterial +{ + unsigned int material; + void read(NIFStream *nif); +}; + +struct hkSubPartData +{ + HavokMaterial material; + unsigned int numVertices, havokFilter; + void read(NIFStream *nif); +}; + } // Namespace #endif \ No newline at end of file From cc4c96d0f1358c9c8cc745f2354c817a858d172f Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 22:50:01 +0300 Subject: [PATCH 8/8] Follow global naming convention for new records --- components/nif/controller.cpp | 2 +- components/nif/controller.hpp | 2 +- components/nif/extra.cpp | 22 ++++++++--------- components/nif/extra.hpp | 17 ++++++------- components/nif/physics.cpp | 30 +++++++++++------------ components/nif/physics.hpp | 45 ++++++++++++++++++----------------- 6 files changed, 60 insertions(+), 58 deletions(-) diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index 513c781c58..16e6b5e40f 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -273,7 +273,7 @@ namespace Nif void NiControllerManager::read(NIFStream *nif) { Controller::read(nif); - cumulative = nif->getBoolean(); + mCumulative = nif->getBoolean(); unsigned int numSequences = nif->getUInt(); nif->skip(4 * numSequences); // Controller sequences nif->skip(4); // Object palette diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index 15a2937b80..210eaab217 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -186,7 +186,7 @@ struct bhkBlendController : public Controller struct NiControllerManager : public Controller { - bool cumulative; + bool mCumulative; void read(NIFStream *nif) override; }; diff --git a/components/nif/extra.cpp b/components/nif/extra.cpp index 1401291a0f..04217995ac 100644 --- a/components/nif/extra.cpp +++ b/components/nif/extra.cpp @@ -96,18 +96,18 @@ void BSBound::read(NIFStream *nif) void BSFurnitureMarker::LegacyFurniturePosition::read(NIFStream *nif) { - offset = nif->getVector3(); - orientation = nif->getUShort(); - positionRef = nif->getChar(); + mOffset = nif->getVector3(); + mOrientation = nif->getUShort(); + mPositionRef = nif->getChar(); nif->skip(1); // Position ref 2 } void BSFurnitureMarker::FurniturePosition::read(NIFStream *nif) { - offset = nif->getVector3(); - heading = nif->getFloat(); - type = nif->getUShort(); - entryPoint = nif->getUShort(); + mOffset = nif->getVector3(); + mHeading = nif->getFloat(); + mType = nif->getUShort(); + mEntryPoint = nif->getUShort(); } void BSFurnitureMarker::read(NIFStream *nif) @@ -116,14 +116,14 @@ void BSFurnitureMarker::read(NIFStream *nif) unsigned int num = nif->getUInt(); if (nif->getBethVersion() <= NIFFile::BethVersion::BETHVER_FO3) { - legacyMarkers.resize(num); - for (auto& marker : legacyMarkers) + mLegacyMarkers.resize(num); + for (auto& marker : mLegacyMarkers) marker.read(nif); } else { - markers.resize(num); - for (auto& marker : markers) + mMarkers.resize(num); + for (auto& marker : mMarkers) marker.read(nif); } } diff --git a/components/nif/extra.hpp b/components/nif/extra.hpp index bbc5c216d8..8eb14f9b01 100644 --- a/components/nif/extra.hpp +++ b/components/nif/extra.hpp @@ -124,22 +124,23 @@ struct BSFurnitureMarker : public Extra { struct LegacyFurniturePosition { - osg::Vec3f offset; - uint16_t orientation; - uint8_t positionRef; + osg::Vec3f mOffset; + uint16_t mOrientation; + uint8_t mPositionRef; void read(NIFStream *nif); }; struct FurniturePosition { - osg::Vec3f offset; - float heading; - uint16_t type, entryPoint; + osg::Vec3f mOffset; + float mHeading; + uint16_t mType; + uint16_t mEntryPoint; void read(NIFStream *nif); }; - std::vector legacyMarkers; - std::vector markers; + std::vector mLegacyMarkers; + std::vector mMarkers; void read(NIFStream *nif) override; }; diff --git a/components/nif/physics.cpp b/components/nif/physics.cpp index fddaaa8cc1..992a56c9b7 100644 --- a/components/nif/physics.cpp +++ b/components/nif/physics.cpp @@ -6,49 +6,49 @@ namespace Nif void bhkCollisionObject::read(NIFStream *nif) { NiCollisionObject::read(nif); - flags = nif->getUShort(); - body.read(nif); + mFlags = nif->getUShort(); + mBody.read(nif); } void bhkWorldObject::read(NIFStream *nif) { - shape.read(nif); + mShape.read(nif); if (nif->getVersion() <= NIFFile::NIFVersion::VER_OB_OLD) nif->skip(4); // Unknown - flags = nif->getUInt(); + mFlags = nif->getUInt(); nif->skip(4); // Unused - worldObjectInfo.phaseType = nif->getChar(); + mWorldObjectInfo.mPhaseType = nif->getChar(); nif->skip(3); // Unused - worldObjectInfo.data = nif->getUInt(); - worldObjectInfo.size = nif->getUInt(); - worldObjectInfo.capacityAndFlags = nif->getUInt(); + mWorldObjectInfo.mData = nif->getUInt(); + mWorldObjectInfo.mSize = nif->getUInt(); + mWorldObjectInfo.mCapacityAndFlags = nif->getUInt(); } void bhkWorldObject::post(NIFFile *nif) { - shape.post(nif); + mShape.post(nif); } void bhkEntity::read(NIFStream *nif) { bhkWorldObject::read(nif); - responseType = static_cast(nif->getChar()); + mResponseType = static_cast(nif->getChar()); nif->skip(1); // Unused - processContactDelay = nif->getUShort(); + mProcessContactDelay = nif->getUShort(); } void HavokMaterial::read(NIFStream *nif) { if (nif->getVersion() <= NIFFile::NIFVersion::VER_OB_OLD) nif->skip(4); // Unknown - material = nif->getUInt(); + mMaterial = nif->getUInt(); } void hkSubPartData::read(NIFStream *nif) { - havokFilter = nif->getUInt(); - numVertices = nif->getUInt(); - material.read(nif); + mHavokFilter = nif->getUInt(); + mNumVertices = nif->getUInt(); + mHavokMaterial.read(nif); } } // Namespace \ No newline at end of file diff --git a/components/nif/physics.hpp b/components/nif/physics.hpp index ae7da6d141..ca31512c71 100644 --- a/components/nif/physics.hpp +++ b/components/nif/physics.hpp @@ -12,45 +12,45 @@ namespace Nif struct NiCollisionObject : public Record { // The node that references this object - NodePtr target; + NodePtr mTarget; void read(NIFStream *nif) override { - target.read(nif); + mTarget.read(nif); } void post(NIFFile *nif) override { - target.post(nif); + mTarget.post(nif); } }; // Bethesda Havok-specific collision object struct bhkCollisionObject : public NiCollisionObject { - unsigned short flags; - CollisionBodyPtr body; + unsigned short mFlags; + CollisionBodyPtr mBody; void read(NIFStream *nif) override; void post(NIFFile *nif) override { NiCollisionObject::post(nif); - body.post(nif); + mBody.post(nif); } }; // Abstract Havok shape info record struct bhkWorldObject : public Record { - bhkShapePtr shape; - unsigned int flags; // Havok layer type, collision filter flags and group + bhkShapePtr mShape; + unsigned int mFlags; // Havok layer type, collision filter flags and group struct WorldObjectInfo { - unsigned char phaseType; - unsigned int data; - unsigned int size; - unsigned int capacityAndFlags; + unsigned char mPhaseType; + unsigned int mData; + unsigned int mSize; + unsigned int mCapacityAndFlags; }; - WorldObjectInfo worldObjectInfo; + WorldObjectInfo mWorldObjectInfo; void read(NIFStream *nif) override; void post(NIFFile *nif) override; }; @@ -59,29 +59,30 @@ struct bhkShape : public Record {}; enum class hkResponseType : uint8_t { - Invalid = 0, - SimpleContact = 1, - Reporting = 2, - None = 3 + Response_Invalid = 0, + Response_SimpleContact = 1, + Response_Reporting = 2, + Response_None = 3 }; struct bhkEntity : public bhkWorldObject { - hkResponseType responseType; - unsigned short processContactDelay; + hkResponseType mResponseType; + unsigned short mProcessContactDelay; void read(NIFStream *nif) override; }; struct HavokMaterial { - unsigned int material; + unsigned int mMaterial; void read(NIFStream *nif); }; struct hkSubPartData { - HavokMaterial material; - unsigned int numVertices, havokFilter; + HavokMaterial mHavokMaterial; + unsigned int mNumVertices; + unsigned int mHavokFilter; void read(NIFStream *nif); };