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();
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();
}

View file

@ -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;
}

View file

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