< 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:26
Uncovered lines:1
Coverable lines:27
Total lines:89
Line coverage:96.2% (26 of 27)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSCameraEntitySystem()0%110100%
State()0%110100%
CreateSystem(...)0%110100%
Update(...)0%55095.65%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using DCL.CameraTool;
 5using DCL.Controllers;
 6using DCL.ECS7;
 7using DCL.ECSComponents;
 8using DCL.ECSRuntime;
 9using DCL.Helpers;
 10using DCL.Models;
 11using ECSSystems.Helpers;
 12using UnityEngine;
 13
 14namespace ECSSystems.CameraSystem
 15{
 16    public static class ECSCameraEntitySystem
 17    {
 118        private static readonly PBCameraMode reusableCameraMode = new PBCameraMode();
 119        private static readonly PBPointerLock reusablePointerLock = new PBPointerLock();
 20
 21        private class State
 22        {
 23            public BaseVariable<Transform> cameraTransform;
 24            public RendererState rendererState;
 25            public Vector3Variable worldOffset;
 26            public IReadOnlyList<IParcelScene> loadedScenes;
 27            public IECSComponentWriter componentsWriter;
 28            public BaseVariableAsset<CameraMode.ModeId> cameraMode;
 529            public UnityEngine.Vector3 lastCameraPosition = UnityEngine.Vector3.zero;
 530            public Quaternion lastCameraRotation = Quaternion.identity;
 31        }
 32
 33        public static Action CreateSystem(IECSComponentWriter componentsWriter)
 34        {
 535            var state = new State()
 36            {
 37                cameraTransform = DataStore.i.camera.transform,
 38                rendererState = CommonScriptableObjects.rendererState,
 39                worldOffset = CommonScriptableObjects.worldOffset,
 40                loadedScenes = DataStore.i.ecs7.scenes,
 41                componentsWriter = componentsWriter,
 42                cameraMode = CommonScriptableObjects.cameraMode
 43            };
 1344            return () => Update(state);
 45        }
 46
 47        private static void Update(State state)
 48        {
 849            if (!state.rendererState.Get())
 050                return;
 51
 852            Transform cameraT = state.cameraTransform.Get();
 53
 854            UnityEngine.Vector3 cameraPosition = cameraT.position;
 855            Quaternion cameraRotation = cameraT.rotation;
 56
 857            bool updateTransform = (state.lastCameraPosition != cameraPosition || state.lastCameraRotation != cameraRota
 58
 859            state.lastCameraPosition = cameraPosition;
 860            state.lastCameraRotation = cameraRotation;
 61
 862            reusableCameraMode.Mode = ProtoConvertUtils.UnityEnumToPBCameraEnum(state.cameraMode.Get());
 863            reusablePointerLock.IsPointerLocked = Utils.IsCursorLocked;
 64
 865            UnityEngine.Vector3 worldOffset = state.worldOffset.Get();
 66
 867            var loadedScenes = state.loadedScenes;
 868            var componentsWriter = state.componentsWriter;
 69
 70            IParcelScene scene;
 3271            for (int i = 0; i < loadedScenes.Count; i++)
 72            {
 873                scene = loadedScenes[i];
 74
 875                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.CAMERA_ENTITY, ComponentID.CAMERA_MODE
 76                    reusableCameraMode, ECSComponentWriteType.SEND_TO_SCENE);
 877                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.CAMERA_ENTITY, ComponentID.POINTER_LOC
 78                    reusablePointerLock, ECSComponentWriteType.SEND_TO_SCENE);
 79
 880                if (!updateTransform)
 81                    continue;
 82
 583                var transform = TransformHelper.SetTransform(scene, ref cameraPosition, ref cameraRotation, ref worldOff
 584                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.CAMERA_ENTITY, ComponentID.TRANSFORM,
 85                    transform);
 86            }
 887        }
 88    }
 89}