private void Start()
        {
            controlledRoot.transform.parent        = transform;
            controlledRoot.transform.localPosition = Vector3.zero;

            var goalPosition = Vector3.zero;
            var goalSize     = minSize;

            Observable.EveryUpdate()
            .TakeUntilDestroy(this)
            .Where(_ => cameraState.pointsOfInterest.Count > 0)
            .Select(_ => cameraState.pointsOfInterest
                    .Where(pt => pt != null)
                    .Select(pt => (Vector2)pt.position))
            .Select(pts => ProjectUtils.CreateRectFromContainingPoints(pts))
            .Select(rect => rect.CreateEncapsulatingRect(controlledCamera.aspect))
            .Subscribe(rect => {
                Vector3 position = rect.center;
                position.z       = -10;
                goalPosition     = position;
                goalSize         = Mathf.Max(minSize, rect.width / 2f);
            });

            Observable.EveryUpdate()
            .TakeUntilDestroy(this)
            .Subscribe(_ =>
            {
                controlledRoot.position           = Vector3.Lerp(controlledRoot.position, goalPosition, 2 * Time.deltaTime);
                controlledCamera.orthographicSize = Mathf.Lerp(controlledCamera.orthographicSize, goalSize, 3 * Time.deltaTime);
            });
        }
        private void OnDrawGizmos()
        {
            if (cameraState.pointsOfInterest.Count == 0)
            {
                return;
            }
            var pts = cameraState.pointsOfInterest
                      .Where(pt => pt != null)
                      .Select(pt => (Vector2)pt.position);
            var rect  = ProjectUtils.CreateRectFromContainingPoints(pts);
            var aRect = rect.CreateEncapsulatingRect(controlledCamera.aspect);

            Gizmos.color = Color.red;
            Gizmos.DrawWireCube(rect.center, rect.size);
            Gizmos.color = Color.green;
            Gizmos.DrawWireCube(aRect.center, aRect.size);
            Gizmos.color = Color.white;
        }