コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }