< Summary

Class:DCL.ECSComponents.MeshRendererHandler
Assembly:DCL.ECSComponents.MeshRenderer
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/MeshRenderer/MeshRendererHandler.cs
Covered lines:43
Uncovered lines:4
Coverable lines:47
Total lines:100
Line coverage:91.4% (43 of 47)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
MeshRendererHandler(...)0%110100%
OnComponentCreated(...)0%110100%
OnComponentRemoved(...)0%220100%
OnComponentModelUpdated(...)0%77095.65%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/ECS7/ECSComponents/MeshRenderer/MeshRendererHandler.cs

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.ECS7.InternalComponents;
 3using DCL.ECSRuntime;
 4using DCL.Helpers;
 5using DCL.Models;
 6using UnityEngine;
 7
 8namespace DCL.ECSComponents
 9{
 10    public class MeshRendererHandler : IECSComponentHandler<PBMeshRenderer>
 11    {
 12        private readonly IInternalECSComponent<InternalTexturizable> texturizableInternalComponent;
 13        private readonly DataStore_ECS7 ecs7DataStore;
 14
 15        private GameObject componentGameObject;
 16        private MeshFilter componentMeshFilter;
 17        private MeshRenderer componentMeshRenderer;
 18
 19        private AssetPromise_PrimitiveMesh primitiveMeshPromise;
 20        private PBMeshRenderer prevModel;
 21
 422        public MeshRendererHandler(DataStore_ECS7 dataStoreEcs7, IInternalECSComponent<InternalTexturizable> texturizabl
 23        {
 424            texturizableInternalComponent = texturizableComponent;
 425            ecs7DataStore = dataStoreEcs7;
 426        }
 27
 28        public void OnComponentCreated(IParcelScene scene, IDCLEntity entity)
 29        {
 830            componentGameObject = new GameObject("MeshRenderer");
 831            componentGameObject.transform.SetParent(entity.gameObject.transform);
 832            componentGameObject.transform.ResetLocalTRS();
 833            componentMeshFilter = componentGameObject.AddComponent<MeshFilter>();
 834            componentMeshRenderer = componentGameObject.AddComponent<MeshRenderer>();
 835            componentMeshRenderer.sharedMaterial = Utils.EnsureResourcesMaterial("Materials/Default");
 836            texturizableInternalComponent.AddRenderer(scene, entity, componentMeshRenderer);
 837        }
 38
 39        public void OnComponentRemoved(IParcelScene scene, IDCLEntity entity)
 40        {
 841            texturizableInternalComponent.RemoveRenderer(scene, entity, componentMeshRenderer);
 42
 843            if (prevModel != null)
 744                ecs7DataStore.RemovePendingResource(scene.sceneData.id, prevModel);
 45
 846            AssetPromiseKeeper_PrimitiveMesh.i.Forget(primitiveMeshPromise);
 847            Object.Destroy(componentGameObject);
 848        }
 49
 50        public void OnComponentModelUpdated(IParcelScene scene, IDCLEntity entity, PBMeshRenderer model)
 51        {
 852            AssetPromise_PrimitiveMesh_Model? promiseModel = null;
 53
 854            switch (model.MeshCase)
 55            {
 56                case PBMeshRenderer.MeshOneofCase.Box:
 457                    promiseModel = AssetPromise_PrimitiveMesh_Model.CreateBox(model.Box.Uvs);
 458                    break;
 59                case PBMeshRenderer.MeshOneofCase.Sphere:
 160                    promiseModel = AssetPromise_PrimitiveMesh_Model.CreateSphere();
 161                    break;
 62                case PBMeshRenderer.MeshOneofCase.Cylinder:
 163                    promiseModel = AssetPromise_PrimitiveMesh_Model.CreateCylinder(model.Cylinder.GetTopRadius(), model.
 164                    break;
 65                case PBMeshRenderer.MeshOneofCase.Plane:
 166                    promiseModel = AssetPromise_PrimitiveMesh_Model.CreatePlane(model.Plane.Uvs);
 67                    break;
 68            }
 69
 870            if (!promiseModel.HasValue)
 71            {
 172                AssetPromiseKeeper_PrimitiveMesh.i.Forget(primitiveMeshPromise);
 73
 174                if (prevModel != null)
 075                    ecs7DataStore.RemovePendingResource(scene.sceneData.id, prevModel);
 76
 177                return;
 78            }
 79
 780            AssetPromise_PrimitiveMesh prevPromise = primitiveMeshPromise;
 781            prevModel = model;
 82
 783            primitiveMeshPromise = new AssetPromise_PrimitiveMesh(promiseModel.Value);
 784            primitiveMeshPromise.OnSuccessEvent += shape =>
 85            {
 786                componentMeshFilter.sharedMesh = shape.mesh;
 787                ecs7DataStore.RemovePendingResource(scene.sceneData.id, model);
 788            };
 789            primitiveMeshPromise.OnFailEvent += (mesh, exception) =>
 90            {
 091                ecs7DataStore.RemovePendingResource(scene.sceneData.id, model);
 092                Debug.LogException(exception);
 093            };
 94
 795            ecs7DataStore.AddPendingResource(scene.sceneData.id, model);
 796            AssetPromiseKeeper_PrimitiveMesh.i.Keep(primitiveMeshPromise);
 797            AssetPromiseKeeper_PrimitiveMesh.i.Forget(prevPromise);
 798        }
 99    }
 100}