#pragma once #include #include #include "../Entity.hpp" class PlayerController : public Entity { private: Camera3D camera{}; float cameraDistance; float cameraHeight; float moveSpeed; float cameraYaw{0.0f}; float cameraPitch{0.3f}; bool isRightMouseDown{false}; Vector2 lastMousePos{0, 0}; public: PlayerController(float distance = 10.0f, float height = 5.0f, float speed = 5.0f); void update(float deltaTime) override; void setPlayerPosition(const Vector3& pos); Vector3 getPlayerPosition() const { return position; } Vector3 getMoveInput() const; Camera3D& getCamera() { return camera; } float getCameraYaw() const { return cameraYaw; } float getCameraPitch() const { return cameraPitch; } private: void updateCameraPosition(); void handleCameraRotation(); void handleCameraZoom(); };