diff --git a/Source/Contents/Effects/RagEffect.cpp b/Source/Contents/Effects/RagEffect.cpp index b95b939b..dbe2262b 100644 --- a/Source/Contents/Effects/RagEffect.cpp +++ b/Source/Contents/Effects/RagEffect.cpp @@ -31,6 +31,8 @@ #include "Contents/Effects/EffectLists.h" #include "Contents/Effects/EffectTypes.h" #include "Contents/Effects/EffectTypes.h" +#include "Contents/Effects/EffectVisibility.h" +#include "Contents/Effects/Particle.h" #include "Client/Application/ErrorDialog.h" #include "Render/DeviceContext/DCSurface.h" #include @@ -14973,6 +14975,28 @@ static __forceinline void SetAniClipCorners(RenderVertex* vertices, const EZeffe } } +// OFFSET: 0x00C37D10 +// FUNCTION: fn_20097 +void CRagEffect::RenderEZ2STR(const matrix& view) { + const bool partyVisible = g_session.IsPvpMap(); + const EffectVisibilityContext visibility{g_serviceOptions, g_session.m_aid, partyVisible, g_session.m_partyMembers}; + if (!g_session.IsEffectRenderEnabled() || !PartyEffectVisible(this->state, visibility)) { + return; + } + + if (!this->state.resourceData || !this->state.parent) { + return; + } + + int index = 0; + for (int layer = 1; layer < static_cast(this->state.resourceData)->clipCount; ++layer) { + if (this->state.layerDrawn[layer]) { + this->RenderAniClip(&static_cast(this->state.resourceData)->clips[layer], &this->state.transforms[layer], index, view); + index += 2; + } + } +} + // OFFSET: 0x00C37DC0 // FUNCTION: fn_20098 void CRagEffect::RenderAniClip(EZeffectClip* clip, const EZeffectTransform* transform, int, const matrix& view) { diff --git a/Source/Contents/Effects/RagEffect.h b/Source/Contents/Effects/RagEffect.h index 2f2511e0..441a700b 100644 --- a/Source/Contents/Effects/RagEffect.h +++ b/Source/Contents/Effects/RagEffect.h @@ -75,6 +75,7 @@ struct CRagEffect : CRenderObject { void TexturedOrbitDust(const char* name, char rise, char kind); void WeddingBurst(const char* name, char silent); void ThunderFreeze(int unused); + void RenderEZ2STR(const matrix& view); void RenderAniClip(EZeffectClip* clip, const EZeffectTransform* transform, int count, const matrix& view); void LineStreakTextured(std::int16_t kind, const char* name); void TexturedTumble(const char* name, char unused);