#include "player.hpp" #include "utils/godot_macros.hpp" void Player::_bind_methods() { } void Player::_ready() { this->anim_tree = this->get_node("%AnimationTree"); this->model_node = this->get_node("%CharacterModel"); } void Player::_physics_process(double delta [[maybe_unused]]) { gd::Basis const &model_basis{this->model_node->get_global_basis()}; gd::Vector3 const local_motion{this->anim_tree->get_root_motion_position()}; gd::Vector3 const motion { local_motion.x * model_basis.get_column(0) + local_motion.y * model_basis.get_column(1) + local_motion.z * model_basis.get_column(2) }; this->set_velocity(motion / delta); this->move_and_slide(); }