< Summary

Class:DCLFeatures.ScreencaptureCamera.CameraObject.ScreencaptureCameraTranslation
Assembly:ScreencaptureCamera
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/ScreencaptureCamera/CameraObject/Scripts/ScreencaptureCameraTranslation.cs
Covered lines:0
Uncovered lines:22
Coverable lines:22
Total lines:57
Line coverage:0% (0 of 22)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:4
Method coverage:0% (0 of 4)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ScreencaptureCameraTranslation(...)0%2100%
Translate(...)0%2100%
GetMoveVectorFromInput(...)0%30500%
RestrictedMovementBySemiSphere(...)0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLServices/ScreencaptureCamera/CameraObject/Scripts/ScreencaptureCameraTranslation.cs

#LineLine coverage
 1using DCL;
 2using UnityEngine;
 3
 4namespace DCLFeatures.ScreencaptureCamera.CameraObject
 5{
 6    public class ScreencaptureCameraTranslation
 7    {
 8        private readonly TranslationInputSchema input;
 9
 010        private Vector3 moveVector = Vector3.zero;
 11
 012        public ScreencaptureCameraTranslation(TranslationInputSchema input)
 13        {
 014            this.input = input;
 015        }
 16
 17        public void Translate(CharacterController target, float moveSpeed, float maxDistanceFromPlayer, float deltaTime)
 18        {
 019            moveVector = GetMoveVectorFromInput(target.transform, moveSpeed, deltaTime);
 020            target.Move(RestrictedMovementBySemiSphere(target.transform, moveVector, maxDistanceFromPlayer));
 021        }
 22
 23        private Vector3 GetMoveVectorFromInput(Transform target, float moveSpeed, float deltaTime)
 24        {
 025            Vector3 forward = target.forward.normalized * input.YAxis.GetValue();
 026            Vector3 horizontal = target.right.normalized * input.XAxis.GetValue();
 27
 028            float verticalDirection = input.UpAction.isOn ? 1 :
 29                input.DownAction.isOn ? -1 : 0f;
 30
 031            Vector3 vertical = target.up.normalized * verticalDirection;
 32
 033            return (forward + horizontal + vertical) * (moveSpeed * deltaTime);
 34        }
 35
 36        private static Vector3 RestrictedMovementBySemiSphere(Transform target, Vector3 movementVector, float maxDistanc
 37        {
 038            if (target.position.y + movementVector.y <= 0f)
 039                movementVector.y = 0f;
 40
 041            Vector3 playerPosition = DataStore.i.player.playerUnityPosition.Get();
 042            Vector3 desiredCameraPosition = target.position + movementVector;
 43
 044            float distanceFromPlayer = Vector3.Distance(desiredCameraPosition, playerPosition);
 45
 46            // If the distance is greater than the allowed radius, correct the movement vector
 047            if (distanceFromPlayer > maxDistanceFromPlayer)
 48            {
 049                Vector3 directionFromPlayer = (desiredCameraPosition - playerPosition).normalized;
 050                desiredCameraPosition = playerPosition + (directionFromPlayer * maxDistanceFromPlayer);
 051                movementVector = desiredCameraPosition - target.position;
 52            }
 53
 054            return movementVector;
 55        }
 56    }
 57}