Browse Source

Optimize visibility culling in renderWorld - cache visibility service instance

Co-authored-by: djeada <[email protected]>
copilot-swe-agent[bot] 2 months ago
parent
commit
c119505797
1 changed files with 4 additions and 2 deletions
  1. 4 2
      render/scene_renderer.cpp

+ 4 - 2
render/scene_renderer.cpp

@@ -203,6 +203,9 @@ void Renderer::renderWorld(Engine::Core::World *world) {
 
 
   std::lock_guard<std::mutex> guard(m_worldMutex);
   std::lock_guard<std::mutex> guard(m_worldMutex);
 
 
+  auto &vis = Game::Map::VisibilityService::instance();
+  const bool visibilityEnabled = vis.isInitialized();
+
   auto renderableEntities =
   auto renderableEntities =
       world->getEntitiesWith<Engine::Core::RenderableComponent>();
       world->getEntitiesWith<Engine::Core::RenderableComponent>();
 
 
@@ -216,8 +219,7 @@ void Renderer::renderWorld(Engine::Core::World *world) {
 
 
     auto *unitComp = entity->getComponent<Engine::Core::UnitComponent>();
     auto *unitComp = entity->getComponent<Engine::Core::UnitComponent>();
     if (unitComp && unitComp->ownerId != m_localOwnerId) {
     if (unitComp && unitComp->ownerId != m_localOwnerId) {
-      auto &vis = Game::Map::VisibilityService::instance();
-      if (vis.isInitialized()) {
+      if (visibilityEnabled) {
         if (!vis.isVisibleWorld(transform->position.x, transform->position.z)) {
         if (!vis.isVisibleWorld(transform->position.x, transform->position.z)) {
           continue;
           continue;
         }
         }