public override void Update(float deltaTime, bool subInventory = false) { base.Update(deltaTime); if (doubleClickedItem != null) { if (doubleClickedItem.ParentInventory != this) { TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); } else { if (character.SelectedConstruction != null) { var selectedContainer = character.SelectedConstruction.GetComponent <ItemContainer>(); if (selectedContainer != null && selectedContainer.Inventory != null) { selectedContainer.Inventory.TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); } } else if (character.SelectedCharacter != null && character.SelectedCharacter.Inventory != null) { character.SelectedCharacter.Inventory.TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); } else //doubleclicked and no other inventory is selected { //not equipped -> attempt to equip if (IsInLimbSlot(doubleClickedItem, InvSlotType.Any)) { TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots.FindAll(i => i != InvSlotType.Any), true); } //equipped -> attempt to unequip else if (doubleClickedItem.AllowedSlots.Contains(InvSlotType.Any)) { TryPutItem(doubleClickedItem, new List <InvSlotType>() { InvSlotType.Any }, true); } } } } if (selectedSlot > -1) { UpdateSubInventory(deltaTime, selectedSlot); } if (character == Character.Controlled) { for (int i = 0; i < capacity; i++) { if (selectedSlot != i && Items[i] != null && Items[i].CanUseOnSelf && character.HasSelectedItem(Items[i])) { //-3 because selected items are in slots 3 and 4 (hands) useOnSelfButton[i - 3].Update(deltaTime); } } } //cancel dragging if too far away from the container of the dragged item if (draggingItem != null) { var rootContainer = draggingItem.GetRootContainer(); var rootInventory = draggingItem.ParentInventory; if (rootContainer != null) { rootInventory = rootContainer.ParentInventory != null ? rootContainer.ParentInventory : rootContainer.GetComponent <Items.Components.ItemContainer>().Inventory; } if (rootInventory != null && rootInventory.Owner != Character.Controlled && rootInventory.Owner != Character.Controlled.SelectedConstruction && rootInventory.Owner != Character.Controlled.SelectedCharacter) { draggingItem = null; } } doubleClickedItem = null; }