#include "Contents/EffectAttachments.h" #include "Contents/EffectActor.h" #include "Contents/RagEffectState.h" // OFFSET: 0x00CADBE0 // FUNCTION: fn_21062 bool EffectAttachments::HasId(int id) const { for (const RagEffectState* effect : this->effects) { if (effect && effect->id == id) { return true; } } return false; } // OFFSET: 0x00CADC40 // FUNCTION: fn_21064 bool EffectAttachments::Contains(const RagEffectState* effect) const { for (const RagEffectState* current : this->effects) { if (current == effect) { return true; } } return false; } // ORIGINAL_SITE: 0x00CB4416 in fn_21111 (fragment) void EffectAttachments::Unlink(RagEffectState* effect) { if (!effect) { return; } for (auto entry = this->effects.begin(); entry != this->effects.end(); ++entry) { if (*entry == effect) { this->effects.erase(entry); if (this->first == effect) { this->first = nullptr; } else if (this->second == effect) { this->second = nullptr; } return; } } } // Notify before clearing nodes; effects are not deleted, and callback-visible list membership survives. // OFFSET: 0x00CA8C40 void EffectAttachments::DetachAll() { for (RagEffectState* effect : this->effects) { if (effect) { effect->parent = nullptr; } } this->effects.clear(); this->first = nullptr; this->second = nullptr; } // FUNCTION: fn_21063 bool EffectActor::EffectVisible() const { return this->render.visible != 0 && this->render.enabled != 0; }