< Summary

Class:DCL.ECSComponentsManagerLegacy
Assembly:ECSComponentManagerLegacy
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSComponentManagerLegacy/ECSComponentsManagerLegacy.cs
Covered lines:199
Uncovered lines:52
Coverable lines:251
Total lines:626
Line coverage:79.2% (199 of 251)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ECSComponentsManagerLegacy(...)0%110100%
ECSComponentsManagerLegacy(...)0%110100%
AddSharedComponent(...)0%3.023087.5%
RemoveSharedComponent(...)0%6.026091.67%
TryGetComponent[T](...)0%7.057090%
TryGetBaseComponent(...)0%220100%
TryGetSharedComponent(...)0%440100%
GetSharedComponent(...)0%3.073080%
HasComponent(...)0%220100%
HasSharedComponent(...)0%220100%
RemoveComponent(...)0%330100%
AddComponent(...)0%330100%
GetComponent(...)0%3.583060%
GetComponents()0%30500%
GetSharedComponents()0%14.115028.57%
GetComponentsDictionary(...)0%110100%
GetSharedComponentsDictionary(...)0%110100%
GetComponentsCount()0%6200%
CleanComponents(...)0%770100%
HasSceneSharedComponent(...)0%110100%
GetSceneSharedComponent(...)0%110100%
TryGetSceneSharedComponent(...)0%2100%
GetSceneSharedComponentsDictionary()0%110100%
GetSceneSharedComponentsCount()0%110100%
AddSceneSharedComponent(...)0%220100%
RemoveSceneSharedComponent(...)0%2100%
SceneSharedComponentCreate(...)0%5.125083.33%
GetSceneSharedComponent[T]()0%220100%
SceneSharedComponentAttach(...)0%330100%
EntityComponentCreateOrUpdate(...)0%9.049092%
EntityComponentUpdate(...)0%3.793055.56%
SceneSharedComponentDispose(...)0%330100%
SceneSharedComponentUpdate(...)0%5.23037.5%
SceneSharedComponentUpdate(...)0%5.23037.5%
EntityComponentRemove(...)0%40.0133081.4%
DisposeAllSceneComponents()0%330100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/ECSComponentManagerLegacy/ECSComponentsManagerLegacy.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using DCL.Components;
 5using DCL.Controllers;
 6using DCL.Helpers;
 7using DCL.Models;
 8using DCL.Rendering;
 9using UnityEngine;
 10
 11namespace DCL
 12{
 13    public class ECSComponentsManagerLegacy : IECSComponentsManagerLegacy
 14    {
 54415        private readonly Dictionary<string, ISharedComponent> disposableComponents = new Dictionary<string, ISharedCompo
 16
 54417        private readonly Dictionary<long, Dictionary<Type, ISharedComponent>> entitiesSharedComponents =
 18            new Dictionary<long, Dictionary<Type, ISharedComponent>>();
 19
 54420        private readonly Dictionary<long, Dictionary<CLASS_ID_COMPONENT, IEntityComponent>> entitiesComponents =
 21            new Dictionary<long, Dictionary<CLASS_ID_COMPONENT, IEntityComponent>>();
 22
 23        private readonly IParcelScene scene;
 24        private readonly IRuntimeComponentFactory componentFactory;
 25        private readonly IParcelScenesCleaner parcelScenesCleaner;
 26        private readonly ISceneBoundsChecker sceneBoundsChecker;
 27        private readonly IPhysicsSyncController physicsSyncController;
 28        private readonly ICullingController cullingController;
 29
 30        public event Action<string, ISharedComponent> OnAddSharedComponent;
 31
 32        public ECSComponentsManagerLegacy(IParcelScene scene)
 54433            : this(scene,
 34                Environment.i.world.componentFactory,
 35                Environment.i.platform.parcelScenesCleaner,
 36                Environment.i.world.sceneBoundsChecker,
 37                Environment.i.platform.physicsSyncController,
 54438                Environment.i.platform.cullingController) { }
 39
 54440        public ECSComponentsManagerLegacy(IParcelScene scene,
 41            IRuntimeComponentFactory componentFactory,
 42            IParcelScenesCleaner parcelScenesCleaner,
 43            ISceneBoundsChecker sceneBoundsChecker,
 44            IPhysicsSyncController physicsSyncController,
 45            ICullingController cullingController)
 46        {
 54447            this.scene = scene;
 54448            this.componentFactory = componentFactory;
 54449            this.parcelScenesCleaner = parcelScenesCleaner;
 54450            this.sceneBoundsChecker = sceneBoundsChecker;
 54451            this.physicsSyncController = physicsSyncController;
 54452            this.cullingController = cullingController;
 54453        }
 54
 55        public void AddSharedComponent(IDCLEntity entity, Type componentType, ISharedComponent component)
 56        {
 46857            if (component == null)
 58            {
 059                return;
 60            }
 61
 46862            RemoveSharedComponent(entity, componentType);
 63
 46864            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 65            {
 34066                entityComponents = new Dictionary<Type, ISharedComponent>();
 34067                entitiesSharedComponents.Add(entity.entityId, entityComponents);
 68            }
 69
 46870            entityComponents.Add(componentType, component);
 46871        }
 72
 73        public void RemoveSharedComponent(IDCLEntity entity, Type targetType, bool triggerDetaching = true)
 74        {
 94075            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 76            {
 36677                return;
 78            }
 57479            if (!entityComponents.TryGetValue(targetType, out ISharedComponent component))
 80            {
 17581                return;
 82            }
 39983            if (component == null)
 084                return;
 85
 39986            entityComponents.Remove(targetType);
 87
 39988            if (entityComponents.Count == 0)
 89            {
 27890                entitiesSharedComponents.Remove(entity.entityId);
 91            }
 92
 39993            if (triggerDetaching)
 3194                component.DetachFrom(entity, targetType);
 39995        }
 96
 97        public T TryGetComponent<T>(IDCLEntity entity) where T : class
 98        {
 26499            T component = null;
 264100            if (entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> ent
 101            {
 83102                component = entityComponents.Values.FirstOrDefault(x => x is T) as T;
 103
 83104                if (component != null)
 0105                    return component;
 106            }
 107
 264108            if (entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityShare
 109            {
 49110                component = entitySharedComponents.Values.FirstOrDefault(x => x is T) as T;
 111
 49112                if (component != null)
 42113                    return component;
 114            }
 115
 222116            return null;
 117        }
 118
 119        public bool TryGetBaseComponent(IDCLEntity entity, CLASS_ID_COMPONENT componentId, out IEntityComponent componen
 120        {
 287121            if (entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> ent
 122            {
 72123                return entityComponents.TryGetValue(componentId, out component);
 124            }
 215125            component = null;
 215126            return false;
 127        }
 128
 129        public bool TryGetSharedComponent(IDCLEntity entity, CLASS_ID componentId, out ISharedComponent component)
 130        {
 323131            component = null;
 323132            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 133            {
 234134                return false;
 135            }
 136
 89137            using (var iterator = entityComponents.GetEnumerator())
 138            {
 165139                while (iterator.MoveNext())
 140                {
 114141                    if (iterator.Current.Value.GetClassId() != (int)componentId)
 142                        continue;
 143
 38144                    component = iterator.Current.Value;
 38145                    break;
 146                }
 51147            }
 148
 89149            return component != null;
 150        }
 151
 152        public ISharedComponent GetSharedComponent(IDCLEntity entity, Type targetType)
 153        {
 68154            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 155            {
 11156                return null;
 157            }
 158
 57159            if (entityComponents.TryGetValue(targetType, out ISharedComponent component))
 160            {
 57161                return component;
 162            }
 163
 0164            return null;
 165        }
 166
 167        public bool HasComponent(IDCLEntity entity, CLASS_ID_COMPONENT componentId)
 168        {
 960169            if (entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> ent
 170            {
 485171                return entityComponents.ContainsKey(componentId);
 172            }
 475173            return false;
 174        }
 175
 176        public bool HasSharedComponent(IDCLEntity entity, CLASS_ID componentId)
 177        {
 94178            if (TryGetSharedComponent(entity, componentId, out ISharedComponent component))
 179            {
 1180                return component != null;
 181            }
 93182            return false;
 183        }
 184
 185        public void RemoveComponent(IDCLEntity entity, CLASS_ID_COMPONENT componentId)
 186        {
 22187            if (entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> ent
 188            {
 22189                entityComponents.Remove(componentId);
 190
 22191                if (entityComponents.Count == 0)
 192                {
 17193                    entitiesComponents.Remove(entity.entityId);
 194                }
 195            }
 22196        }
 197
 198        public void AddComponent(IDCLEntity entity, CLASS_ID_COMPONENT componentId, IEntityComponent component)
 199        {
 346200            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 201            {
 299202                entityComponents = new Dictionary<CLASS_ID_COMPONENT, IEntityComponent>();
 299203                entitiesComponents.Add(entity.entityId, entityComponents);
 204
 299205                entity.OnBaseComponentAdded?.Invoke(componentId, entity);
 206            }
 346207            entityComponents.Add(componentId, component);
 346208        }
 209
 210        public IEntityComponent GetComponent(IDCLEntity entity, CLASS_ID_COMPONENT componentId)
 211        {
 104212            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 213            {
 0214                return null;
 215            }
 104216            if (entityComponents.TryGetValue(componentId, out IEntityComponent component))
 217            {
 104218                return component;
 219            }
 0220            return null;
 221        }
 222
 223        public IEnumerator<IEntityComponent> GetComponents(IDCLEntity entity)
 224        {
 0225            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 226            {
 0227                yield break;
 228            }
 229
 0230            using (var iterator = entityComponents.GetEnumerator())
 231            {
 0232                while (iterator.MoveNext())
 233                {
 0234                    yield return iterator.Current.Value;
 235                }
 0236            }
 0237        }
 238
 239        public IEnumerator<ISharedComponent> GetSharedComponents(IDCLEntity entity)
 240        {
 4241            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 242            {
 4243                yield break;
 244            }
 245
 0246            using (var iterator = entityComponents.GetEnumerator())
 247            {
 0248                while (iterator.MoveNext())
 249                {
 0250                    yield return iterator.Current.Value;
 251                }
 0252            }
 0253        }
 254
 255        public IReadOnlyDictionary<CLASS_ID_COMPONENT, IEntityComponent> GetComponentsDictionary(IDCLEntity entity)
 256        {
 38257            entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> entityC
 38258            return entityComponents;
 259        }
 260
 261        public IReadOnlyDictionary<Type, ISharedComponent> GetSharedComponentsDictionary(IDCLEntity entity)
 262        {
 4263            entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComponent
 4264            return entityComponents;
 265        }
 266
 267        public int GetComponentsCount()
 268        {
 0269            int count = 0;
 0270            using (var entityIterator = entitiesComponents.GetEnumerator())
 271            {
 0272                while (entityIterator.MoveNext())
 273                {
 0274                    count += entityIterator.Current.Value.Count;
 275                }
 0276            }
 0277            return count;
 278        }
 279
 280        public void CleanComponents(IDCLEntity entity)
 281        {
 537282            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 283            {
 322284                return;
 285            }
 286
 215287            using (var iterator = entityComponents.GetEnumerator())
 288            {
 448289                while (iterator.MoveNext())
 290                {
 233291                    if (iterator.Current.Value == null)
 292                        continue;
 293
 233294                    if (iterator.Current.Value is ICleanable cleanableComponent)
 233295                        cleanableComponent.Cleanup();
 296
 233297                    if (!(iterator.Current.Value is IPoolableObjectContainer poolableContainer))
 298                        continue;
 299
 51300                    if (poolableContainer.poolableObject == null)
 301                        continue;
 302
 4303                    poolableContainer.poolableObject.Release();
 304                }
 215305            }
 215306            entitiesComponents.Remove(entity.entityId);
 215307        }
 308
 309        public bool HasSceneSharedComponent(string component)
 310        {
 189311            return disposableComponents.ContainsKey(component);
 312        }
 313
 314        public ISharedComponent GetSceneSharedComponent(string component)
 315        {
 816316            disposableComponents.TryGetValue(component, out ISharedComponent sharedComponent);
 816317            return sharedComponent;
 318        }
 319
 320        public bool TryGetSceneSharedComponent(string component, out ISharedComponent sharedComponent)
 321        {
 0322            return disposableComponents.TryGetValue(component, out sharedComponent);
 323        }
 324
 325        public IReadOnlyDictionary<string, ISharedComponent> GetSceneSharedComponentsDictionary()
 326        {
 3327            return disposableComponents;
 328        }
 329
 330        public int GetSceneSharedComponentsCount()
 331        {
 503332            return disposableComponents.Count;
 333        }
 334
 335        public void AddSceneSharedComponent(string component, ISharedComponent sharedComponent)
 336        {
 654337            disposableComponents.Add(component, sharedComponent);
 654338            OnAddSharedComponent?.Invoke(component, sharedComponent);
 4339        }
 340
 341        public bool RemoveSceneSharedComponent(string component)
 342        {
 0343            return disposableComponents.Remove(component);
 344        }
 345
 346        public ISharedComponent SceneSharedComponentCreate(string id, int classId)
 347        {
 654348            if (disposableComponents.TryGetValue(id, out ISharedComponent component))
 4349                return component;
 350
 650351            IRuntimeComponentFactory factory = componentFactory;
 352
 650353            if (factory.createConditions.ContainsKey(classId))
 354            {
 44355                if (!factory.createConditions[(int)classId].Invoke(scene.sceneData.id, classId))
 0356                    return null;
 357            }
 358
 650359            ISharedComponent newComponent = componentFactory.CreateComponent(classId) as ISharedComponent;
 360
 650361            if (newComponent == null)
 0362                return null;
 363
 650364            AddSceneSharedComponent(id, newComponent);
 365
 650366            newComponent.Initialize(scene, id);
 367
 650368            return newComponent;
 369        }
 370
 371        public T GetSceneSharedComponent<T>() where T : class
 372        {
 123373            return disposableComponents.Values.FirstOrDefault(x => x is T) as T;
 374        }
 375
 376        /**
 377          * This method is called when we need to attach a disposable component to the entity
 378          */
 379        public void SceneSharedComponentAttach(long entityId, string componentId)
 380        {
 472381            IDCLEntity entity = scene.GetEntityById(entityId);
 382
 472383            if (entity == null)
 2384                return;
 385
 470386            if (disposableComponents.TryGetValue(componentId, out ISharedComponent sharedComponent))
 387            {
 468388                sharedComponent.AttachTo(entity);
 389            }
 470390        }
 391
 392        public IEntityComponent EntityComponentCreateOrUpdate(long entityId, CLASS_ID_COMPONENT classId, object data)
 393        {
 423394            IDCLEntity entity = scene.GetEntityById(entityId);
 395
 423396            if (entity == null)
 397            {
 0398                Debug.LogError($"scene '{scene.sceneData.id}': Can't create entity component if the entity {entityId} do
 0399                return null;
 400            }
 401
 423402            IEntityComponent targetComponent = null;
 403
 423404            var overrideCreate = Environment.i.world.componentFactory.createOverrides;
 405
 423406            if (overrideCreate.ContainsKey((int)classId))
 407            {
 348408                int classIdAsInt = (int)classId;
 348409                overrideCreate[(int)classId].Invoke(scene.sceneData.id, entityId, ref classIdAsInt, data);
 348410                classId = (CLASS_ID_COMPONENT)classIdAsInt;
 411            }
 412
 423413            if (!HasComponent(entity, classId))
 414            {
 345415                targetComponent = componentFactory.CreateComponent((int) classId) as IEntityComponent;
 416
 345417                if (targetComponent != null)
 418                {
 345419                    AddComponent(entity, classId, targetComponent);
 420
 345421                    targetComponent.Initialize(scene, entity);
 422
 345423                    if (data is string json)
 310424                        targetComponent.UpdateFromJSON(json);
 425                    else
 35426                        targetComponent.UpdateFromModel(data as BaseModel);
 427                }
 35428            }
 429            else
 430            {
 78431                targetComponent = EntityComponentUpdate(entity, classId, data as string);
 432            }
 433
 423434            if (targetComponent != null && targetComponent is IOutOfSceneBoundariesHandler)
 358435                sceneBoundsChecker?.AddEntityToBeChecked(entity, runPreliminaryEvaluation: classId == CLASS_ID_COMPONENT
 436
 423437            physicsSyncController.MarkDirty();
 423438            cullingController.MarkDirty();
 439
 423440            return targetComponent;
 441        }
 442
 443        public IEntityComponent EntityComponentUpdate(IDCLEntity entity, CLASS_ID_COMPONENT classId,
 444            string componentJson)
 445        {
 102446            if (entity == null)
 447            {
 0448                Debug.LogError($"Can't update the {classId} component of a nonexistent entity!", scene.GetSceneTransform
 0449                return null;
 450            }
 451
 102452            if (!HasComponent(entity, classId))
 453            {
 0454                Debug.LogError($"Entity {entity.entityId} doesn't have a {classId} component to update!", scene.GetScene
 0455                return null;
 456            }
 457
 102458            var targetComponent = GetComponent(entity, classId);
 102459            targetComponent.UpdateFromJSON(componentJson);
 460
 102461            return targetComponent;
 462        }
 463
 464        public void SceneSharedComponentDispose(string id)
 465        {
 90466            if (disposableComponents.TryGetValue(id, out ISharedComponent sharedComponent))
 467            {
 90468                sharedComponent?.Dispose();
 90469                disposableComponents.Remove(id);
 470            }
 90471        }
 472
 473        public ISharedComponent SceneSharedComponentUpdate(string id, BaseModel model)
 474        {
 33475            if (disposableComponents.TryGetValue(id, out ISharedComponent sharedComponent))
 476            {
 33477                sharedComponent.UpdateFromModel(model);
 33478                return sharedComponent;
 479            }
 480
 0481            if (scene.GetSceneTransform() == null)
 482            {
 0483                Debug.LogError($"Unknown disposableComponent {id} -- scene has been destroyed?");
 0484            }
 485            else
 486            {
 0487                Debug.LogError($"Unknown disposableComponent {id}", scene.GetSceneTransform());
 488            }
 489
 0490            return null;
 491        }
 492
 493        public ISharedComponent SceneSharedComponentUpdate(string id, string json)
 494        {
 705495            if (disposableComponents.TryGetValue(id, out ISharedComponent disposableComponent))
 496            {
 705497                disposableComponent.UpdateFromJSON(json);
 705498                return disposableComponent;
 499            }
 500
 0501            if (scene.GetSceneTransform() == null)
 502            {
 0503                Debug.LogError($"Unknown disposableComponent {id} -- scene has been destroyed?");
 0504            }
 505            else
 506            {
 0507                Debug.LogError($"Unknown disposableComponent {id}", scene.GetSceneTransform());
 508            }
 509
 0510            return null;
 511        }
 512
 513        public void EntityComponentRemove(long entityId, string componentName)
 514        {
 37515            IDCLEntity entity = scene.GetEntityById(entityId);
 516
 37517            if (entity == null)
 518            {
 0519                return;
 520            }
 521
 522            switch (componentName)
 523            {
 524                case "shape":
 0525                    if (entity.meshesInfo.currentShape is BaseShape baseShape)
 526                    {
 0527                        baseShape.DetachFrom(entity);
 528                    }
 529
 0530                    return;
 531
 532                case ComponentNameLiterals.OnClick:
 533                    {
 1534                        if (TryGetBaseComponent(entity, CLASS_ID_COMPONENT.UUID_ON_CLICK, out IEntityComponent component
 535                        {
 1536                            Utils.SafeDestroy(component.GetTransform().gameObject);
 1537                            RemoveComponent(entity, CLASS_ID_COMPONENT.UUID_ON_CLICK);
 538                        }
 539
 1540                        return;
 541                    }
 542                case ComponentNameLiterals.OnPointerDown:
 543                    {
 1544                        if (TryGetBaseComponent(entity, CLASS_ID_COMPONENT.UUID_ON_DOWN, out IEntityComponent component)
 545                        {
 1546                            Utils.SafeDestroy(component.GetTransform().gameObject);
 1547                            RemoveComponent(entity, CLASS_ID_COMPONENT.UUID_ON_DOWN);
 548                        }
 549                    }
 1550                    return;
 551                case ComponentNameLiterals.OnPointerUp:
 552                    {
 1553                        if (TryGetBaseComponent(entity, CLASS_ID_COMPONENT.UUID_ON_UP, out IEntityComponent component))
 554                        {
 1555                            Utils.SafeDestroy(component.GetTransform().gameObject);
 1556                            RemoveComponent(entity, CLASS_ID_COMPONENT.UUID_ON_UP);
 557                        }
 558                    }
 1559                    return;
 560                case ComponentNameLiterals.OnPointerHoverEnter:
 561                    {
 2562                        if (TryGetBaseComponent(entity, CLASS_ID_COMPONENT.UUID_ON_HOVER_ENTER, out IEntityComponent com
 563                        {
 2564                            Utils.SafeDestroy(component.GetTransform().gameObject);
 2565                            RemoveComponent(entity, CLASS_ID_COMPONENT.UUID_ON_HOVER_ENTER);
 566                        }
 567                    }
 2568                    return;
 569                case ComponentNameLiterals.OnPointerHoverExit:
 570                    {
 2571                        if (TryGetBaseComponent(entity, CLASS_ID_COMPONENT.UUID_ON_HOVER_EXIT, out IEntityComponent comp
 572                        {
 2573                            Utils.SafeDestroy(component.GetTransform().gameObject);
 2574                            RemoveComponent(entity, CLASS_ID_COMPONENT.UUID_ON_HOVER_EXIT);
 575                        }
 576                    }
 2577                    return;
 578                case "transform":
 579                    {
 0580                        if (TryGetBaseComponent(entity, CLASS_ID_COMPONENT.AVATAR_ATTACH, out IEntityComponent component
 581                        {
 0582                            component.Cleanup();
 0583                            RemoveComponent(entity, CLASS_ID_COMPONENT.AVATAR_ATTACH);
 584                        }
 585                    }
 0586                    return;
 587
 588                default:
 589                    {
 75590                        IEntityComponent component = GetComponentsDictionary(entity).FirstOrDefault(kp => kp.Value.compo
 30591                        if (component == null)
 592                            break;
 593
 15594                        RemoveComponent(entity, (CLASS_ID_COMPONENT)component.GetClassId());
 595
 15596                        if (component is ICleanable cleanableComponent)
 15597                            cleanableComponent.Cleanup();
 598
 15599                        bool released = false;
 15600                        if (component is IPoolableObjectContainer poolableContainer)
 601                        {
 13602                            if (poolableContainer.poolableObject != null)
 603                            {
 1604                                poolableContainer.poolableObject.Release();
 1605                                released = true;
 606                            }
 607                        }
 15608                        if (!released)
 609                        {
 14610                            Utils.SafeDestroy(component.GetTransform()?.gameObject);
 611                        }
 612                        break;
 613                    }
 614            }
 30615        }
 616
 617        public void DisposeAllSceneComponents()
 618        {
 967619            List<string> allDisposableComponents = disposableComponents.Select(x => x.Key).ToList();
 1934620            foreach (string id in allDisposableComponents)
 621            {
 519622                parcelScenesCleaner.MarkDisposableComponentForCleanup(scene, id);
 623            }
 448624        }
 625    }
 626}

Methods/Properties

ECSComponentsManagerLegacy(DCL.Controllers.IParcelScene, DCL.IRuntimeComponentFactory, DCL.IParcelScenesCleaner, DCL.Controllers.ISceneBoundsChecker, DCL.IPhysicsSyncController, DCL.Rendering.ICullingController)
ECSComponentsManagerLegacy(DCL.Controllers.IParcelScene)
AddSharedComponent(DCL.Models.IDCLEntity, System.Type, DCL.Components.ISharedComponent)
RemoveSharedComponent(DCL.Models.IDCLEntity, System.Type, System.Boolean)
TryGetComponent[T](DCL.Models.IDCLEntity)
TryGetBaseComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID_COMPONENT, DCL.Components.IEntityComponent&)
TryGetSharedComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID, DCL.Components.ISharedComponent&)
GetSharedComponent(DCL.Models.IDCLEntity, System.Type)
HasComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID_COMPONENT)
HasSharedComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID)
RemoveComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID_COMPONENT)
AddComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID_COMPONENT, DCL.Components.IEntityComponent)
GetComponent(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID_COMPONENT)
GetComponents()
GetSharedComponents()
GetComponentsDictionary(DCL.Models.IDCLEntity)
GetSharedComponentsDictionary(DCL.Models.IDCLEntity)
GetComponentsCount()
CleanComponents(DCL.Models.IDCLEntity)
HasSceneSharedComponent(System.String)
GetSceneSharedComponent(System.String)
TryGetSceneSharedComponent(System.String, DCL.Components.ISharedComponent&)
GetSceneSharedComponentsDictionary()
GetSceneSharedComponentsCount()
AddSceneSharedComponent(System.String, DCL.Components.ISharedComponent)
RemoveSceneSharedComponent(System.String)
SceneSharedComponentCreate(System.String, System.Int32)
GetSceneSharedComponent[T]()
SceneSharedComponentAttach(System.Int64, System.String)
EntityComponentCreateOrUpdate(System.Int64, DCL.Models.CLASS_ID_COMPONENT, System.Object)
EntityComponentUpdate(DCL.Models.IDCLEntity, DCL.Models.CLASS_ID_COMPONENT, System.String)
SceneSharedComponentDispose(System.String)
SceneSharedComponentUpdate(System.String, BaseModel)
SceneSharedComponentUpdate(System.String, System.String)
EntityComponentRemove(System.Int64, System.String)
DisposeAllSceneComponents()