private void Start() { _camera = GetComponent <Camera>(); LevelCameraData data = FindObjectOfType <LevelCameraData>(); Debug.Log(data.gameObject.name); _levelBounds = data.Bounds; float maxXHieght = (_levelBounds.width * 0.5f) / Mathf.Tan(_horizontalFOVInRads * 0.5f); float maxYHieght = (_levelBounds.height * 0.5f) / Mathf.Tan(_verticalFOVInRads * 0.5f); _maxZoomDistance = maxYHieght > maxXHieght ? maxXHieght : maxYHieght; }
void OnSceneGUI(SceneView scene) { if (Selection.gameObjects.Length <= 0) { return; } GameObject gameObject = Selection.gameObjects.FirstOrDefault(gObj => gObj.GetComponent <LevelCameraData>()); if (gameObject == null) { if (_cameraData != null) { _cameraData = null; OnDeselection(); } return; } if (_cameraData == null) { _cameraData = gameObject.GetComponent <LevelCameraData>(); OnSelection(); } // Debug.Log($"Width: {_cameraData.Bounds.width}" ); Handles.DrawSolidRectangleWithOutline( new Rect(_cameraData.Bounds.position - _cameraData.Bounds.size * 0.5f, _cameraData.Bounds.size), _fillColor, _outlineColor); foreach (Vector3 pos in positions) { float scale = HandleUtility.GetHandleSize(pos) * 0.25f; Handles.color = _handleColor; Handles.CubeHandleCap(0, pos, Quaternion.identity, scale, EventType.Repaint); Handles.color = Color.white; } if (_active) { Selection.activeGameObject = gameObject; } }