rodecomp/Source/Contents/EffectVisibility.cpp
2026-10-24 00:35:19 +00:00

44 lines
1.1 KiB
C++

#include "Contents/EffectActor.h"
#include "Contents/EffectVisibility.h"
#include "Contents/RagEffectState.h"
#include "Contents/ServiceOptions.h"
// OFFSET: 0x00C734B0
// FUNCTION: fn_20327
bool PartyEffectVisible(const RagEffectState& effect, const EffectVisibilityContext& context) {
if (context.options.Get(8) == 0 && effect.forceRender == 0) {
return false;
}
const EffectActor* actor = effect.parent;
if (!actor) {
return false;
}
if (actor->render.unknown_00A8 == 0) {
return true;
}
if (effect.unknown_11CA0 == 0) {
if (actor->render.accountId == context.localAccountId) {
return true;
}
if (context.partyVisible) {
for (const MessengerMember& member : context.party) {
if (member.accountId == actor->render.accountId) {
// Original membership helper stops at the first match.
if (member.offline == 0) {
return true;
}
break;
}
}
}
}
// Independent of the membership gate.
return actor->render.visible != 0 && actor->render.enabled != 0;
}