mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
51 lines
1.4 KiB
C++
51 lines
1.4 KiB
C++
#include "WorldSpellHitCallbackBehaviour.h"
|
|
namespace BS {
|
|
namespace SpellsNS {
|
|
namespace WorldSpells {
|
|
bool WorldSpellHitCallbackBehaviour::getEnabled(){
|
|
return this->enabled;
|
|
}
|
|
void WorldSpellHitCallbackBehaviour::setEnabled(bool value)
|
|
{
|
|
this->enabled = value;
|
|
}
|
|
WorldSpellHitCallbackBehaviour::WorldSpellHitCallbackBehaviour(WorldSpell* owner)
|
|
{
|
|
this->owner = owner;
|
|
this->t = owner->transform;
|
|
}
|
|
void WorldSpellHitCallbackBehaviour::Init()
|
|
{
|
|
if (this->owner->SpellProjectileAttribute->Collision) {
|
|
this->setEnabled(true);
|
|
return;
|
|
}
|
|
this->setEnabled(false);
|
|
}
|
|
void WorldSpellHitCallbackBehaviour::OnTriggerEnter(Collider* otherCollider)
|
|
{
|
|
if (!this->getEnabled()) {
|
|
return;
|
|
}
|
|
if (otherCollider->transform == null) {
|
|
return;
|
|
}
|
|
if ((otherCollider->transform == this->t) || (otherCollider->transform == this->owner->Caster->transform)) {
|
|
return;
|
|
}
|
|
if (this->didCollide) {
|
|
return;
|
|
}
|
|
this->didCollide = true;
|
|
GameObject* gameObject = otherCollider->gameObject;
|
|
if ((this->owner->Target != null) && (*gameObject != this->owner->Target->gameObject)) {
|
|
this->didCollide = false;
|
|
return;
|
|
}
|
|
(SpellScript*)(this->owner->Spell->SpellScript)->SpellHit(this->owner->Caster, gameObject->GetComponent<WorldEntity>(), this->owner, this->owner->Spell, this->owner->SpellScale);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|