feat: commenting an cleanup pass character_actor.hpp
This commit is contained in:
parent
dc56c7bc52
commit
540d91ddcf
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "character_data.hpp"
|
#include "character_data.hpp"
|
||||||
#include "health.hpp"
|
#include "health.hpp"
|
||||||
|
#include "state.hpp"
|
||||||
#include "projectile_pool.hpp"
|
#include "projectile_pool.hpp"
|
||||||
#include <godot_cpp/classes/character_body3d.hpp>
|
#include <godot_cpp/classes/character_body3d.hpp>
|
||||||
#include <godot_cpp/classes/curve.hpp>
|
#include <godot_cpp/classes/curve.hpp>
|
||||||
|
@ -19,11 +20,19 @@ public:
|
||||||
virtual void _enter_tree() override;
|
virtual void _enter_tree() override;
|
||||||
virtual void _process(double delta_time) override;
|
virtual void _process(double delta_time) override;
|
||||||
virtual void _physics_process(double delta_time) override;
|
virtual void _physics_process(double delta_time) override;
|
||||||
|
// manually set target_velocity
|
||||||
void move(Vector3 world_vector);
|
void move(Vector3 world_vector);
|
||||||
|
// manually aim at a target position
|
||||||
|
// calls aim_direction with the flattened direction to 'at'
|
||||||
void aim(Vector3 at);
|
void aim(Vector3 at);
|
||||||
|
// manually set the forward vector of target_rotation
|
||||||
void aim_direction(Vector3 direction);
|
void aim_direction(Vector3 direction);
|
||||||
|
// set a movement target to navigate towards
|
||||||
void move_to(Vector3 to, float target_distance = 0.5f);
|
void move_to(Vector3 to, float target_distance = 0.5f);
|
||||||
|
// fire weapon at a target position
|
||||||
|
// calls aim(at) and set_firing(true)
|
||||||
void shoot_at(Vector3 at);
|
void shoot_at(Vector3 at);
|
||||||
|
// getter-setters
|
||||||
void set_firing(bool firing);
|
void set_firing(bool firing);
|
||||||
void set_manual_mode(bool value);
|
void set_manual_mode(bool value);
|
||||||
|
|
||||||
|
@ -44,19 +53,31 @@ protected:
|
||||||
void process_rotation(double delta_time);
|
void process_rotation(double delta_time);
|
||||||
void try_fire_weapon();
|
void try_fire_weapon();
|
||||||
private:
|
private:
|
||||||
|
// desired velocity, accelerated towards each frame
|
||||||
Vector3 velocity_target{0.f,0.f,0.f};
|
Vector3 velocity_target{0.f,0.f,0.f};
|
||||||
|
// target rotation, slerped towards each frame
|
||||||
Basis target_rotation{};
|
Basis target_rotation{};
|
||||||
NavigationAgent3D *nav_agent{nullptr};
|
// ignore any ai planning or navigation
|
||||||
bool mode_manual{false};
|
bool mode_manual{false};
|
||||||
|
// fire weapon at whatever we're aiming at
|
||||||
|
bool firing{false};
|
||||||
|
// the next timestamp at which a weapon can be fired
|
||||||
|
float fire_timer{0.f};
|
||||||
|
// the origin point for projectiles
|
||||||
|
Node3D *weapon_muzzle{nullptr};
|
||||||
|
// whatever the AI is currently targetting
|
||||||
|
Node *target{nullptr};
|
||||||
|
// the current state of the actor
|
||||||
|
goap::State current_state{}; // the current state
|
||||||
|
|
||||||
Health *health{nullptr};
|
Health *health{nullptr};
|
||||||
ProjectilePool *primary_weapon_pool{nullptr};
|
ProjectilePool *primary_weapon_pool{nullptr};
|
||||||
Ref<CharacterData> data;
|
NavigationAgent3D *nav_agent{nullptr};
|
||||||
float fire_interval{0.f};
|
|
||||||
bool firing{false};
|
|
||||||
float fire_timer{0.f};
|
|
||||||
Node3D *weapon_muzzle{nullptr};
|
|
||||||
|
|
||||||
Ref<Curve> rotation_speed_curve{};
|
Ref<Curve> rotation_speed_curve{};
|
||||||
|
// character data assigned when spawned
|
||||||
|
Ref<CharacterData> data;
|
||||||
|
float fire_interval{0.f}; // derived from the current weapon's rpm
|
||||||
|
|
||||||
static float const ACCELERATION;
|
static float const ACCELERATION;
|
||||||
static float const WALK_SPEED;
|
static float const WALK_SPEED;
|
||||||
|
|
Loading…
Reference in a new issue