One step closer to multiplayer

This commit is contained in:
InfiniteCoder
2024-03-02 22:59:31 +03:00
parent 9d9c9f5570
commit 0157213a56
26 changed files with 213 additions and 219 deletions
+21 -13
View File
@@ -1,32 +1,32 @@
#include "LevelController.h"
#include "../world/Level.h"
#include "PlayerController.h"
#include "BlocksController.h"
#include "ChunksController.h"
#include "../physics/Hitbox.h"
#include "scripting/scripting.h"
#include "../interfaces/Object.h"
LevelController::LevelController(EngineSettings& settings, Level* level)
: settings(settings), level(level) {
blocks = std::make_unique<BlocksController>(level, settings.chunks.padding);
chunks = std::make_unique<ChunksController>(level, settings.chunks.padding);
player = std::make_unique<PlayerController>(level, settings, blocks.get());
: settings(settings), level(level),
blocks(std::make_unique<BlocksController>(level, settings.chunks.padding)),
chunks(std::make_unique<ChunksController>(level, settings.chunks.padding)),
player(std::make_unique<PlayerController>(level, settings, blocks.get())) {
scripting::on_world_load(level, blocks.get());
}
LevelController::~LevelController() {
}
void LevelController::update(float delta, bool input, bool pause) {
player->update(delta, input, pause);
level->update();
glm::vec3 position = player->getPlayer()->hitbox->position;
level->loadMatrix(position.x, position.z, settings.chunks.loadDistance + settings.chunks.padding * 2);
chunks->update(settings.chunks.loadSpeed);
// erease null pointers
level->objects.remove_if([](auto obj) { return obj == nullptr; });
level->objects.erase(
std::remove_if(
level->objects.begin(), level->objects.end(),
[](auto obj) { return obj == nullptr; }),
level->objects.end()
);
if (!pause) {
// update all objects that needed
@@ -49,3 +49,11 @@ void LevelController::onWorldSave() {
void LevelController::onWorldQuit() {
scripting::on_world_quit();
}
Level* LevelController::getLevel() {
return level.get();
}
Player* LevelController::getPlayer() {
return player->getPlayer();
}