< Summary

Class:ECSSystems.CameraSystem.ECSCameraEntitySystem
Assembly:ECS7Plugin.Systems.Camera
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/CameraSystem/ECSCameraEntitySystem.cs
Covered lines:37
Uncovered lines:1
Coverable lines:38
Total lines:99
Line coverage:97.3% (37 of 38)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSCameraEntitySystem(...)0%110100%
Dispose()0%110100%
Update()0%77095.83%
LoadedScenesOnOnAdded(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/CameraSystem/ECSCameraEntitySystem.cs

#LineLine coverage
 1using DCL.CameraTool;
 2using DCL.Controllers;
 3using DCL.ECS7;
 4using DCL.ECSComponents;
 5using DCL.ECSRuntime;
 6using DCL.Helpers;
 7using DCL.Models;
 8using ECSSystems.Helpers;
 9using System;
 10using System.Collections.Generic;
 11using UnityEngine;
 12
 13namespace ECSSystems.CameraSystem
 14{
 15    public class ECSCameraEntitySystem : IDisposable
 16    {
 17        private readonly PBCameraMode reusableCameraMode;
 18        private readonly PBPointerLock reusablePointerLock;
 19        private readonly BaseVariable<Transform> cameraTransform;
 20        private readonly Vector3Variable worldOffset;
 21        private readonly BaseList<IParcelScene> loadedScenes;
 22        private readonly IECSComponentWriter componentsWriter;
 23        private readonly BaseVariableAsset<CameraMode.ModeId> cameraMode;
 24
 625        private Vector3 lastCameraPosition = Vector3.zero;
 626        private Quaternion lastCameraRotation = Quaternion.identity;
 27        private bool newSceneAdded = false;
 28
 629        public ECSCameraEntitySystem(IECSComponentWriter componentsWriter, PBCameraMode reusableCameraMode, PBPointerLoc
 30            BaseList<IParcelScene> loadedScenes, BaseVariable<Transform> cameraTransform, Vector3Variable worldOffset,
 31            BaseVariableAsset<CameraMode.ModeId> cameraMode)
 32        {
 633            this.cameraTransform = cameraTransform;
 634            this.worldOffset = worldOffset;
 635            this.loadedScenes = loadedScenes;
 636            this.componentsWriter = componentsWriter;
 637            this.cameraMode = cameraMode;
 638            this.reusableCameraMode = reusableCameraMode;
 639            this.reusablePointerLock = reusablePointerLock;
 40
 641            loadedScenes.OnAdded += LoadedScenesOnOnAdded;
 642        }
 43
 44        public void Dispose()
 45        {
 646            loadedScenes.OnAdded -= LoadedScenesOnOnAdded;
 647        }
 48
 49        public void Update()
 50        {
 2151            var currentCameraTransform = cameraTransform.Get();
 52
 2153            if (currentCameraTransform == null)
 054                return;
 55
 2156            Vector3 cameraPosition = currentCameraTransform.position;
 2157            Quaternion cameraRotation = currentCameraTransform.rotation;
 58
 2159            bool updateTransform = newSceneAdded || (lastCameraPosition != cameraPosition || lastCameraRotation != camer
 2160            newSceneAdded = false;
 61
 2162            lastCameraPosition = cameraPosition;
 2163            lastCameraRotation = cameraRotation;
 64
 2165            var currentCameraMode = cameraMode.Get();
 2166            reusableCameraMode.Mode = ProtoConvertUtils.UnityEnumToPBCameraEnum(currentCameraMode);
 2167            reusablePointerLock.IsPointerLocked = Utils.IsCursorLocked;
 68
 2169            Vector3 currentWorldOffset = worldOffset.Get();
 2170            IReadOnlyList<IParcelScene> loadedScenes = this.loadedScenes;
 71
 72            IParcelScene scene;
 73
 7674            for (int i = 0; i < loadedScenes.Count; i++)
 75            {
 1776                scene = loadedScenes[i];
 77
 1778                componentsWriter.PutComponent(scene.sceneData.sceneNumber, SpecialEntityId.CAMERA_ENTITY, ComponentID.CA
 79                    reusableCameraMode, ECSComponentWriteType.SEND_TO_SCENE);
 80
 1781                componentsWriter.PutComponent(scene.sceneData.sceneNumber, SpecialEntityId.CAMERA_ENTITY, ComponentID.PO
 82                    reusablePointerLock, ECSComponentWriteType.SEND_TO_SCENE);
 83
 1784                if (!updateTransform)
 85                    continue;
 86
 787                var transform = TransformHelper.SetTransform(scene, ref cameraPosition, ref cameraRotation, ref currentW
 88
 789                componentsWriter.PutComponent(scene.sceneData.sceneNumber, SpecialEntityId.CAMERA_ENTITY, ComponentID.TR
 90                    transform);
 91            }
 2192        }
 93
 94        private void LoadedScenesOnOnAdded(IParcelScene obj)
 95        {
 296            newSceneAdded = true;
 297        }
 98    }
 99}