#pragma once

#include "Crosshair.h"
#include <godot_cpp/classes/gpu_particles3d.hpp>
#include <godot_cpp/classes/mesh_instance3d.hpp>
#include <godot_cpp/classes/node3d.hpp>
#include <godot_cpp/classes/ray_cast3d.hpp>
#include <godot_cpp/classes/timer.hpp>

namespace blitz {
class Bullet : public godot::Node3D {
	GDCLASS(Bullet, godot::Node3D)
  protected:
	static void _bind_methods();

  public:
	Bullet();
	~Bullet();

	void _ready();
	void _physics_process(float delta);

  private:
	godot::GPUParticles3D* m_Particles;
	godot::RayCast3D* m_Ray;
	godot::MeshInstance3D* m_Mesh;
	godot::Timer* m_Timer;
	Crosshair* m_Crosshair;

	void _on_timer_timeout();
};

}  // namespace blitz