void SwapItems(ItemSlot slot1, ItemSlot slot2) { bool isSwappingBaseWeapon = false; if(slot1.GetType() == typeof(BaseWeaponSlot)) {//swapping out the base weapon if(!checkBaseWeaponMounts(slot2.getItem()) || slot2.getItem().BaseWeapon == null) { m_ItemBeingDragged.DraggedToPos = m_ItemBeingDragged.MountedTo.i_MountPoint.position; m_ItemBeingDragged = null; return; } m_ItemBeingDragged.IsBeingDragged = false; isSwappingBaseWeapon = true; } else if (slot2.GetType() == typeof(BaseWeaponSlot)) {//swapping out the base weapon if (!checkBaseWeaponMounts(slot1.getItem()) || slot1.getItem().BaseWeapon == null) { m_ItemBeingDragged.DraggedToPos = m_ItemBeingDragged.MountedTo.i_MountPoint.position; m_ItemBeingDragged.IsBeingDragged = false; m_ItemBeingDragged = null; return; } Item TempItem = slot2.OnDisMount(); slot2.OnMount(slot1.OnDisMount()); slot1.OnMount(TempItem); slot1.getItem().DraggedToPos = slot1.getItem().MountedTo.i_MountPoint.position; slot2.getItem().DraggedToPos = slot2.getItem().MountedTo.i_MountPoint.position; m_ItemBeingDragged = null; CraftingMenu.Instance.ReAttachAllAttachments(); return; } else if(slot1.GetType() == typeof(AttachmentSlot) && slot2.GetType() == typeof(AttachmentSlot)) {//swapping two items that are already on the weapon CraftingMenu.Instance.SwapItems(slot1, slot2); slot1.getItem().DraggedToPos = slot1.getItem().MountedTo.i_MountPoint.position; slot2.getItem().DraggedToPos = slot2.getItem().MountedTo.i_MountPoint.position; m_ItemBeingDragged = null; m_ItemBeingDragged.IsBeingDragged = false; return; } Item tempItem = slot1.OnDisMount(); slot1.OnMount(slot2.OnDisMount()); slot2.OnMount(tempItem); slot1.getItem().DraggedToPos = slot1.getItem().MountedTo.i_MountPoint.position; slot2.getItem().DraggedToPos = slot2.getItem().MountedTo.i_MountPoint.position; m_ItemBeingDragged = null; if(isSwappingBaseWeapon) {//since base weapon was swapped we need to make sure the correct attachment slots are open / being used CraftingMenu.Instance.ReAttachAllAttachments(); } }