diff options
Diffstat (limited to 'src/Entities/Player.hpp')
| -rw-r--r-- | src/Entities/Player.hpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/Entities/Player.hpp b/src/Entities/Player.hpp index c8a1c1f..c829d1f 100644 --- a/src/Entities/Player.hpp +++ b/src/Entities/Player.hpp @@ -5,6 +5,7 @@ #include "../GFX/Camera.hpp" #include "../World/World.hpp" #include "../GFX/Window.hpp" +#include "../GFX/Shading/Program.hpp" #include "../Math/AABB.hpp" #include "../Math/Rotation.hpp" #include "../World/Position.hpp" @@ -12,9 +13,10 @@ namespace MC::Entities { class Player { public: - explicit Player(Position::World position) : m_transform(position) {} + explicit Player(Position::World position, Real ascept, Real fov, Real near, Real far); void update(const Time& time, GFX::Window& window, GFX::Camera& camera, World::World& world); + void render(const GFX::Camera& camera); void move(Position::WorldOffset by); void move_to(Position::World to); @@ -43,6 +45,7 @@ private: Vec3 flying_velocity(GFX::Window& window, const Time& time, Vec3 input_direction); Vec3 noclip_velocity(GFX::Window& window, const Time& time, Vec3 input_direction); + void update_targeted_block(World::World& world); void actions(GFX::Window& window, World::World& world); Transform camera_transform() const; @@ -56,6 +59,8 @@ private: // Returns position of the center of the bottom face of `box`. static Position::World position_for_bounding_box(AABB box); + static GFX::Mesh create_outline_cube_mesh(); + enum class MovementMode { // Gravity, collision, and normal movement Walking, @@ -68,9 +73,26 @@ private: MovementMode m_movement = MovementMode::Walking; Bool m_on_ground = false; + struct TargetedBlock { + Position::BlockWorld position; + Position::BlockWorldOffset normal; + }; + std::optional<TargetedBlock> m_targeted_block; + Vec3 m_velocity{}; Transform m_transform; static inline AABB s_bounds{{0.35, 1.8, 0.35}}; + + // TODO: Put this into the rendering system + static const Char* outline_vertex; + static const Char* outline_fragment; + + GFX::Shading::Program m_outline_program; + GFX::Mesh m_outline_mesh; + + GFX::Shading::Uniform m_outline_model_uniform; + GFX::Shading::Uniform m_outline_view_uniform; + GFX::Shading::Uniform m_outline_projection_uniform; }; } |
