One step closer to multiplayer
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user