2024-11-26 23:41:39 +00:00
|
|
|
#ifndef TR_PLAYER_HPP
|
|
|
|
#define TR_PLAYER_HPP
|
|
|
|
|
|
|
|
#include "utils/player_input.hpp"
|
|
|
|
#include <godot_cpp/classes/animation_tree.hpp>
|
|
|
|
#include <godot_cpp/classes/character_body3d.hpp>
|
2024-11-27 19:25:44 +00:00
|
|
|
#include <godot_cpp/classes/animation_node_state_machine_playback.hpp>
|
2024-11-26 23:41:39 +00:00
|
|
|
namespace gd = godot;
|
|
|
|
|
|
|
|
class Player : public gd::CharacterBody3D {
|
|
|
|
GDCLASS(Player, gd::CharacterBody3D);
|
|
|
|
static void _bind_methods();
|
|
|
|
public:
|
|
|
|
virtual void _ready() override;
|
2024-11-27 15:32:58 +00:00
|
|
|
virtual void _process(double delta) override;
|
2024-11-26 23:41:39 +00:00
|
|
|
virtual void _physics_process(double delta) override;
|
2024-11-27 15:32:58 +00:00
|
|
|
|
|
|
|
void _on_dir_horizontal(gd::Ref<gd::InputEvent>, float value);
|
|
|
|
void _on_dir_vertical(gd::Ref<gd::InputEvent>, float value);
|
2024-11-27 19:25:44 +00:00
|
|
|
|
|
|
|
gd::Vector2 get_input_directions() const;
|
2024-11-26 23:41:39 +00:00
|
|
|
private:
|
|
|
|
gd::AnimationTree *anim_tree{nullptr};
|
2024-11-27 19:25:44 +00:00
|
|
|
gd::AnimationNodeStateMachinePlayback *sfm{nullptr};
|
2024-11-26 23:41:39 +00:00
|
|
|
utils::PlayerInput *input{nullptr};
|
|
|
|
gd::Node3D *model_node{nullptr};
|
2024-11-27 15:32:58 +00:00
|
|
|
gd::Vector2 input_directions{};
|
2024-11-26 23:41:39 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // !TR_PLAYER_HPP
|