mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
PlayerContoroller and LevelScreen refactoring (#806)
This commit is contained in:
parent
6bdbf5b40e
commit
cb2b901985
3 changed files with 22 additions and 22 deletions
|
|
@ -114,7 +114,7 @@ LevelScreen::~LevelScreen() {
|
|||
}
|
||||
scripting::on_frontend_close();
|
||||
input.getBindings().enableAll();
|
||||
playerController->getPlayer()->chunks->saveAndClear();
|
||||
playerController->getPlayer().chunks->saveAndClear();
|
||||
controller->onWorldQuit();
|
||||
|
||||
}
|
||||
|
|
@ -168,12 +168,12 @@ void LevelScreen::saveDecorations() {
|
|||
void LevelScreen::saveWorldPreview() {
|
||||
try {
|
||||
logger.info() << "saving world preview";
|
||||
auto player = playerController->getPlayer();
|
||||
auto& settings = engine.getSettings();
|
||||
const Player& player = playerController->getPlayer();
|
||||
const auto& settings = engine.getSettings();
|
||||
int previewSize = settings.ui.worldPreviewSize.get();
|
||||
|
||||
// camera special copy for world preview
|
||||
Camera camera = *player->fpCamera;
|
||||
Camera& camera = *player.fpCamera;
|
||||
camera.setFov(glm::radians(70.0f));
|
||||
|
||||
DrawContext pctx(nullptr, engine.getWindow(), batch.get());
|
||||
|
|
@ -215,18 +215,18 @@ void LevelScreen::updateHotkeys() {
|
|||
}
|
||||
|
||||
void LevelScreen::updateAudio() {
|
||||
auto player = playerController->getPlayer();
|
||||
auto camera = player->currentCamera;
|
||||
Player& player = playerController->getPlayer();
|
||||
Camera& camera = *player.currentCamera;
|
||||
bool paused = hud->isPause();
|
||||
|
||||
audio::get_channel("regular")->setPaused(paused);
|
||||
audio::get_channel("ambient")->setPaused(paused);
|
||||
glm::vec3 velocity {};
|
||||
if (auto hitbox = player->getHitbox()) {
|
||||
if (auto hitbox = player.getHitbox()) {
|
||||
velocity = hitbox->velocity;
|
||||
}
|
||||
audio::set_listener(
|
||||
camera->position, velocity, camera->dir, glm::vec3(0, 1, 0)
|
||||
camera.position, velocity, camera.dir, glm::vec3(0, 1, 0)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -257,22 +257,22 @@ void LevelScreen::update(float delta) {
|
|||
|
||||
hud->update(hudVisible);
|
||||
|
||||
const auto& weather = renderer->getWeather();
|
||||
const auto& player = *playerController->getPlayer();
|
||||
const auto& camera = *player.currentCamera;
|
||||
const Weather& weather = renderer->getWeather();
|
||||
const Player& player = playerController->getPlayer();
|
||||
const Camera& camera = *player.currentCamera;
|
||||
decorator->update(paused ? 0.0f : delta, camera, weather);
|
||||
}
|
||||
|
||||
void LevelScreen::draw(float delta) {
|
||||
auto camera = playerController->getPlayer()->currentCamera;
|
||||
Camera& camera = *playerController->getPlayer().currentCamera;
|
||||
|
||||
DrawContext ctx(nullptr, engine.getWindow(), batch.get());
|
||||
const DrawContext ctx(nullptr, engine.getWindow(), batch.get());
|
||||
|
||||
if (!hud->isPause()) {
|
||||
scripting::on_entities_render(engine.getTime().getDelta());
|
||||
}
|
||||
renderer->update(*camera, delta * !hud->isPause());
|
||||
renderer->renderFrame(ctx, *camera, hudVisible, *postProcessing);
|
||||
renderer->update(camera, delta * !hud->isPause());
|
||||
renderer->renderFrame(ctx, camera, hudVisible, *postProcessing);
|
||||
if (!hud->isPause()) {
|
||||
scripting::on_frontend_render();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -253,18 +253,18 @@ void PlayerController::onFootstep(const Hitbox& hitbox) {
|
|||
}
|
||||
|
||||
void PlayerController::updateFootsteps(float delta) {
|
||||
const float pi = glm::pi<float>();
|
||||
constexpr float GLM_PI = glm::pi<float>();
|
||||
auto hitbox = player.getHitbox();
|
||||
if (hitbox && hitbox->grounded) {
|
||||
const glm::vec3& vel = hitbox->velocity;
|
||||
float f = glm::length(glm::vec2(vel.x, vel.z));
|
||||
stepsTimer += delta * f * STEPS_SPEED;
|
||||
if (stepsTimer >= pi) {
|
||||
stepsTimer = fmod(stepsTimer, pi);
|
||||
if (stepsTimer >= GLM_PI) {
|
||||
stepsTimer = fmod(stepsTimer, GLM_PI);
|
||||
onFootstep(*hitbox);
|
||||
}
|
||||
} else {
|
||||
stepsTimer = pi;
|
||||
stepsTimer = GLM_PI;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -554,6 +554,6 @@ void PlayerController::updateInteraction(const Input& inputEvents, float delta)
|
|||
}
|
||||
}
|
||||
|
||||
Player* PlayerController::getPlayer() {
|
||||
return &player;
|
||||
Player& PlayerController::getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,5 +89,5 @@ public:
|
|||
void postUpdate(
|
||||
float delta, int windowHeight, const Input* inputEvents, bool pause
|
||||
);
|
||||
Player* getPlayer();
|
||||
Player& getPlayer();
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue