< Summary

Class:DCL.Builder.SceneData
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/ScenesController/SceneData.cs
Covered lines:41
Uncovered lines:19
Coverable lines:60
Total lines:143
Line coverage:68.3% (41 of 60)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
get_coords()0%110100%
get_size()0%110100%
get_id()0%110100%
get_name()0%110100%
get_thumbnailUrl()0%110100%
get_isOwner()0%110100%
get_isOperator()0%110100%
get_isContributor()0%110100%
get_isDeployed()0%110100%
get_entitiesCount()0%110100%
get_authorThumbnail()0%110100%
get_authorName()0%110100%
get_requiredPermissions()0%110100%
get_isMatureContent()0%110100%
get_allowVoiceChat()0%110100%
get_description()0%110100%
get_contributors()0%2100%
get_admins()0%2100%
get_bannedUsers()0%2100%
get_isEditable()0%110100%
get_parcels()0%110100%
get_projectId()0%2100%
get_isEmpty()0%2100%
get_source()0%2100%
SceneData()0%2100%
SceneData(...)0%13.399062.16%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/ScenesController/SceneData.cs

#LineLine coverage
 1using System;
 2using DCL.Builder;
 3using UnityEngine;
 4
 5namespace DCL.Builder
 6{
 7    internal interface ISceneData
 8    {
 9        Vector2Int coords { get; }
 10        Vector2Int size { get; }
 11        string id { get; }
 12        string name { get; }
 13        string thumbnailUrl { get; }
 14        bool isOwner { get; }
 15        bool isOperator { get; }
 16        bool isContributor { get; }
 17        bool isDeployed { get; }
 18        int entitiesCount { get; }
 19        string authorThumbnail { get; }
 20        string authorName { get; }
 21        string[] requiredPermissions { get; }
 22        bool isMatureContent { get; }
 23        bool allowVoiceChat { get; }
 24        string description { get; }
 25        string[] contributors { get; }
 26        string[] admins { get;  }
 27        string[] bannedUsers { get;  }
 28        bool isEditable { get; }
 29        Vector2Int[] parcels { get; }
 30        string projectId { get; }
 31        bool isEmpty { get; }
 32        Scene.Source source { get; }
 33    }
 34
 35    [Serializable]
 36    internal class SceneData : ISceneData
 37    {
 38        private const string CONTENT_MATURE_SYMBOL = "M";
 39        private const string CONTENT_ADULTS_ONLY_SYMBOL = "AO";
 40
 41        public Vector2Int coords;
 42        public Vector2Int size;
 43        public string id;
 44        public string name;
 45        public string thumbnailUrl;
 46        public bool isOwner;
 47        public bool isOperator;
 48        public bool isContributor;
 49        public bool isDeployed;
 50        public int entitiesCount;
 51        public string authorThumbnail;
 52        public string authorName;
 53        public string[] requiredPermissions;
 54        public bool isMatureContent;
 55        public bool allowVoiceChat;
 56        public string description;
 57        public string[] contributors;
 58        public string[] admins;
 59        public string[] bannedUsers;
 60        public bool isEditable;
 61        public Vector2Int[] parcels;
 62        public string projectId;
 63        public bool isEmpty;
 64        public Scene.Source source;
 65
 2966        Vector2Int ISceneData.coords => coords;
 6567        Vector2Int ISceneData.size => size;
 8568        string ISceneData.id => id;
 2869        string ISceneData.name => name;
 2770        string ISceneData.thumbnailUrl => thumbnailUrl;
 2571        bool ISceneData.isOwner => isOwner;
 2572        bool ISceneData.isOperator => isOperator;
 2573        bool ISceneData.isContributor => isContributor;
 8574        bool ISceneData.isDeployed => isDeployed;
 275        int ISceneData.entitiesCount => entitiesCount;
 276        string ISceneData.authorThumbnail => authorThumbnail;
 277        string ISceneData.authorName => authorName;
 678        string[] ISceneData.requiredPermissions => requiredPermissions;
 279        bool ISceneData.isMatureContent => isMatureContent;
 280        bool ISceneData.allowVoiceChat => allowVoiceChat;
 381        string ISceneData.description => description;
 082        string[] ISceneData.contributors => contributors;
 083        string[] ISceneData.admins => admins;
 084        string[] ISceneData.bannedUsers => bannedUsers;
 2585        bool ISceneData.isEditable => isEditable;
 2586        Vector2Int[] ISceneData.parcels => parcels;
 087        string ISceneData.projectId => projectId;
 088        bool ISceneData.isEmpty => isEmpty;
 089        Scene.Source ISceneData.source => source;
 90
 091        public SceneData() { }
 92
 193        public SceneData(Scene scene)
 94        {
 195            coords = scene.@base;
 196            id = scene.id;
 197            name = scene.title;
 198            description = scene.description;
 199            thumbnailUrl = scene.navmapThumbnail;
 1100            isOwner = scene?.land?.role == LandRole.OWNER;
 1101            isOperator = !isOwner;
 1102            isContributor = false;
 1103            isDeployed = true;
 1104            authorName = scene.author;
 1105            requiredPermissions = scene.requiredPermissions;
 1106            bannedUsers = scene.bannedUsers;
 1107            isEditable = scene.source != Scene.Source.SDK;
 1108            parcels = scene.parcels;
 1109            projectId = scene.projectId;
 1110            isEmpty = scene.isEmpty;
 1111            source = scene.source;
 112
 1113            isMatureContent = false;
 1114            if (!string.IsNullOrEmpty(scene.contentRating))
 115            {
 0116                isMatureContent = scene.contentRating.Equals(CONTENT_MATURE_SYMBOL, StringComparison.OrdinalIgnoreCase)
 117                                  || scene.contentRating.Equals(CONTENT_ADULTS_ONLY_SYMBOL, StringComparison.OrdinalIgno
 118            }
 119
 1120            if (scene.parcels.Length < 2)
 121            {
 1122                size = new Vector2Int(1, 1);
 1123            }
 124            else
 125            {
 0126                int minX = scene.parcels[0].x;
 0127                int maxX = scene.parcels[0].x;
 0128                int minY = scene.parcels[0].y;
 0129                int maxY = scene.parcels[0].y;
 130
 0131                for (int i = 1; i < scene.parcels.Length; i++)
 132                {
 0133                    minX = Mathf.Min(minX, scene.parcels[i].x);
 0134                    minY = Mathf.Min(minY, scene.parcels[i].y);
 0135                    maxX = Mathf.Max(maxX, scene.parcels[i].x);
 0136                    maxY = Mathf.Max(maxY, scene.parcels[i].y);
 137                }
 138
 0139                size = new Vector2Int(Mathf.Abs(maxX - minX), Mathf.Abs(maxY - minY));
 140            }
 0141        }
 142    }
 143}