49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
#ifndef PLAYER_CONTROL_H_
|
|
#define PLAYER_CONTROL_H_
|
|
|
|
#include <glm/glm.hpp>
|
|
|
|
#include "../settings.h"
|
|
#include "../objects/Player.h"
|
|
|
|
class Camera;
|
|
class Level;
|
|
|
|
class CameraControl {
|
|
Player* player;
|
|
Camera* camera;
|
|
const CameraSettings& settings;
|
|
glm::vec3 offset;
|
|
float shake = 0.0f;
|
|
float shakeTimer = 0.0f;
|
|
glm::vec3 interpVel {0.0f};
|
|
public:
|
|
CameraControl(Player* player, const CameraSettings& settings);
|
|
void updateMouse(PlayerInput& input);
|
|
void update(PlayerInput& input, float delta);
|
|
void refresh();
|
|
};
|
|
|
|
class PlayerController {
|
|
Level* level;
|
|
Player* player;
|
|
PlayerInput input;
|
|
CameraControl camControl;
|
|
|
|
void updateKeyboard();
|
|
void updateCamera(float delta, bool movement);
|
|
void refreshCamera();
|
|
void resetKeyboard();
|
|
void updateControls(float delta);
|
|
void updateInteraction();
|
|
|
|
public:
|
|
static glm::vec3 selectedBlockPosition;
|
|
static int selectedBlockId;
|
|
|
|
PlayerController(Level* level, const EngineSettings& settings);
|
|
void update(float delta, bool input, bool pause);
|
|
};
|
|
|
|
#endif /* PLAYER_CONTROL_H_ */
|