public static EquippableItem Unequip( [NotNull] this IEquipmentContainer container, [NotNull] Equipment equipment, bool dispose = true) { Ensure.Any.IsNotNull(container, nameof(container)); Ensure.Any.IsNotNull(equipment, nameof(equipment)); container.Remove(equipment); var item = equipment.CreateItem(); if (dispose) { equipment.QueueFree(); } return(item); }
public static Equipment Unequip( [NotNull] this IEquipmentContainer container, [NotNull] Equipment item, [CanBeNull] Node dropTo) { Ensure.Any.IsNotNull(container, nameof(container)); Ensure.Any.IsNotNull(item, nameof(item)); var parent = dropTo ?? item.GetTree().CurrentScene; var transform = item.GlobalTransform; container.Remove(item); item.Configuration?.Deactivate(); parent.AddChild(item); item.GlobalTransform = transform; return(item); }
public static IEquipment Unequip( this IEquipmentContainer container, IEquipment item, Option <Node> dropTo) { Ensure.That(container, nameof(container)).IsNotNull(); Ensure.That(item, nameof(item)).IsNotNull(); var parent = dropTo.IfNone(() => item.Node.GetTree().CurrentScene); Debug.Assert(parent != null, "parent != null"); var transform = item.GetGlobalTransform(); container.Remove(item); item.Configuration?.Deactivate(); parent.AddChild(item.Node); item.SetGlobalTransform(transform); return(item); }