< Summary

Class:ECSSystems.CameraSystem.ECSCameraTransformSystem
Assembly:ECS7Plugin.Systems.Camera
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/CameraSystem/ECSCameraTransformSystem.cs
Covered lines:20
Uncovered lines:1
Coverable lines:21
Total lines:73
Line coverage:95.2% (20 of 21)
Covered branches:0
Total branches:0

Metrics

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

File(s)

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

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL;
 4using DCL.Controllers;
 5using DCL.ECS7;
 6using DCL.ECSRuntime;
 7using DCL.Models;
 8using ECSSystems.Helpers;
 9using UnityEngine;
 10
 11namespace ECSSystems.CameraSystem
 12{
 13    public static class ECSCameraTransformSystem
 14    {
 15        private class State
 16        {
 17            public BaseVariable<Transform> cameraTransform;
 18            public RendererState rendererState;
 19            public Vector3Variable worldOffset;
 20            public IReadOnlyList<IParcelScene> loadedScenes;
 21            public IECSComponentWriter componentsWriter;
 222            public UnityEngine.Vector3 lastCameraPosition = UnityEngine.Vector3.zero;
 223            public Quaternion lastCameraRotation = Quaternion.identity;
 24        }
 25
 26        public static Action CreateSystem(IECSComponentWriter componentsWriter)
 27        {
 228            var state = new State()
 29            {
 30                cameraTransform = DataStore.i.camera.transform,
 31                rendererState = CommonScriptableObjects.rendererState,
 32                worldOffset = CommonScriptableObjects.worldOffset,
 33                loadedScenes = DataStore.i.ecs7.scenes,
 34                componentsWriter = componentsWriter
 35            };
 636            return () => Update(state);
 37        }
 38
 39        private static void Update(State state)
 40        {
 441            if (!state.rendererState.Get())
 042                return;
 43
 444            Transform cameraT = state.cameraTransform.Get();
 45
 446            UnityEngine.Vector3 cameraPosition = cameraT.position;
 447            Quaternion cameraRotation = cameraT.rotation;
 48
 449            if (state.lastCameraPosition == cameraPosition && state.lastCameraRotation == cameraRotation)
 50            {
 151                return;
 52            }
 53
 354            state.lastCameraPosition = cameraPosition;
 355            state.lastCameraRotation = cameraRotation;
 56
 357            UnityEngine.Vector3 worldOffset = state.worldOffset.Get();
 58
 359            var loadedScenes = state.loadedScenes;
 360            var componentsWriter = state.componentsWriter;
 61
 62            IParcelScene scene;
 1263            for (int i = 0; i < loadedScenes.Count; i++)
 64            {
 365                scene = loadedScenes[i];
 66
 367                var transform = TransformHelper.SetTransform(scene, ref cameraPosition, ref cameraRotation, ref worldOff
 368                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.CAMERA_ENTITY, ComponentID.TRANSFORM,
 69                    transform);
 70            }
 371        }
 72    }
 73}