< Summary

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

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ScreencaptureCameraMovement()0%2100%
Initialize(...)0%2100%
Awake()0%2100%
Update()0%6200%
OnEnable()0%2100%
OnDisable()0%2100%
UpdateDataStore()0%2100%
ResetVirtualCameraToPlayerCamera()0%2100%

File(s)

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

#LineLine coverage
 1using Cinemachine;
 2using DCL;
 3using UnityEngine;
 4
 5namespace DCLFeatures.ScreencaptureCamera.CameraObject
 6{
 7    public class ScreencaptureCameraMovement : MonoBehaviour
 8    {
 9        private const float MAX_DISTANCE_FROM_PLAYER = 16f;
 10
 11        [Header("TRANSLATION")]
 012        [SerializeField] private float translationSpeed = 5f;
 13        private TranslationInputSchema translationInputSchema;
 14
 15        [Header("ROTATION")]
 016        [SerializeField] private float rotationSpeed = 100f;
 017        [SerializeField] private float maxRotationPerFrame = 1.5f;
 018        [SerializeField] private float rotationDamping = 7;
 19        private RotationInputSchema rotationInputSchema;
 20
 21        private ScreencaptureCameraTranslation translation;
 22        private ScreencaptureCameraRotation rotation;
 23        private CharacterController target;
 24
 25        private bool isInitialized;
 26        private CinemachineVirtualCamera virtualCamera;
 27        private CinemachineBrain cinemachineBrain;
 28        private Transform characterCamera;
 29
 030        private Vector3Variable cameraForward => CommonScriptableObjects.cameraForward;
 031        private Vector3Variable cameraRight => CommonScriptableObjects.cameraRight;
 032        private Vector3Variable cameraPosition => CommonScriptableObjects.cameraPosition;
 033        private BaseVariable<Quaternion> cameraRotation => DataStore.i.camera.rotation;
 34
 35        public void Initialize(CharacterController cameraTarget, CinemachineVirtualCamera virtualCamera, Transform chara
 36        {
 037            target = cameraTarget;
 038            this.virtualCamera = virtualCamera;
 039            characterCamera = characterCameraTransform;
 40
 041            isInitialized = true;
 042        }
 43
 44        private void Awake()
 45        {
 046            cinemachineBrain = GetComponent<CinemachineBrain>();
 47
 048            rotationInputSchema = new RotationInputSchema(
 49                Resources.Load<InputAction_Measurable>("ScreenshotCameraXRotationAxis"),
 50                Resources.Load<InputAction_Measurable>("ScreenshotCameraYRotationAxis"),
 51                Resources.Load<InputAction_Hold>("MouseFirstClickDown")
 52            );
 53
 054            translationInputSchema = new TranslationInputSchema(
 55                Resources.Load<InputAction_Measurable>("ScreenshotCameraXTranslationAxis"),
 56                Resources.Load<InputAction_Measurable>("ScreenshotCameraYTranslationAxis"),
 57                Resources.Load<InputAction_Hold>("ScreenshotCameraUp"),
 58                Resources.Load<InputAction_Hold>("ScreenshotCameraDown")
 59            );
 60
 061            rotation = new ScreencaptureCameraRotation(rotationInputSchema);
 062            translation = new ScreencaptureCameraTranslation(translationInputSchema);
 063        }
 64
 65        private void Update()
 66        {
 067            if (!isInitialized) return;
 68
 069            rotation.Rotate(target.transform, Time.deltaTime, rotationSpeed, rotationDamping, maxRotationPerFrame);
 070            translation.Translate(target, translationSpeed, MAX_DISTANCE_FROM_PLAYER, Time.deltaTime);
 71
 072            UpdateDataStore();
 073        }
 74
 75        private void OnEnable()
 76        {
 077            target.enabled = true;
 078            rotation.Activate();
 079            ResetVirtualCameraToPlayerCamera();
 080        }
 81
 82        private void OnDisable()
 83        {
 084            rotation.Deactivate();
 085            target.enabled = false;
 086        }
 87
 88        private void UpdateDataStore()
 89        {
 090            cameraForward.Set(transform.forward);
 091            cameraRight.Set(transform.right);
 092            cameraRotation.Set(transform.rotation);
 093            cameraPosition.Set(transform.position);
 094        }
 95
 96        private void ResetVirtualCameraToPlayerCamera()
 97        {
 098            CinemachineHardLockToTarget body = virtualCamera.GetCinemachineComponent<CinemachineHardLockToTarget>();
 099            CinemachineSameAsFollowTarget composer = virtualCamera.GetCinemachineComponent<CinemachineSameAsFollowTarget
 100
 0101            body.m_Damping = 0;
 0102            composer.m_Damping = 0;
 103
 0104            target.enabled = false;
 0105            target.transform.SetPositionAndRotation(characterCamera.position, characterCamera.rotation);
 0106            target.enabled = true;
 107
 0108            cinemachineBrain.ManualUpdate();
 0109            body.m_Damping = 1;
 0110            composer.m_Damping = 1;
 0111        }
 112    }
 113}