< 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:30
Uncovered lines:1
Coverable lines:31
Total lines:83
Line coverage:96.7% (30 of 31)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSPlayerTransformSystem(...)0%110100%
Dispose()0%110100%
Update()0%66095%
OnSceneLoaded(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/Systems/PlayerSystem/ECSPlayerTransformSystem.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.ECS7;
 3using DCL.ECSRuntime;
 4using DCL.Models;
 5using ECSSystems.Helpers;
 6using System;
 7using UnityEngine;
 8
 9namespace ECSSystems.PlayerSystem
 10{
 11    public class ECSPlayerTransformSystem : IDisposable
 12    {
 13        private readonly BaseList<IParcelScene> loadedScenes;
 14        private readonly BaseVariable<Transform> avatarTransform;
 15        private readonly Vector3Variable worldOffset;
 16        private readonly IECSComponentWriter componentsWriter;
 17
 418        private Vector3 lastAvatarPosition = Vector3.zero;
 419        private Quaternion lastAvatarRotation = Quaternion.identity;
 20        private long timeStamp = 0;
 21        private bool newSceneAdded = false;
 22
 423        public ECSPlayerTransformSystem(IECSComponentWriter componentsWriter,
 24            BaseList<IParcelScene> sdk7Scenes, BaseVariable<Transform> avatarTransform, Vector3Variable worldOffset)
 25        {
 426            loadedScenes = sdk7Scenes;
 427            this.avatarTransform = avatarTransform;
 428            this.worldOffset = worldOffset;
 429            this.componentsWriter = componentsWriter;
 30
 431            loadedScenes.OnAdded += OnSceneLoaded;
 432        }
 33
 34        public void Dispose()
 35        {
 436            loadedScenes.OnAdded -= OnSceneLoaded;
 437        }
 38
 39        public void Update()
 40        {
 1741            var currentAvatarTransform = avatarTransform.Get();
 42
 1743            if (currentAvatarTransform == null)
 044                return;
 45
 1746            Vector3 avatarPosition = currentAvatarTransform.position;
 1747            Quaternion avatarRotation = currentAvatarTransform.rotation;
 48
 1749            if (!newSceneAdded && lastAvatarPosition == avatarPosition && lastAvatarRotation == avatarRotation)
 50            {
 1251                return;
 52            }
 53
 554            newSceneAdded = false;
 55
 556            lastAvatarPosition = avatarPosition;
 557            lastAvatarRotation = avatarRotation;
 558            Vector3 currentWorldOffset = this.worldOffset.Get();
 59
 60            IParcelScene scene;
 61
 2062            for (int i = 0; i < loadedScenes.Count; i++)
 63            {
 564                scene = loadedScenes[i];
 65
 566                var transform = TransformHelper.SetTransform(scene, ref avatarPosition, ref avatarRotation, ref currentW
 67
 568                componentsWriter.PutComponent(scene.sceneData.sceneNumber, SpecialEntityId.PLAYER_ENTITY, ComponentID.TR
 69                    transform, timeStamp, ECSComponentWriteType.SEND_TO_SCENE);
 70
 571                componentsWriter.PutComponent(scene.sceneData.sceneNumber, SpecialEntityId.INTERNAL_PLAYER_ENTITY_REPRES
 72                    transform, ECSComponentWriteType.EXECUTE_LOCALLY);
 73            }
 74
 575            timeStamp++;
 576        }
 77
 78        private void OnSceneLoaded(IParcelScene obj)
 79        {
 280            newSceneAdded = true;
 281        }
 82    }
 83}