private void OnParentingRequestEvent(ParentingRequest parentingRequest) { var entityTo = parentingRequest.EntityTo; var mover = parentingRequest.Mover; if (entityTo != null && !entityTo.HasState <InventoryState>()) { Debug.LogError("Target exists but does not have an inventory."); } if (mover != null && (entityTo == null || entityTo.GetState <InventoryState>().Child == null)) { var moverHierarchy = mover.GetState <InventoryState>(); if (mover.GetState <InventoryState>().Parent != null) { var fromInventoryState = mover.GetState <InventoryState>().Parent.GetState <InventoryState>(); fromInventoryState.RemoveChild(); } if (entityTo != null) { entityTo.GetState <InventoryState>().SetChild(mover); } moverHierarchy.SetParent(entityTo); EventSystem.ParentingRequestSucceeded.Invoke(parentingRequest); } }
private void OnInventoryEvent(ParentingRequest parentingRequest) { if (parentingRequest.EntityTo != null) { if (parentingRequest.EntityTo.HasState <VisibleSlotState>()) { MoveChildIntoVisibleSlot(parentingRequest.EntityTo, parentingRequest.Mover.GameObject); } else { MoveChildOutOfView(parentingRequest.Mover.GameObject); } } if (parentingRequest.EntityTo == null) { parentingRequest.Mover.GameObject.transform.parent = entitiesRootTransform; } }