> ## Documentation Index
> Fetch the complete documentation index at: https://docs.warpathstudios.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Creating Equipment Slots

> UMI provides preset slot configurations for common setups:

### **Slot Definition Structure**

```
struct FEquipmentSlotDefinition
{
    FText SlotName;                          // "Helmet", "Main Hand", etc.
    FGameplayTag RequiredTag;                 // Equipment.Slot.Head
    USkeletalMeshComponent* MeshComponent;    // Visual component
    bool bHidesBaseMesh;                      // Hide base mesh parts
    TArray<FName> BaseMeshPartsToHide;        // Specific parts to hide
    int32 SlotIndex;                          // Corresponding inventory slot
    TSoftObjectPtr<UTexture2D> SlotIcon;      // UI icon
    FText SlotTooltip;                        // UI tooltip
};
```

### **Preset Configurations**

UMI provides preset slot configurations for common setups:

**Standard Armor Slots**

```
// Blueprint or C++
EquipmentComponent->SetupStandardArmorSlots();
```

Creates slots for:

* **Head** (Equipment.Slot.Head)
* **Chest** (Equipment.Slot.Chest)
* **Legs** (Equipment.Slot.Legs)
* **Feet** (Equipment.Slot.Feet)
* **Hands** (Equipment.Slot.Hands)

**Jewelry Slots**

```
EquipmentComponent->SetupJewelrySlots();
```

Creates slots for:

* **Ring 1** (Equipment.Slot.Ring1)
* **Ring 2** (Equipment.Slot.Ring2)
* **Necklace** (Equipment.Slot.Necklace)
* **Earrings** (Equipment.Slot.Earrings)

**Weapon Slots**

```
EquipmentComponent->SetupWeaponSlots();
```

Creates slots for:

* **Main Hand** (Equipment.Slot.MainHand)
* **Off Hand** (Equipment.Slot.OffHand)

**Clothing Slots**

```
EquipmentComponent->SetupClothingSlots();
```

Creates slots for:

* **Hat** (Equipment.Slot.Hat)
* **Shirt** (Equipment.Slot.Shirt)
* **Pants** (Equipment.Slot.Pants)
* **Shoes** (Equipment.Slot.Shoes)
* **Cloak** (Equipment.Slot.Cloak)

### **Custom Slot Configuration**

**Blueprint Setup**:

1. Add `EquipmentComponent` to your character
2. In Details panel, expand **Equipment Slots** array
3. Add a new slot:

   ```
   [0]:
      Slot Name: "Helmet"
      Required Tag: Equipment.Slot.Head
      Mesh Component: [Reference to Head_Mesh component]
      Hides Base Mesh: true
      Base Mesh Parts To Hide: [Hair, Head]
      Slot Index: 0
      Slot Icon: T_Helmet_Icon
      Slot Tooltip: "Protects your head"
   ```

**C++ Setup**:

```
FEquipmentSlotDefinition HelmetSlot;
HelmetSlot.SlotName = FText::FromString("Helmet");
HelmetSlot.RequiredTag = FGameplayTag::RequestGameplayTag("Equipment.Slot.Head");
HelmetSlot.MeshComponent = HeadMeshComponent;
HelmetSlot.bHidesBaseMesh = true;
HelmetSlot.BaseMeshPartsToHide.Add("Hair");
HelmetSlot.BaseMeshPartsToHide.Add("Head");
HelmetSlot.SlotIndex = 0;

EquipmentComponent->EquipmentSlots.Add(HelmetSlot);
```

## Runtime Slot Management

Slots can also be added, removed, or cleared at runtime:

```
// Add or update a slot

EquipmentComponent->AddEquipmentSlot(SlotDefinition);
```

```
// Remove a slot (unequips item in slot first)

EquipmentComponent->RemoveEquipmentSlot(SlotIndex);
```

```
// Remove all slot definitions
EquipmentComponent->ClearEquipmentSlots();
```
