private void Clear() { Post(new EntityDisposed(this)); MonoBehaviourToEntity.Unregister(this); EntityController.FinishDeleteEntity(this); Id = -1; Name = "Destroyed"; ClearParent(); Tr = null; _eventHub.Clear(); Tags.Clear(); Stats.Clear(); }
public void Store(Entity entity) { MonoBehaviourToEntity.Unregister(entity); entity.Remove <RigidbodyComponent>(); entity.Get <ModelComponent>().Model = null; if (_poolDict.TryGetValue(entity.Get <TypeId>().Id, out var stack)) { if (!stack.IsFull) { entity.Pooled = true; entity.ClearParent(); entity.Stats.ClearMods(); stack.Add(entity); return; } } entity.Destroy(); }
public void Handle(EquipmentChanged arg) { if (!_onlyActiveWhileEquipped) { return; } if (arg.Owner == null && _loadedComponents.Count > 0) { var entity = this.GetEntity(); MonoBehaviourToEntity.Unregister(entity); for (int i = 0; i < _loadedComponents.Count; i++) { entity.Remove(_loadedComponents[i]); } _loadedComponents.Clear(); _loadedModel = null; } else if (arg.Owner != null && _loadedModel == null) { SpawnModel(arg.Slot.EquipTr); } }