diff --git a/src/projectile.cpp b/src/projectile.cpp index 19d92e1..4643cbe 100644 --- a/src/projectile.cpp +++ b/src/projectile.cpp @@ -1,4 +1,16 @@ #include "projectile.hpp" +#include "projectile_pool.hpp" #include -namespace godot {} +namespace godot { +void IProjectile::return_to_pool() { + if(!this->pool) + return; + Node3D *node = dynamic_cast(this); + if(node) + this->pool->return_projectile(node); +} +void IProjectile::set_projectile_pool(ProjectilePool *pool) { + this->pool = pool; +} +} diff --git a/src/projectile.hpp b/src/projectile.hpp index 0f72db9..0a97670 100644 --- a/src/projectile.hpp +++ b/src/projectile.hpp @@ -10,6 +10,7 @@ class IProjectile { public: virtual void set_weapon_data(Ref data) = 0; void return_to_pool(); + void set_projectile_pool(ProjectilePool *pool); private: ProjectilePool *pool{nullptr}; };