public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant)
 {
     if (instant)
     {
         currentPivotDistance = distance;
     }
 }
    public override void UpdateCamera(ref LogicCameraInfo cameraInfo)
    {
        Vector3 hitPosition;
        bool    collidedBack = CollisionFromHeadToPosition(cameraInfo.targetPosition, cameraInfo.CameraPosition(), out hitPosition);
        float   targetPivotDistance;

        if (collidedBack)
        {
            targetPivotDistance = (hitPosition - cameraInfo.targetPosition).magnitude;
        }
        else
        {
            targetPivotDistance = cameraInfo.pivotDistance;
        }

        targetPivotDistance = Mathf.Clamp(targetPivotDistance, minDistance, float.MaxValue);

        if (cameraInfo.cameraSwitched)
        {
            currentPivotDistance     = targetPivotDistance;
            cameraInfo.pivotDistance = currentPivotDistance;
        }
        else
        {
            float lerpSpeed = targetPivotDistance > currentPivotDistance ? moveOutLerpSpeed : moveInLerpSpeed;

            currentPivotDistance     = Mathf.Lerp(currentPivotDistance, targetPivotDistance, Time.deltaTime * lerpSpeed);
            cameraInfo.pivotDistance = currentPivotDistance;
        }
    }
    public override void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot)
    {
        Vector3 eulerAngles = new Vector3(targetPivot.x, targetPivot.y, 0);

        eulerAngles.x = ClampAngle(eulerAngles.x, minimumVerticalAngle, maximumVerticalAngle);
        cameraInfo.pivotRotation.eulerAngles = eulerAngles;
    }
 public override void UpdateCamera(ref LogicCameraInfo cameraInfo)
 {
     foreach (var logicCamera in cameras)
     {
         logicCamera.UpdateCamera(ref cameraInfo);
     }
 }
Exemple #5
0
 public override void UpdateCamera(ref LogicCameraInfo cameraInfo)
 {
     cameraInfo.useSourcePosition = true;
     cameraInfo.sourcePosition    = transform.position;
     cameraInfo.useTargetPosition = true;
     cameraInfo.targetPosition    = cameraInfo.sourcePosition + transform.rotation * new Vector3(0, 0, 1);
 }
 public override void OnCameraSwitch(LogicCameraInfo cameraInfo)
 {
     foreach (var logicCamera in cameras)
     {
         logicCamera.OnCameraSwitch(cameraInfo);
     }
 }
 public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant)
 {
     cameraInfo.pivotDistance = distance;
     if (instant)
     {
         cameraDistance = distance;
     }
     targetCameraDistance = distance;
 }
 public override void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot)
 {
     foreach (var logicCamera in cameras)
     {
         if (logicCamera is PivotCamera)
         {
             logicCamera.SetCameraPivot(ref cameraInfo, targetPivot);
         }
     }
 }
 public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant)
 {
     foreach (var logicCamera in cameras)
     {
         if (logicCamera)
         {
             logicCamera.SetCameraPivotDistance(ref cameraInfo, distance, instant);
         }
     }
 }
    public override void UpdateCamera(ref LogicCameraInfo cameraInfo)
    {
        DebugUtilities.Assert(logicCamera != null, "LogicCamera can not be null for player camera");
        if (Time.deltaTime < 0.000001)
        {
            return;
        }

        logicCamera.UpdateCamera(ref cameraInfo);

/*
 *              var headOffset = new Vector3();
 *              const float headRadius = 2.0f;
 *              const float headHeight = 0.8f;
 *              if (cameraInfo.pivotDistance < headRadius)
 *              {
 *                      headOffset.y = ((headRadius - cameraInfo.pivotDistance) / headRadius) * headHeight;
 *              }
 *
 */
    }
Exemple #11
0
    public override void UpdateCamera(ref LogicCameraInfo info)
    {
//		info.targetVelocity.y = 0;
//		var cameraRelativeVelocity = Quaternion.Inverse(info.PivotRotation()) * info.targetVelocity;

//		if (info.cameraSwitched)
//		{
//			Debug.Log("Camera SWITCHED!");
//			distanceRubberBandStrength = 0;
//			pivotDistance = 0;
//		}

//		distanceRubberBandStrength += Mathf.Abs(cameraRelativeVelocity.z * Time.deltaTime * 0.05f);
//		distanceRubberBandStrength *= 0.98f;
//		distanceRubberBandStrength = Mathf.Clamp(distanceRubberBandStrength, 0.0f, 1.0f);
////		Debug.Log("RubberBand:" + distanceRubberBandStrength);
//		pivotDistance += (1.0f - distanceRubberBandStrength) * cameraRelativeVelocity.z * Time.deltaTime;
//		pivotDistance *= 0.98f;
//		info.pivotDistance += pivotDistance;


//		float timedDistance = info.pivotDistance * Time.deltaTime;
//		if (timedDistance < 0.0001f)
//		{
//			return;
//		}
//		offsetRubberBandStrength += Mathf.Abs(cameraRelativeVelocity.x / timedDistance);
//		offsetRubberBandStrength *= 0.98f;
//		offsetRubberBandStrength = Mathf.Clamp(offsetRubberBandStrength, 0.0f, 1.0f);
////		Debug.Log("RubberBandOffset:" + offsetRubberBandStrength);

//		pivotOffset -= (1.0f - offsetRubberBandStrength) * cameraRelativeVelocity.x * Time.deltaTime;
//		pivotOffset *= 0.98f;

//		info.pivotOffset += pivotOffset;

//		info.targetMovementFactor = Mathf.Min(Mathf.Min(offsetRubberBandStrength + distanceRubberBandStrength, 1.0f) * info.targetVelocity.magnitude * 0.6f, 1.0f);
////		Debug.Log("Movement:" + info.targetMovementFactor + " offset:" + offsetRubberBandStrength + " distance:" + distanceRubberBandStrength + " velocity:" + info.targetVelocity.magnitude);
    }
    //Linus variant för att ge en smidigare övergång från muskontroll till autorotation
    public override void UpdateCamera(ref LogicCameraInfo info)
    {
        //if (info.cameraSwitched)
        //{
        //	info.pivotRotationX = rotationX;
        //	info.pivotRotationY = info.targetRotation.eulerAngles.y;
        //	info.pivotRotationIsDefined = true;
        //}
        //rotationX = info.pivotRotationX;


        //if (info.pivotRotationIsDefined)
        //{
        //	currentRotationTimer = Time.time + rotateResetTime;
        //	return;
        //}
        //if (Time.time < currentRotationTimer)
        //{
        //	return;
        //}
        //float factor = Mathf.Max(info.targetMovementFactor - 0.5f, 0) * 2.0f;
        //info.pivotRotationY = Mathf.LerpAngle(info.pivotRotationY, info.targetRotation.eulerAngles.y, Time.deltaTime * rotateSpeedFactor * factor);
    }
 public override void OnCameraSwitch(LogicCameraInfo cameraInfo)
 {
     currentPivotDistance = cameraInfo.pivotDistance;
 }
    public override void UpdateCamera(ref LogicCameraInfo cameraInfo)
    {
        targetCameraDistance += -Input.GetAxis("camera_distance") * Time.deltaTime * distanceSpeed;
        targetCameraDistance  = Mathf.Clamp(targetCameraDistance, minimumDistance, maximumDistance);

        cameraDistance            = Mathf.Lerp(cameraDistance, targetCameraDistance, 0.2f);
        cameraInfo.pivotDistance += cameraDistance;

        Vector3 deltaPositon = Vector3.zero;
        bool    inputDown    = false;

        if (SystemInfo.deviceType == DeviceType.Handheld)
        {
            if (Input.touchCount <= 0)
            {
                currentFingerId = -1;
            }
            else
            {
                Touch touch = Input.touches[0];
                if (currentFingerId != touch.fingerId || touch.phase == TouchPhase.Began)
                {
                    inputDownPosition = touch.position;
                }

                currentFingerId = touch.fingerId;

                Vector3 currentPosition = touch.position;
                deltaPositon      = currentPosition - inputDownPosition;
                inputDownPosition = currentPosition;
                inputDown         = true;
            }
        }
        else
        {
            if (Input.GetButtonDown("mouse0"))
            {
                inputDownPosition = Input.mousePosition;
            }

            Vector3 currentPosition = Input.mousePosition;
            deltaPositon      = currentPosition - inputDownPosition;
            inputDownPosition = currentPosition;

            inputDown = Input.GetButton("mouse0");
        }

        if (inputDown)
        {
            float vertical   = -deltaPositon.y;
            float horizontal = deltaPositon.x;

            float addX = vertical * Time.deltaTime * verticalSpeed;
            float addY = horizontal * Time.deltaTime * horizontalSpeed;

            Vector3 eulerAngles = cameraInfo.pivotRotation.eulerAngles;
            eulerAngles.x += addX;
            eulerAngles.y += addY;
            eulerAngles.x  = ClampAngle(eulerAngles.x, minimumVerticalAngle, maximumVerticalAngle);

            cameraInfo.pivotRotation.eulerAngles = eulerAngles;
            cameraInfo.pivotRotationIsDefined    = true;
        }
    }
 public abstract void OnCameraSwitch(LogicCameraInfo cameraInfo);
Exemple #16
0
 public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant)
 {
 }
Exemple #17
0
 public override void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot)
 {
 }
Exemple #18
0
 public override void OnCameraSwitch(LogicCameraInfo cameraInfo)
 {
 }
 public abstract void UpdateCamera(ref LogicCameraInfo cameraInfo);
 public abstract void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot);
 public abstract void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant);