< Summary

Class:ECSComponentsUtils
Assembly:ECSComponents.Utils
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/Utils/ECSComponentsUtils.cs
Covered lines:8
Uncovered lines:32
Coverable lines:40
Total lines:119
Line coverage:20% (8 of 40)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
RemoveMaterialTransition(...)0%6200%
UpdateMeshInfo(...)0%6200%
UpdateMeshInfoColliders(...)0%30500%
RemoveRendereableFromDataStore(...)0%110100%
AddRendereableToDataStore(...)0%110100%
DisposeMeshInfo(...)0%30500%
CalculateNFTCollidersLayer(...)0%12300%
CalculateCollidersLayer(...)0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/Utils/ECSComponentsUtils.cs

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 3using DCL;
 4using DCL.Configuration;
 5using DCL.Controllers;
 6using DCL.ECSComponents;
 7using DCL.Helpers;
 8using DCL.Models;
 9using UnityEngine;
 10using UnityEngine.UIElements;
 11
 12public static class ECSComponentsUtils
 13{
 14    public static void RemoveMaterialTransition(GameObject go)
 15    {
 016        MaterialTransitionController[] materialTransitionControllers = go.GetComponentsInChildren<MaterialTransitionCont
 17
 018        for (var i = 0; i < materialTransitionControllers.Length; i++)
 19        {
 020            GameObject.Destroy(materialTransitionControllers[i]);
 21        }
 022    }
 23
 24    public static void UpdateMeshInfo(bool isVisible, bool withCollisions, bool isPointerBlocker, MeshesInfo meshesInfo)
 25    {
 026        foreach (Renderer renderer in meshesInfo.renderers)
 27        {
 028            renderer.enabled = isVisible;
 29        }
 30
 031        UpdateMeshInfoColliders(withCollisions, isPointerBlocker, meshesInfo);
 032    }
 33
 34    public static void UpdateMeshInfoColliders(bool withCollisions, bool isPointerBlocker, MeshesInfo meshesInfo)
 35    {
 036        int colliderLayer = isPointerBlocker ? PhysicsLayers.onPointerEventLayer : PhysicsLayers.defaultLayer;
 37
 038        foreach (Collider collider in meshesInfo.colliders)
 39        {
 040            if (collider == null) continue;
 41
 042            collider.enabled = withCollisions;
 043            collider.gameObject.layer = colliderLayer;
 44        }
 045    }
 46
 47    public static void RemoveRendereableFromDataStore(int sceneNumber, Rendereable rendereable)
 48    {
 149        DataStore.i.sceneWorldObjects.RemoveRendereable(sceneNumber, rendereable);
 150    }
 51
 52    public static Rendereable AddRendereableToDataStore(int sceneNumber, long entityId, Mesh mesh, GameObject gameObject
 53    {
 254        int triangleCount = mesh.triangles.Length;
 55
 256        var newRendereable =
 57            new Rendereable()
 58            {
 59                container = gameObject,
 60                totalTriangleCount = triangleCount,
 61                meshes = new HashSet<Mesh>() { mesh },
 62                meshToTriangleCount = new Dictionary<Mesh, int>() { { mesh, triangleCount } }
 63            };
 64
 265        newRendereable.renderers = new HashSet<Renderer>(renderers);
 266        newRendereable.ownerId = entityId;
 67
 268        DataStore.i.sceneWorldObjects.AddRendereable(sceneNumber, newRendereable);
 269        return newRendereable;
 70    }
 71
 72    public static void DisposeMeshInfo(MeshesInfo meshesInfo)
 73    {
 74        // Dispose renderer
 075        foreach (Renderer renderer in meshesInfo.renderers)
 76        {
 077            Utils.CleanMaterials(renderer);
 078            GameObject.Destroy(renderer);
 79        }
 80
 81        // Dispose Mesh filter
 082        foreach (MeshFilter meshFilter in meshesInfo.meshFilters)
 83        {
 084            GameObject.Destroy(meshFilter);
 85        }
 86
 87        // Dispose collider
 088        foreach (Collider collider in meshesInfo.colliders)
 89        {
 090            if (collider == null) continue;
 91
 092            GameObject.Destroy(collider);
 93        }
 94
 095        meshesInfo.CleanReferences();
 096    }
 97
 98    public static int CalculateNFTCollidersLayer(bool withCollisions, bool isPointerBlocker)
 99    {
 100        // We can't enable this layer changer logic until we redeploy all the builder and street scenes with the correct
 101        /* if (!model.withCollisions && model.isPointerBlocker)
 102            return PhysicsLayers.onPointerEventLayer;
 103        else */
 0104        if (withCollisions && !isPointerBlocker)
 0105            return PhysicsLayers.characterOnlyLayer;
 106
 0107        return PhysicsLayers.defaultLayer;
 108    }
 109
 110    private static int CalculateCollidersLayer(bool withCollisions, bool isPointerBlocker)
 111    {
 0112        if (isPointerBlocker)
 0113            return PhysicsLayers.onPointerEventLayer;
 0114        else if (withCollisions)
 0115            return PhysicsLayers.characterOnlyLayer;
 116
 0117        return PhysicsLayers.defaultLayer;
 118    }
 119}