< Summary

Class:MainScripts.DCL.Components.SDK6DataMapExtensions
Assembly:SDK6DataMappingExtensions
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Extensions/SDK6DataMapExtensions.cs
Covered lines:0
Uncovered lines:46
Coverable lines:46
Total lines:140
Line coverage:0% (0 of 46)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:9
Method coverage:0% (0 of 9)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AsUnityColor(...)0%12300%
AsUnityColor(...)0%2100%
AsUnityVector3(...)0%2100%
AsUnityQuaternion(...)0%2100%
FromProtobuf(...)0%30500%
SceneMessageFromSdk6Message(...)0%2100%
ExtractPayload(...)0%2721600%
CreateRaycastPayload(...)0%30500%
MapMessagingMethodType(...)0%2721600%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Extensions/SDK6DataMapExtensions.cs

#LineLine coverage
 1using DCL;
 2using DCL.Components;
 3using DCL.Models;
 4using Decentraland.Common;
 5using Decentraland.Sdk.Ecs6;
 6using System;
 7using System.Runtime.CompilerServices;
 8using UnityEngine;
 9using Quaternion = UnityEngine.Quaternion;
 10using Ray = DCL.Models.Ray;
 11using Vector3 = UnityEngine.Vector3;
 12
 13namespace MainScripts.DCL.Components
 14{
 15    public static class SDK6DataMapExtensions
 16    {
 17        public static Color AsUnityColor(this ECS6Color4 color4) =>
 018            new (color4.R, color4.G, color4.B, color4.HasA ? color4.A : 1f);
 19
 20        public static Color AsUnityColor(this Color3 color3) =>
 021            new (color3.R, color3.G, color3.B);
 22
 23        public static Vector3 AsUnityVector3(this Decentraland.Common.Vector3 vector3) =>
 024            new (vector3.X, vector3.Y, vector3.Z);
 25
 26        public static Quaternion AsUnityQuaternion(this Decentraland.Common.Quaternion quaternion) =>
 027            new (quaternion.X, quaternion.Y, quaternion.Z, quaternion.W);
 28
 29        public static UIValue FromProtobuf(UIValue defaultValue, UiValue uiValue) =>
 030            new ()
 31            {
 32                value = uiValue.HasValue ? uiValue.Value : defaultValue.value,
 33                type = uiValue.HasType ? (UIValue.Unit)uiValue.Type : defaultValue.type,
 34            };
 35
 36        public static QueuedSceneMessage_Scene SceneMessageFromSdk6Message(EntityAction action, int sceneNumber) =>
 037            new ()
 38            {
 39                type = QueuedSceneMessage.Type.SCENE_MESSAGE,
 40                method = MapMessagingMethodType(action),
 41                sceneNumber = sceneNumber,
 42                payload = ExtractPayload(from: action, sceneNumber),
 43                tag = action.Tag,
 44            };
 45
 46        private static object ExtractPayload(EntityAction from, int sceneNumber)
 47        {
 048            return from.Payload.PayloadCase switch
 49                   {
 050                       EntityActionPayload.PayloadOneofCase.InitMessagesFinished => new Protocol.SceneReady(),
 051                       EntityActionPayload.PayloadOneofCase.OpenExternalUrl => new Protocol.OpenExternalUrl { url = from
 052                       EntityActionPayload.PayloadOneofCase.OpenNftDialog => new Protocol.OpenNftDialog
 53                       {
 54                           contactAddress = from.Payload.OpenNftDialog.AssetContractAddress,
 55                           comment = from.Payload.OpenNftDialog.Comment,
 56                           tokenId = from.Payload.OpenNftDialog.TokenId,
 57                       },
 058                       EntityActionPayload.PayloadOneofCase.CreateEntity => new Protocol.CreateEntity { entityId = from.
 059                       EntityActionPayload.PayloadOneofCase.RemoveEntity => new Protocol.RemoveEntity { entityId = from.
 060                       EntityActionPayload.PayloadOneofCase.AttachEntityComponent => new Protocol.SharedComponentAttach
 61                       {
 62                           entityId = from.Payload.AttachEntityComponent.EntityId,
 63                           id = from.Payload.AttachEntityComponent.Id,
 64                           name = from.Payload.AttachEntityComponent.Name,
 65                       },
 066                       EntityActionPayload.PayloadOneofCase.ComponentRemoved => new Protocol.EntityComponentDestroy
 67                       {
 68                           entityId = from.Payload.ComponentRemoved.EntityId,
 69                           name = from.Payload.ComponentRemoved.Name,
 70                       },
 071                       EntityActionPayload.PayloadOneofCase.SetEntityParent => new Protocol.SetEntityParent
 72                       {
 73                           entityId = from.Payload.SetEntityParent.EntityId,
 74                           parentId = from.Payload.SetEntityParent.ParentId,
 75                       },
 076                       EntityActionPayload.PayloadOneofCase.Query => new QueryMessage { payload = CreateRaycastPayload(f
 077                       EntityActionPayload.PayloadOneofCase.ComponentCreated => new Protocol.SharedComponentCreate
 78                       {
 79                           id = from.Payload.ComponentCreated.Id,
 80                           classId = from.Payload.ComponentCreated.ClassId,
 81                           name = from.Payload.ComponentCreated.Name,
 82                       },
 083                       EntityActionPayload.PayloadOneofCase.ComponentDisposed => new Protocol.SharedComponentDispose { i
 84
 085                       EntityActionPayload.PayloadOneofCase.ComponentUpdated => from.Payload.ComponentUpdated,
 086                       EntityActionPayload.PayloadOneofCase.UpdateEntityComponent => from.Payload.UpdateEntityComponent,
 87
 088                       EntityActionPayload.PayloadOneofCase.None => null,
 089                       _ => throw new SwitchExpressionException($"Unknown payload type for sdk6 protobuf message {from.P
 90                   };
 91        }
 92
 93        private static RaycastQuery CreateRaycastPayload(EntityAction action, int sceneNumber)
 94        {
 095            RaycastType raycastType = action.Payload.Query.Payload.QueryType switch
 96                                      {
 097                                          "HitFirst" => RaycastType.HIT_FIRST,
 098                                          "HitAll" => RaycastType.HIT_ALL,
 099                                          "HitFirstAvatar" => RaycastType.HIT_FIRST_AVATAR,
 0100                                          "HitAllAvatars" => RaycastType.HIT_ALL_AVATARS,
 0101                                          _ => RaycastType.NONE,
 102                                      };
 103
 0104            var ray = new Ray
 105            {
 106                origin = action.Payload.Query.Payload.Ray.Origin.AsUnityVector3(),
 107                direction = action.Payload.Query.Payload.Ray.Direction.AsUnityVector3(),
 108                distance = action.Payload.Query.Payload.Ray.Distance,
 109            };
 110
 0111            return new RaycastQuery
 112            {
 113                id = action.Payload.Query.Payload.QueryId,
 114                raycastType = raycastType,
 115                ray = ray,
 116                sceneNumber = sceneNumber,
 117            };
 118        }
 119
 120        private static string MapMessagingMethodType(EntityAction action) =>
 0121            action.Payload.PayloadCase switch
 122            {
 0123                EntityActionPayload.PayloadOneofCase.InitMessagesFinished => MessagingTypes.INIT_DONE,
 0124                EntityActionPayload.PayloadOneofCase.OpenExternalUrl => MessagingTypes.OPEN_EXTERNAL_URL,
 0125                EntityActionPayload.PayloadOneofCase.OpenNftDialog => MessagingTypes.OPEN_NFT_DIALOG,
 0126                EntityActionPayload.PayloadOneofCase.CreateEntity => MessagingTypes.ENTITY_CREATE,
 0127                EntityActionPayload.PayloadOneofCase.RemoveEntity => MessagingTypes.ENTITY_DESTROY,
 0128                EntityActionPayload.PayloadOneofCase.AttachEntityComponent => MessagingTypes.SHARED_COMPONENT_ATTACH,
 0129                EntityActionPayload.PayloadOneofCase.ComponentRemoved => MessagingTypes.ENTITY_COMPONENT_DESTROY,
 0130                EntityActionPayload.PayloadOneofCase.SetEntityParent => MessagingTypes.ENTITY_REPARENT,
 0131                EntityActionPayload.PayloadOneofCase.Query => MessagingTypes.QUERY,
 0132                EntityActionPayload.PayloadOneofCase.ComponentCreated => MessagingTypes.SHARED_COMPONENT_CREATE,
 0133                EntityActionPayload.PayloadOneofCase.ComponentDisposed => MessagingTypes.SHARED_COMPONENT_DISPOSE,
 0134                EntityActionPayload.PayloadOneofCase.UpdateEntityComponent => MessagingTypes.PB_ENTITY_COMPONENT_CREATE_
 0135                EntityActionPayload.PayloadOneofCase.ComponentUpdated => MessagingTypes.PB_SHARED_COMPONENT_UPDATE,
 0136                EntityActionPayload.PayloadOneofCase.None => null,
 0137                _ => throw new ArgumentOutOfRangeException(),
 138            };
 139    }
 140}