30 lines
		
	
	
		
			710 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			710 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#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
 |