#ifndef PROJECTILE_POOL_HPP #define PROJECTILE_POOL_HPP #include "weapon_data.hpp" #include <godot_cpp/classes/node3d.hpp> #include <godot_cpp/templates/vector.hpp> namespace godot { class ProjectilePool : public Node { GDCLASS(ProjectilePool, Node); static void _bind_methods(); public: virtual void _exit_tree() override; void set_data(Ref<WeaponData> data); Ref<WeaponData> get_data() const; Node3D *claim_projectile(); void return_projectile(Node3D *node); protected: Node3D *instantiate_new(bool active = false); private: Ref<WeaponData> data{}; size_t count{0}; Vector<Node3D*> active{}; Vector<Node3D*> inactive{}; }; } #endif // !PROJECTILE_POOL_HPP