feat(gameplay): implement entity system with concurrent task handling and fix model loading

This commit is contained in:
2026-07-30 15:05:56 +08:00
parent efa49a98b7
commit b166bab4f3
10 changed files with 109 additions and 30 deletions

View File

@@ -3,6 +3,7 @@
#include "Cubed/camera.hpp"
#include "Cubed/debug_collector.hpp"
#include "Cubed/gameplay/client_world.hpp"
#include "Cubed/gameplay/ecs/client_entity.hpp"
#include "Cubed/render/renderer.hpp"
#include "Cubed/render/renderer_constants.hpp"
#include "Cubed/scene/world_scene.hpp"
@@ -294,14 +295,15 @@ void WorldRenderer::shadow_entity(ClientWorld& world,
auto& shader = m_renderer.get_shader("depth_model");
shader.use();
shader.set_loc("lightSpaceMatrix", light_matrix);
/*
auto& registry = world.get_registry();
auto view = registry.view<Transform, Model>();
for (auto entity : view) {
auto [transform, model] = view.get<Transform, Model>(entity);
m_renderer.model_renderer().shadow_pass(model.name, transform.pos,
world.world_scene().camera());
}*/
glEnable(GL_DEPTH_TEST);
auto& registry = world.entity_manager().get_registry();
auto view = registry.view<BaseClientCreature>();
for (auto entity : view) {
auto& creature = view.get<BaseClientCreature>(entity);
m_renderer.model_renderer().shadow_pass(
creature.model, creature.transform.position.value,
world.world_scene().camera());
}
m_player_renderer.render(shader, world, true);
}
@@ -714,15 +716,15 @@ void WorldRenderer::render_entity(ClientWorld& world) {
m_depth_map_texture->bind(0);
glEnable(GL_DEPTH_TEST);
/*
auto& registry = world.get_registry();
auto view = registry.view<Transform, Model>();
auto& registry = world.entity_manager().get_registry();
auto view = registry.view<BaseClientCreature>();
for (auto entity : view) {
auto [transform, model] = view.get<Transform, Model>(entity);
m_renderer.model_renderer().render_model(model.name, transform.pos,
world.world_scene().camera());
auto& creature = view.get<BaseClientCreature>(entity);
m_renderer.model_renderer().render_model(
creature.model, creature.transform.position.value,
world.world_scene().camera());
}
*/
m_player_renderer.render(shader, world, false);
}