< Summary

Class:ECSSystems.PlayerSystem.ECSPlayerTransformSystem
Assembly:ECS7Plugin.Systems.Player
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/PlayerSystem/ECSPlayerTransformSystem.cs
Covered lines:20
Uncovered lines:1
Coverable lines:21
Total lines:72
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/PlayerSystem/ECSPlayerTransformSystem.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.PlayerSystem
 12{
 13    public static class ECSPlayerTransformSystem
 14    {
 15        private class State
 16        {
 17            public BaseVariable<Transform> avatarTransform;
 18            public RendererState rendererState;
 19            public Vector3Variable worldOffset;
 20            public IReadOnlyList<IParcelScene> loadedScenes;
 21            public IECSComponentWriter componentsWriter;
 222            public UnityEngine.Vector3 lastAvatarPosition = UnityEngine.Vector3.zero;
 223            public Quaternion lastAvatarRotation = Quaternion.identity;
 24        }
 25
 26        public static Action CreateSystem(IECSComponentWriter componentsWriter)
 27        {
 228            var state = new State()
 29            {
 30                avatarTransform = DataStore.i.world.avatarTransform,
 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 avatarT = state.avatarTransform.Get();
 45
 446            UnityEngine.Vector3 avatarPosition = avatarT.position;
 447            Quaternion avatarRotation = avatarT.rotation;
 48
 449            if (state.lastAvatarPosition == avatarPosition && state.lastAvatarRotation == avatarRotation)
 50            {
 151                return;
 52            }
 53
 354            state.lastAvatarPosition = avatarPosition;
 355            state.lastAvatarRotation = avatarRotation;
 356            UnityEngine.Vector3 worldOffset = state.worldOffset.Get();
 57
 358            var loadedScenes = state.loadedScenes;
 359            var componentsWriter = state.componentsWriter;
 60
 61            IParcelScene scene;
 1262            for (int i = 0; i < loadedScenes.Count; i++)
 63            {
 364                scene = loadedScenes[i];
 65
 366                var transform = TransformHelper.SetTransform(scene, ref avatarPosition, ref avatarRotation, ref worldOff
 367                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.PLAYER_ENTITY, ComponentID.TRANSFORM,
 68                    transform);
 69            }
 370        }
 71    }
 72}