PlayerContoroller and LevelScreen refactoring (#806)

This commit is contained in:
ChancellorIkseew 2026-03-02 08:18:47 +10:00 • committed by GitHub
parent 6bdbf5b40e
commit cb2b901985
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 22 deletions

View file

@ -114,7 +114,7 @@ LevelScreen::~LevelScreen() {
} }
scripting::on_frontend_close(); scripting::on_frontend_close();
input.getBindings().enableAll(); input.getBindings().enableAll();
playerController->getPlayer()->chunks->saveAndClear(); playerController->getPlayer().chunks->saveAndClear();
controller->onWorldQuit(); controller->onWorldQuit();
} }
@ -168,12 +168,12 @@ void LevelScreen::saveDecorations() {
void LevelScreen::saveWorldPreview() { void LevelScreen::saveWorldPreview() {
try { try {
logger.info() << "saving world preview"; logger.info() << "saving world preview";
auto player = playerController->getPlayer(); const Player& player = playerController->getPlayer();
auto& settings = engine.getSettings(); const auto& settings = engine.getSettings();
int previewSize = settings.ui.worldPreviewSize.get(); int previewSize = settings.ui.worldPreviewSize.get();
// camera special copy for world preview // camera special copy for world preview
Camera camera = *player->fpCamera; Camera& camera = *player.fpCamera;
camera.setFov(glm::radians(70.0f)); camera.setFov(glm::radians(70.0f));
DrawContext pctx(nullptr, engine.getWindow(), batch.get()); DrawContext pctx(nullptr, engine.getWindow(), batch.get());
@ -215,18 +215,18 @@ void LevelScreen::updateHotkeys() {
} }
void LevelScreen::updateAudio() { void LevelScreen::updateAudio() {
auto player = playerController->getPlayer(); Player& player = playerController->getPlayer();
auto camera = player->currentCamera; Camera& camera = *player.currentCamera;
bool paused = hud->isPause(); bool paused = hud->isPause();
audio::get_channel("regular")->setPaused(paused); audio::get_channel("regular")->setPaused(paused);
audio::get_channel("ambient")->setPaused(paused); audio::get_channel("ambient")->setPaused(paused);
glm::vec3 velocity {}; glm::vec3 velocity {};
if (auto hitbox = player->getHitbox()) { if (auto hitbox = player.getHitbox()) {
velocity = hitbox->velocity; velocity = hitbox->velocity;
} }
audio::set_listener( 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); hud->update(hudVisible);
const auto& weather = renderer->getWeather(); const Weather& weather = renderer->getWeather();
const auto& player = *playerController->getPlayer(); const Player& player = playerController->getPlayer();
const auto& camera = *player.currentCamera; const Camera& camera = *player.currentCamera;
decorator->update(paused ? 0.0f : delta, camera, weather); decorator->update(paused ? 0.0f : delta, camera, weather);
} }
void LevelScreen::draw(float delta) { 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()) { if (!hud->isPause()) {
scripting::on_entities_render(engine.getTime().getDelta()); scripting::on_entities_render(engine.getTime().getDelta());
} }
renderer->update(*camera, delta * !hud->isPause()); renderer->update(camera, delta * !hud->isPause());
renderer->renderFrame(ctx, *camera, hudVisible, *postProcessing); renderer->renderFrame(ctx, camera, hudVisible, *postProcessing);
if (!hud->isPause()) { if (!hud->isPause()) {
scripting::on_frontend_render(); scripting::on_frontend_render();
} }

View file

@ -253,18 +253,18 @@ void PlayerController::onFootstep(const Hitbox& hitbox) {
} }
void PlayerController::updateFootsteps(float delta) { void PlayerController::updateFootsteps(float delta) {
const float pi = glm::pi<float>(); constexpr float GLM_PI = glm::pi<float>();
auto hitbox = player.getHitbox(); auto hitbox = player.getHitbox();
if (hitbox && hitbox->grounded) { if (hitbox && hitbox->grounded) {
const glm::vec3& vel = hitbox->velocity; const glm::vec3& vel = hitbox->velocity;
float f = glm::length(glm::vec2(vel.x, vel.z)); float f = glm::length(glm::vec2(vel.x, vel.z));
stepsTimer += delta * f * STEPS_SPEED; stepsTimer += delta * f * STEPS_SPEED;
if (stepsTimer >= pi) { if (stepsTimer >= GLM_PI) {
stepsTimer = fmod(stepsTimer, pi); stepsTimer = fmod(stepsTimer, GLM_PI);
onFootstep(*hitbox); onFootstep(*hitbox);
} }
} else { } else {
stepsTimer = pi; stepsTimer = GLM_PI;
} }
} }
@ -554,6 +554,6 @@ void PlayerController::updateInteraction(const Input& inputEvents, float delta)
} }
} }
Player* PlayerController::getPlayer() { Player& PlayerController::getPlayer() {
return &player; return player;
} }

View file

@ -89,5 +89,5 @@ public:
void postUpdate( void postUpdate(
float delta, int windowHeight, const Input* inputEvents, bool pause float delta, int windowHeight, const Input* inputEvents, bool pause
); );
Player* getPlayer(); Player& getPlayer();
}; };