< 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:22
Uncovered lines:1
Coverable lines:23
Total lines:78
Line coverage:95.6% (22 of 23)
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%55095.24%

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            public long timeStamp = 0;
 25        }
 26
 27        public static Action CreateSystem(IECSComponentWriter componentsWriter)
 28        {
 229            var state = new State()
 30            {
 31                avatarTransform = DataStore.i.world.avatarTransform,
 32                rendererState = CommonScriptableObjects.rendererState,
 33                worldOffset = CommonScriptableObjects.worldOffset,
 34                loadedScenes = DataStore.i.ecs7.scenes,
 35                componentsWriter = componentsWriter
 36            };
 637            return () => Update(state);
 38        }
 39
 40        private static void Update(State state)
 41        {
 442            if (!state.rendererState.Get())
 043                return;
 44
 445            Transform avatarT = state.avatarTransform.Get();
 46
 447            UnityEngine.Vector3 avatarPosition = avatarT.position;
 448            Quaternion avatarRotation = avatarT.rotation;
 49
 450            if (state.lastAvatarPosition == avatarPosition && state.lastAvatarRotation == avatarRotation)
 51            {
 152                return;
 53            }
 54
 355            state.lastAvatarPosition = avatarPosition;
 356            state.lastAvatarRotation = avatarRotation;
 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 avatarPosition, ref avatarRotation, ref worldOff
 68
 369                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.PLAYER_ENTITY, ComponentID.TRANSFORM,
 70                    transform, state.timeStamp, ECSComponentWriteType.SEND_TO_SCENE);
 71
 372                componentsWriter.PutComponent(scene.sceneData.id, SpecialEntityId.INTERNAL_PLAYER_ENTITY_REPRESENTATION,
 73                    transform, ECSComponentWriteType.EXECUTE_LOCALLY);
 74            }
 375            state.timeStamp++;
 376        }
 77    }
 78}