瀏覽代碼

Portals - Fix cull roaming through multiple portals

Small bug in the logic, the roaming objects only should be set to done when they have been marked as visible, rather than the first time they are examined. This is because they can be seen in a room through multiple portals, and each needs to be tested until there is either a visible result or all the portals in are visited.
lawnjelly 4 年之前
父節點
當前提交
546e207d8f
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      servers/visual/portals/portal_tracer.cpp

+ 3 - 3
servers/visual/portals/portal_tracer.cpp

@@ -167,10 +167,10 @@ void PortalTracer::cull_roamers(const VSRoom &p_room, const LocalVector<Plane> &
 			continue;
 		}
 
-		// mark as done
-		moving.last_tick_hit = _tick;
-
 		if (test_cull_inside(moving.exact_aabb, p_planes)) {
+			// mark as done (and on visible list)
+			moving.last_tick_hit = _tick;
+
 			_result->visible_roamer_pool_ids.push_back(pool_id);
 		}
 	}