diff options
| author | Mel <einebeere@gmail.com> | 2024-02-15 11:33:11 +0100 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-02-15 11:34:28 +0100 |
| commit | 92f63bbdbfc214849c203511bbcb1be0a4865588 (patch) | |
| tree | d82e1b31e583b5cc9538f61cad696dab5dbd84dc /src/Entities/Player.hpp | |
| parent | 87ef308220addbe4406006ceb802a7364e6f1a05 (diff) | |
| download | meowcraft-92f63bbdbfc214849c203511bbcb1be0a4865588.tar.zst meowcraft-92f63bbdbfc214849c203511bbcb1be0a4865588.zip | |
Proper input system
Diffstat (limited to 'src/Entities/Player.hpp')
| -rw-r--r-- | src/Entities/Player.hpp | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/Entities/Player.hpp b/src/Entities/Player.hpp index 2b69d57..342d965 100644 --- a/src/Entities/Player.hpp +++ b/src/Entities/Player.hpp @@ -1,14 +1,15 @@ #pragma once +#include "../Common/Pure.hpp" #include "../Time.hpp" #include "../Transform.hpp" #include "../GFX/Actions.hpp" #include "../GFX/Camera.hpp" #include "../World/World.hpp" -#include "../GFX/Window.hpp" #include "../Math/AABB.hpp" #include "../Math/Rotation.hpp" #include "../World/Position.hpp" +#include "../Input.hpp" namespace MC::Entities { class Player { @@ -16,9 +17,9 @@ public: explicit Player(Position::World position) : m_transform(position), m_outline_mesh(create_outline_cube_mesh()) {} - Position::World position() const { return m_transform.position(); } + PURE Position::World position() const { return m_transform.position(); } - void update(const Time& time, GFX::Window& window, GFX::Camera& camera, World::World& world); + void update(Time const& time, Input const& input, GFX::Camera& camera, World::World& world); void render(GFX::Actions& actions); void move(Position::WorldOffset by); @@ -27,14 +28,14 @@ public: void rotate(Rotation by); void rotate_to(Rotation to); - AABB bounds() const; + PURE AABB bounds() const; private: struct BlockedAxis { Bool positive, negative; }; - Bool can_collide() const; + PURE Bool can_collide() const; struct ProcessCollisionsResult { Position::World position; @@ -45,19 +46,19 @@ private: Position::World rescue_from_void_on_new_chunk(Time const& time, World::World& world, Position::World position); - Position::World movement(GFX::Window& window, const Time& time, Vec3 input_direction); - Vec3 walking_velocity(GFX::Window& window, const Time& time, Vec3 input_direction); - Vec3 flying_velocity(GFX::Window& window, const Time& time, Vec3 input_direction); - Vec3 noclip_velocity(GFX::Window& window, const Time& time, Vec3 input_direction); + Position::World movement(Time const& time, Vec3 input_direction); + Vec3 walking_velocity(Time const& time, Vec3 input_direction); + PURE Vec3 flying_velocity(Time const& time, Vec3 input_direction) const; + PURE Vec3 noclip_velocity(Time const& time, Vec3 input_direction) const; void update_targeted_block(World::World& world); - void actions(GFX::Window& window, World::World& world); + void actions(Input const& input, World::World& world); - Transform camera_transform() const; + PURE Transform camera_transform() const; void update_camera_position(GFX::Camera& camera) const; - static Vec3 directional_input(GFX::Window& window); - static Rotation rotational_input(GFX::Window& window); + static Vec3 directional_input(Input const& input); + static Rotation rotational_input(Input const& input); // Creates a bounding box where `position` is at the center of the bottom face. static AABB bounding_box_for_position(Position::World position); |
