#ifndef PLAYER_DETECTOR_H
#define PLAYER_DETECTOR_H

#include "player_body.h"
#include "scene/3d/node_3d.h"

class PlayerDetector : public Node3D {
	GDCLASS(PlayerDetector, Node3D);
	static void _bind_methods();
	bool check() const;
	void ready();
	void process(double delta);
	void set_aware_of_player(bool value);

protected:
	void _notification(int what);

public:
	bool is_aware_of_player() const;

private:
	bool aware_of_player{ false };
	float max_distance{ 100.f };
	float min_dot{ 0.1f };
	double query_time{ 0.3 };
	double query_timer{ 0.0 };
	PhysicsDirectSpaceState3D::RayParameters ray_params{};

public:
	static String sig_awareness_changed;
};

#endif // !PLAYER_DETECTOR_H
