From a525c57278bb7741b66b9222647e9c5470be1a44 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Fri, 11 Jun 2021 23:45:27 -0700 Subject: [PATCH] Add ADV9 --- DataSpec/DNACommon/PART.def | 1 + Runtime/Particle/CElementGen.cpp | 5 ++++- Runtime/Particle/CElementGen.hpp | 2 +- Runtime/Particle/CGenDescription.hpp | 1 + Runtime/Particle/CParticleGlobals.hpp | 2 +- Runtime/Particle/CSpawnSystemKeyframeData.cpp | 2 +- Runtime/Particle/CSpawnSystemKeyframeData.hpp | 2 +- 7 files changed, 10 insertions(+), 5 deletions(-) diff --git a/DataSpec/DNACommon/PART.def b/DataSpec/DNACommon/PART.def index 8b932cbf3..d6a5da913 100644 --- a/DataSpec/DNACommon/PART.def +++ b/DataSpec/DNACommon/PART.def @@ -107,6 +107,7 @@ REAL_ENTRY('ADV5', x11c_ADV5) REAL_ENTRY('ADV6', x120_ADV6) REAL_ENTRY('ADV7', x124_ADV7) REAL_ENTRY('ADV8', x128_ADV8) +REAL_ENTRY('ADV9', x164_ADV9) // Added in MP3 BOOL_ENTRY('SORT', x44_28_SORT, false) BOOL_ENTRY('MBLR', x44_30_MBLR, false) diff --git a/Runtime/Particle/CElementGen.cpp b/Runtime/Particle/CElementGen.cpp index 366bb41b5..65e1a7070 100644 --- a/Runtime/Particle/CElementGen.cpp +++ b/Runtime/Particle/CElementGen.cpp @@ -363,7 +363,7 @@ void CElementGen::UpdateAdvanceAccessParameters(u32 activeParticleCount, s32 par x60_advValues.size()); } - std::array& arr = x60_advValues[activeParticleCount]; + std::array& arr = x60_advValues[activeParticleCount]; CParticleGlobals::instance()->m_particleAccessParameters = &arr; if (CRealElement* adv1 = desc->x10c_ADV1.get()) { @@ -390,6 +390,9 @@ void CElementGen::UpdateAdvanceAccessParameters(u32 activeParticleCount, s32 par if (CRealElement* adv8 = desc->x128_ADV8.get()) { adv8->GetValue(particleFrame, arr[7]); } + if (CRealElement* adv9 = desc->x164_ADV9.get()) { + adv9->GetValue(particleFrame, arr[8]); + } } bool CElementGen::UpdateVelocitySource(size_t idx, s32 particleFrame, CParticle& particle) { diff --git a/Runtime/Particle/CElementGen.hpp b/Runtime/Particle/CElementGen.hpp index 0194a69ba..5157b03db 100644 --- a/Runtime/Particle/CElementGen.hpp +++ b/Runtime/Particle/CElementGen.hpp @@ -55,7 +55,7 @@ private: std::vector x30_particles; std::vector x40; std::vector x50_parentMatrices; - std::vector> x60_advValues; + std::vector> x60_advValues; int x70_internalStartFrame = 0; int x74_curFrame = 0; diff --git a/Runtime/Particle/CGenDescription.hpp b/Runtime/Particle/CGenDescription.hpp index 10d82f99b..5fbfa4dc3 100644 --- a/Runtime/Particle/CGenDescription.hpp +++ b/Runtime/Particle/CGenDescription.hpp @@ -94,6 +94,7 @@ public: std::unique_ptr x120_ADV6; std::unique_ptr x124_ADV7; std::unique_ptr x128_ADV8; + std::unique_ptr x164_ADV9; s32 x174_DFLG = 0; // Added in MP2 s32 x178_ = 0; // In MP3, need to check MP2 s32 x17c_ = 0; // In MP3, need to check MP2 diff --git a/Runtime/Particle/CParticleGlobals.hpp b/Runtime/Particle/CParticleGlobals.hpp index 66487048f..0961e5ac0 100644 --- a/Runtime/Particle/CParticleGlobals.hpp +++ b/Runtime/Particle/CParticleGlobals.hpp @@ -42,7 +42,7 @@ public: m_ParticleLifetimePercentage = zeus::clamp(0, m_ParticleLifetimePercentage, 100); } - const std::array* m_particleAccessParameters = nullptr; + const std::array* m_particleAccessParameters = nullptr; struct SParticleSystem { FourCC x0_type; diff --git a/Runtime/Particle/CSpawnSystemKeyframeData.cpp b/Runtime/Particle/CSpawnSystemKeyframeData.cpp index 4a039cc18..5930f0ce0 100644 --- a/Runtime/Particle/CSpawnSystemKeyframeData.cpp +++ b/Runtime/Particle/CSpawnSystemKeyframeData.cpp @@ -26,7 +26,7 @@ CSpawnSystemKeyframeData::CSpawnSystemKeyframeData(CInputStream& in) { } CSpawnSystemKeyframeData::CSpawnSystemKeyframeInfo::CSpawnSystemKeyframeInfo(CInputStream& in) { - x0_id = in.readUint32Big(); + x0_id = CAssetId(in); x4 = in.readUint32Big(); x8 = in.readUint32Big(); xc = in.readUint32Big(); diff --git a/Runtime/Particle/CSpawnSystemKeyframeData.hpp b/Runtime/Particle/CSpawnSystemKeyframeData.hpp index b7b02bb18..e070dfd67 100644 --- a/Runtime/Particle/CSpawnSystemKeyframeData.hpp +++ b/Runtime/Particle/CSpawnSystemKeyframeData.hpp @@ -15,7 +15,7 @@ class CSpawnSystemKeyframeData { public: class CSpawnSystemKeyframeInfo { friend class CSpawnSystemKeyframeData; - u32 x0_id; + CAssetId x0_id; u32 x4; u32 x8; u32 xc;