Esempio n. 1
0
        void UpdateDistance()
        {
            if (visibleCollider == null || visibleOuterCollider == null)
            {
                return;
            }

            CalculateCameraViewColliders();

            if (debugStopZoom)
            {
                return;
            }

            float farthest_from_center = CalculateFarthestSignificanObjectFromCenter();

            float zoom_out_radius = visibleOuterCollider.radius;
            float zoom_in_radius  = visibleCollider.radius;

            //zoom out -- not allowed with only one object
            if (significantObjects.Count > 1 &&
                farthest_from_center > zoom_out_radius)
            {
                _zoom_in_delay_time = 0.0f;
                ZoomState           = CameraZoomState.Out;
                float adjust_distance = farthest_from_center - zoom_out_radius;
                ZoomCamera(adjust_distance);
            }
            //or zoom in -- not allowed with only one object
            //tighten up the view focus
            else if (significantObjects.Count > 1 &&
                     cameraMinZoomDistance < farthest_from_center &&
                     farthest_from_center < zoom_in_radius &&
                     _zoom_in_delay_time >= cameraZoomInDelay)
            {
                ZoomState = CameraZoomState.In;
                float adjust_distance = farthest_from_center - zoom_in_radius;
                ZoomCamera(adjust_distance);
            }
            //or zoom to default
            //tighten up the view focus
            else if (significantObjects.Count == 1 &&
                     Mathf.Abs(defaultViewDistance - currentViewDistance) > .001f &&
                     _zoom_in_delay_time >= cameraZoomInDelay)
            {
                ZoomState = CameraZoomState.In;
                float adjust_distance = defaultViewDistance - currentViewDistance;
                ZoomCamera(adjust_distance);
            }
            //no change
            else
            {
                if (_zoom_in_delay_time < cameraZoomInDelay)
                {
                    _zoom_in_delay_time += Time.deltaTime;
                }
                ZoomState = CameraZoomState.Stable;
            }
        }
Esempio n. 2
0
 void ZoomingOut()
 {
     if (cam.fieldOfView < initialFov)
     {
         cam.fieldOfView += ZoomSpeed;
     }
     else
     {
         state = CameraZoomState.Static;
     }
 }
Esempio n. 3
0
 void ZoomingIn()
 {
     if (cam.fieldOfView > zoomTarget)
     {
         cam.fieldOfView -= ZoomSpeed;
     }
     else
     {
         state = CameraZoomState.Static;
     }
 }
Esempio n. 4
0
 public void ZoomOut()
 {
     state = CameraZoomState.ZoomOut;
 }
Esempio n. 5
0
 public void ZoomIn(float fovModifier)
 {
     zoomTarget = initialFov - fovModifier;
     state      = CameraZoomState.ZoomIn;
 }