| | 1 | | using System; |
| | 2 | | using UnityEngine; |
| | 3 | | using UnityEngine.Assertions; |
| | 4 | |
|
| | 5 | | /// <summary> |
| | 6 | | /// This helper will prepare the canvas to work in screen space or camera space if the proper DataStore is set |
| | 7 | | /// </summary> |
| | 8 | | public class HUDCanvasCameraModeController : IDisposable |
| | 9 | | { |
| | 10 | | internal readonly Canvas canvas; |
| | 11 | | internal readonly BaseVariable<Camera> hudCameraVariable; |
| | 12 | |
|
| 214 | 13 | | public HUDCanvasCameraModeController(Canvas canvas, BaseVariable<Camera> hudCameraVariable) |
| | 14 | | { |
| 214 | 15 | | Assert.IsNotNull(canvas); |
| 214 | 16 | | Assert.IsNotNull(hudCameraVariable); |
| | 17 | |
|
| 214 | 18 | | this.canvas = canvas; |
| 214 | 19 | | this.hudCameraVariable = hudCameraVariable; |
| 214 | 20 | | this.hudCameraVariable.OnChange += UpdateCanvas; |
| 214 | 21 | | UpdateCanvas(this.hudCameraVariable.Get(), null); |
| 214 | 22 | | } |
| | 23 | |
|
| | 24 | | internal void UpdateCanvas(Camera newCamera, Camera oldCamera) |
| | 25 | | { |
| 216 | 26 | | canvas.renderMode = newCamera == null ? RenderMode.ScreenSpaceOverlay : RenderMode.ScreenSpaceCamera; |
| 216 | 27 | | canvas.worldCamera = newCamera; |
| 216 | 28 | | } |
| | 29 | |
|
| 372 | 30 | | public void Dispose() { hudCameraVariable.OnChange -= UpdateCanvas; } |
| | 31 | | } |