< 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    {
 54115        private readonly Dictionary<string, ISharedComponent> disposableComponents = new Dictionary<string, ISharedCompo
 16
 54117        private readonly Dictionary<long, Dictionary<Type, ISharedComponent>> entitiesSharedComponents =
 18            new Dictionary<long, Dictionary<Type, ISharedComponent>>();
 19
 54120        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)
 54133            : this(scene,
 34                Environment.i.world.componentFactory,
 35                Environment.i.platform.parcelScenesCleaner,
 36                Environment.i.world.sceneBoundsChecker,
 37                Environment.i.platform.physicsSyncController,
 54138                Environment.i.platform.cullingController) { }
 39
 54140        public ECSComponentsManagerLegacy(IParcelScene scene,
 41            IRuntimeComponentFactory componentFactory,
 42            IParcelScenesCleaner parcelScenesCleaner,
 43            ISceneBoundsChecker sceneBoundsChecker,
 44            IPhysicsSyncController physicsSyncController,
 45            ICullingController cullingController)
 46        {
 54147            this.scene = scene;
 54148            this.componentFactory = componentFactory;
 54149            this.parcelScenesCleaner = parcelScenesCleaner;
 54150            this.sceneBoundsChecker = sceneBoundsChecker;
 54151            this.physicsSyncController = physicsSyncController;
 54152            this.cullingController = cullingController;
 54153        }
 54
 55        public void AddSharedComponent(IDCLEntity entity, Type componentType, ISharedComponent component)
 56        {
 46557            if (component == null)
 58            {
 059                return;
 60            }
 61
 46562            RemoveSharedComponent(entity, componentType);
 63
 46564            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 65            {
 33766                entityComponents = new Dictionary<Type, ISharedComponent>();
 33767                entitiesSharedComponents.Add(entity.entityId, entityComponents);
 68            }
 69
 46570            entityComponents.Add(componentType, component);
 46571        }
 72
 73        public void RemoveSharedComponent(IDCLEntity entity, Type targetType, bool triggerDetaching = true)
 74        {
 93475            if (!entitiesSharedComponents.TryGetValue(entity.entityId, out Dictionary<Type, ISharedComponent> entityComp
 76            {
 36377                return;
 78            }
 57179            if (!entityComponents.TryGetValue(targetType, out ISharedComponent component))
 80            {
 17581                return;
 82            }
 39683            if (component == null)
 084                return;
 85
 39686            entityComponents.Remove(targetType);
 87
 39688            if (entityComponents.Count == 0)
 89            {
 27590                entitiesSharedComponents.Remove(entity.entityId);
 91            }
 92
 39693            if (triggerDetaching)
 3194                component.DetachFrom(entity, targetType);
 39695        }
 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        {
 283121            if (entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> ent
 122            {
 71123                return entityComponents.TryGetValue(componentId, out component);
 124            }
 212125            component = null;
 212126            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        {
 776169            if (entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> ent
 170            {
 415171                return entityComponents.ContainsKey(componentId);
 172            }
 361173            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        {
 343200            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 201            {
 296202                entityComponents = new Dictionary<CLASS_ID_COMPONENT, IEntityComponent>();
 296203                entitiesComponents.Add(entity.entityId, entityComponents);
 204
 296205                entity.OnBaseComponentAdded?.Invoke(componentId, entity);
 206            }
 343207            entityComponents.Add(componentId, component);
 343208        }
 209
 210        public IEntityComponent GetComponent(IDCLEntity entity, CLASS_ID_COMPONENT componentId)
 211        {
 103212            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 213            {
 0214                return null;
 215            }
 103216            if (entityComponents.TryGetValue(componentId, out IEntityComponent component))
 217            {
 103218                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        {
 534282            if (!entitiesComponents.TryGetValue(entity.entityId, out Dictionary<CLASS_ID_COMPONENT, IEntityComponent> en
 283            {
 322284                return;
 285            }
 286
 212287            using (var iterator = entityComponents.GetEnumerator())
 288            {
 442289                while (iterator.MoveNext())
 290                {
 230291                    if (iterator.Current.Value == null)
 292                        continue;
 293
 230294                    if (iterator.Current.Value is ICleanable cleanableComponent)
 230295                        cleanableComponent.Cleanup();
 296
 230297                    if (!(iterator.Current.Value is IPoolableObjectContainer poolableContainer))
 298                        continue;
 299
 51300                    if (poolableContainer.poolableObject == null)
 301                        continue;
 302
 4303                    poolableContainer.poolableObject.Release();
 304                }
 212305            }
 212306            entitiesComponents.Remove(entity.entityId);
 212307        }
 308
 309        public bool HasSceneSharedComponent(string component)
 310        {
 189311            return disposableComponents.ContainsKey(component);
 312        }
 313
 314        public ISharedComponent GetSceneSharedComponent(string component)
 315        {
 813316            disposableComponents.TryGetValue(component, out ISharedComponent sharedComponent);
 813317            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        {
 500332            return disposableComponents.Count;
 333        }
 334
 335        public void AddSceneSharedComponent(string component, ISharedComponent sharedComponent)
 336        {
 651337            disposableComponents.Add(component, sharedComponent);
 651338            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        {
 651348            if (disposableComponents.TryGetValue(id, out ISharedComponent component))
 4349                return component;
 350
 647351            IRuntimeComponentFactory factory = componentFactory;
 352
 647353            if (factory.createConditions.ContainsKey(classId))
 354            {
 44355                if (!factory.createConditions[(int)classId].Invoke(scene.sceneData.id, classId))
 0356                    return null;
 357            }
 358
 647359            ISharedComponent newComponent = componentFactory.CreateComponent(classId) as ISharedComponent;
 360
 647361            if (newComponent == null)
 0362                return null;
 363
 647364            AddSceneSharedComponent(id, newComponent);
 365
 647366            newComponent.Initialize(scene, id);
 367
 647368            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        {
 469381            IDCLEntity entity = scene.GetEntityById(entityId);
 382
 469383            if (entity == null)
 2384                return;
 385
 467386            if (disposableComponents.TryGetValue(componentId, out ISharedComponent sharedComponent))
 387            {
 465388                sharedComponent.AttachTo(entity);
 389            }
 467390        }
 391
 392        public IEntityComponent EntityComponentCreateOrUpdate(long entityId, CLASS_ID_COMPONENT classId, object data)
 393        {
 419394            IDCLEntity entity = scene.GetEntityById(entityId);
 395
 419396            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
 419402            IEntityComponent targetComponent = null;
 403
 419404            var overrideCreate = Environment.i.world.componentFactory.createOverrides;
 405
 419406            if (overrideCreate.ContainsKey((int)classId))
 407            {
 344408                int classIdAsInt = (int)classId;
 344409                overrideCreate[(int)classId].Invoke(scene.sceneData.id, entityId, ref classIdAsInt, data);
 344410                classId = (CLASS_ID_COMPONENT)classIdAsInt;
 411            }
 412
 419413            if (!HasComponent(entity, classId))
 414            {
 342415                targetComponent = componentFactory.CreateComponent((int) classId) as IEntityComponent;
 416
 342417                if (targetComponent != null)
 418                {
 342419                    AddComponent(entity, classId, targetComponent);
 420
 342421                    targetComponent.Initialize(scene, entity);
 422
 342423                    if (data is string json)
 307424                        targetComponent.UpdateFromJSON(json);
 425                    else
 35426                        targetComponent.UpdateFromModel(data as BaseModel);
 427                }
 35428            }
 429            else
 430            {
 77431                targetComponent = EntityComponentUpdate(entity, classId, data as string);
 432            }
 433
 419434            if (targetComponent != null && targetComponent is IOutOfSceneBoundariesHandler)
 349435                sceneBoundsChecker?.AddEntityToBeChecked(entity, runPreliminaryEvaluation: classId == CLASS_ID_COMPONENT
 436
 419437            physicsSyncController.MarkDirty();
 419438            cullingController.MarkDirty();
 439
 419440            return targetComponent;
 441        }
 442
 443        public IEntityComponent EntityComponentUpdate(IDCLEntity entity, CLASS_ID_COMPONENT classId,
 444            string componentJson)
 445        {
 101446            if (entity == null)
 447            {
 0448                Debug.LogError($"Can't update the {classId} component of a nonexistent entity!", scene.GetSceneTransform
 0449                return null;
 450            }
 451
 101452            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
 101458            var targetComponent = GetComponent(entity, classId);
 101459            targetComponent.UpdateFromJSON(componentJson);
 460
 101461            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        {
 702495            if (disposableComponents.TryGetValue(id, out ISharedComponent disposableComponent))
 496            {
 702497                disposableComponent.UpdateFromJSON(json);
 702498                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        {
 961619            List<string> allDisposableComponents = disposableComponents.Select(x => x.Key).ToList();
 1922620            foreach (string id in allDisposableComponents)
 621            {
 516622                parcelScenesCleaner.MarkDisposableComponentForCleanup(scene, id);
 623            }
 445624        }
 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()