mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-12 22:41:49 +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();
|
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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue