From 912e5aac7936a425b0c56790eb1c6a2f0abb1eae Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 13 Jul 2026 21:49:25 +0100 Subject: [PATCH] Ignore hidden channels when framing cameras --- .../Runtime/EveUnityPlayableWorldCameraRig.cs | 9 ++++++--- .../Tests/Editor/EveUnitySceneSurfaceLowererTests.cs | 6 +++++- packages/org.gamecult.eve.unity-scene/package.json | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldCameraRig.cs b/packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldCameraRig.cs index b4de75c..fafe3c9 100644 --- a/packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldCameraRig.cs +++ b/packages/org.gamecult.eve.unity-scene/Runtime/EveUnityPlayableWorldCameraRig.cs @@ -69,7 +69,9 @@ namespace GameCult.Eve.UnityScene } cameraComponent.cullingMask = cullingMask; } - var bounds = CalculateVisualBounds(player); + var bounds = CalculateVisualBounds( + player, + cameraComponent != null ? cameraComponent.cullingMask : -1); var target = bounds?.center ?? player.position; var radius = bounds?.extents.magnitude ?? 0f; var verticalFov = cameraComponent != null ? cameraComponent.fieldOfView : 60f; @@ -89,13 +91,14 @@ namespace GameCult.Eve.UnityScene return true; } - private static Bounds? CalculateVisualBounds(Transform player) + private static Bounds? CalculateVisualBounds(Transform player, int cullingMask) { var renderers = player.GetComponentsInChildren(includeInactive: false); Bounds? bounds = null; foreach (var visual in renderers) { - if (visual == null || !visual.enabled) + if (visual == null || !visual.enabled || + (cullingMask & (1 << visual.gameObject.layer)) == 0) continue; if (bounds.HasValue) { diff --git a/packages/org.gamecult.eve.unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs b/packages/org.gamecult.eve.unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs index 9d47936..025582d 100644 --- a/packages/org.gamecult.eve.unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs +++ b/packages/org.gamecult.eve.unity-scene/Tests/Editor/EveUnitySceneSurfaceLowererTests.cs @@ -948,11 +948,15 @@ namespace GameCult.Eve.UnityScene.Tests var largeVisual = GameObject.CreatePrimitive(PrimitiveType.Cube); largeVisual.transform.SetParent(player.transform, false); largeVisual.transform.localScale = Vector3.one * 100f; + largeVisual.layer = 14; Assert.That(rig.ApplyRig(0f), Is.True); Assert.That(camera.cullingMask & (1 << 14), Is.Zero); Assert.That(cameraObject.transform.position.y, Is.GreaterThan(0f)); - Assert.That(Vector3.Distance(cameraObject.transform.position, largeVisual.transform.position), Is.GreaterThan(100f)); + Assert.That( + Vector3.Distance(cameraObject.transform.position, player.transform.position), + Is.LessThan(50f), + "An excluded map glyph changed pilot-camera framing."); } finally { diff --git a/packages/org.gamecult.eve.unity-scene/package.json b/packages/org.gamecult.eve.unity-scene/package.json index 02b50f3..f460a19 100644 --- a/packages/org.gamecult.eve.unity-scene/package.json +++ b/packages/org.gamecult.eve.unity-scene/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.eve.unity-scene", "displayName": "Eve Unity Scene Lowering", - "version": "0.3.0", + "version": "0.3.1", "unity": "2021.3", "description": "Provider-agnostic Unity scene shell for gamecult.eve.surface.v1 interactive world surfaces.", "dependencies": {