Namespace: GGG.Equipment
MonoBehaviour host for an EquipmentLoadout. This component exposes equipment state to scenes and prefabs without introducing inventory, combat, input, or presentation dependencies.
public sealed class EquipmentController : MonoBehaviour, IEquipment
Inheritance
object ← Object ← Component ← Behaviour ← MonoBehaviour ← EquipmentController
Implements
Inherited Members
MonoBehaviour.IsInvoking(), MonoBehaviour.CancelInvoke(), MonoBehaviour.Invoke(string, float), MonoBehaviour.InvokeRepeating(string, float, float), MonoBehaviour.CancelInvoke(string), MonoBehaviour.IsInvoking(string), MonoBehaviour.StartCoroutine(string), MonoBehaviour.StartCoroutine(string, object), MonoBehaviour.StartCoroutine(IEnumerator), MonoBehaviour.StartCoroutine_Auto(IEnumerator), MonoBehaviour.StopCoroutine(IEnumerator), MonoBehaviour.StopCoroutine(Coroutine), MonoBehaviour.StopCoroutine(string), MonoBehaviour.StopAllCoroutines(), MonoBehaviour.print(object), MonoBehaviour.destroyCancellationToken, MonoBehaviour.useGUILayout, MonoBehaviour.didStart, MonoBehaviour.didAwake, MonoBehaviour.runInEditMode, Behaviour.enabled, Behaviour.isActiveAndEnabled, Component.GetComponent(Type), Component.GetComponent<T>(), Component.TryGetComponent(Type, out Component), Component.TryGetComponent<T>(out T), Component.GetComponent(string), Component.GetComponentInChildren(Type, bool), Component.GetComponentInChildren(Type), Component.GetComponentInChildren<T>(bool), Component.GetComponentInChildren<T>(), Component.GetComponentsInChildren(Type, bool), Component.GetComponentsInChildren(Type), Component.GetComponentsInChildren<T>(bool), Component.GetComponentsInChildren<T>(bool, List<T>), Component.GetComponentsInChildren<T>(), Component.GetComponentsInChildren<T>(List<T>), Component.GetComponentInParent(Type, bool), Component.GetComponentInParent(Type), Component.GetComponentInParent<T>(bool), Component.GetComponentInParent<T>(), Component.GetComponentsInParent(Type, bool), Component.GetComponentsInParent(Type), Component.GetComponentsInParent<T>(bool), Component.GetComponentsInParent<T>(bool, List<T>), Component.GetComponentsInParent<T>(), Component.GetComponents(Type), Component.GetComponents(Type, List<Component>), Component.GetComponents<T>(List<T>), Component.GetComponents<T>(), Component.GetComponentIndex(), Component.CompareTag(string), Component.CompareTag(TagHandle), Component.SendMessageUpwards(string, object, SendMessageOptions), Component.SendMessageUpwards(string, object), Component.SendMessageUpwards(string), Component.SendMessageUpwards(string, SendMessageOptions), Component.SendMessage(string, object), Component.SendMessage(string), Component.SendMessage(string, object, SendMessageOptions), Component.SendMessage(string, SendMessageOptions), Component.BroadcastMessage(string, object, SendMessageOptions), Component.BroadcastMessage(string, object), Component.BroadcastMessage(string), Component.BroadcastMessage(string, SendMessageOptions), Component.transform, Component.transformHandle, Component.gameObject, Component.tag, Object.GetEntityId(), Object.GetInstanceID(), Object.GetHashCode(), Object.Equals(object), Object.InstantiateAsync<T>(T), Object.InstantiateAsync<T>(T, Transform), Object.InstantiateAsync<T>(T, Vector3, Quaternion), Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion), Object.InstantiateAsync<T>(T, int), Object.InstantiateAsync<T>(T, int, Transform), Object.InstantiateAsync<T>(T, int, Vector3, Quaternion), Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>), Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion), Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion, CancellationToken), Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>), Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, CancellationToken), Object.InstantiateAsync<T>(T, InstantiateParameters, CancellationToken), Object.InstantiateAsync<T>(T, int, InstantiateParameters, CancellationToken), Object.InstantiateAsync<T>(T, Vector3, Quaternion, InstantiateParameters, CancellationToken), Object.InstantiateAsync<T>(T, int, Vector3, Quaternion, InstantiateParameters, CancellationToken), Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, InstantiateParameters, CancellationToken), Object.Instantiate(Object, Vector3, Quaternion), Object.Instantiate(Object, Vector3, Quaternion, Transform), Object.Instantiate(Object), Object.Instantiate(Object, Scene), Object.Instantiate<T>(T, InstantiateParameters), Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters), Object.Instantiate(Object, Transform), Object.Instantiate(Object, Transform, bool), Object.Instantiate<T>(T), Object.Instantiate<T>(T, Vector3, Quaternion), Object.Instantiate<T>(T, Vector3, Quaternion, Transform), Object.Instantiate<T>(T, Transform), Object.Instantiate<T>(T, Transform, bool), Object.Destroy(Object, float), Object.Destroy(Object), Object.DestroyImmediate(Object, bool), Object.DestroyImmediate(Object), Object.FindObjectsOfType(Type), Object.FindObjectsOfType(Type, bool), Object.FindObjectsByType(Type, FindObjectsSortMode), Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode), Object.FindObjectsByType(Type), Object.FindObjectsByType(Type, FindObjectsInactive), Object.DontDestroyOnLoad(Object), Object.DestroyObject(Object, float), Object.DestroyObject(Object), Object.FindSceneObjectsOfType(Type), Object.FindObjectsOfTypeIncludingAssets(Type), Object.FindObjectsOfType<T>(), Object.FindObjectsByType<T>(FindObjectsSortMode), Object.FindObjectsOfType<T>(bool), Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode), Object.FindObjectOfType<T>(), Object.FindObjectOfType<T>(bool), Object.FindFirstObjectByType<T>(), Object.FindAnyObjectByType<T>(), Object.FindFirstObjectByType<T>(FindObjectsInactive), Object.FindAnyObjectByType<T>(FindObjectsInactive), Object.FindObjectsByType<T>(), Object.FindObjectsByType<T>(FindObjectsInactive), Object.FindObjectsOfTypeAll(Type), Object.FindObjectOfType(Type), Object.FindFirstObjectByType(Type), Object.FindAnyObjectByType(Type), Object.FindObjectOfType(Type, bool), Object.FindFirstObjectByType(Type, FindObjectsInactive), Object.FindAnyObjectByType(Type, FindObjectsInactive), Object.ToString(), Object.name, Object.hideFlags, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString()
Properties
IsInitialized
Gets whether the controller has initialized its runtime state.
public bool IsInitialized { get; }
Property Value
LoadoutDefinition
Gets the loadout definition used by this component.
public EquipmentLoadoutDefinition LoadoutDefinition { get; }
Property Value
Slots
Gets the runtime slots in their configured order.
public IReadOnlyList<EquipmentSlot> Slots { get; }
Property Value
Methods
CanEquip(ItemInstance, EquipmentSlotDefinition)
Determines whether the item can occupy the specified equipment slot.
public bool CanEquip(ItemInstance item, EquipmentSlotDefinition slotDefinition)
Parameters
item ItemInstance
The runtime item instance to inspect or modify.
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
Returns
Whether the specified condition is satisfied.
Clear()
Clears the contents displayed or stored by this component.
public void Clear()
ContainsSlot(EquipmentSlotDefinition)
Determines whether the loadout contains the requested slot definition.
public bool ContainsSlot(EquipmentSlotDefinition slotDefinition)
Parameters
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
Returns
Whether the specified condition is satisfied.
Initialize()
Initializes the component runtime state if it has not been initialized.
public void Initialize()
IsEquipped(ItemInstance)
Determines whether the specified item is currently equipped.
public bool IsEquipped(ItemInstance item)
Parameters
item ItemInstance
The runtime item instance to inspect or modify.
Returns
Whether the specified condition is satisfied.
TryClear(out IReadOnlyList<ItemInstance>)
Attempts to clear all occupied slots, returning removed items.
public bool TryClear(out IReadOnlyList<ItemInstance> unequippedItems)
Parameters
unequippedItems IReadOnlyList<ItemInstance>
Receives items unequipped by the operation.
Returns
Whether the operation succeeded.
TryEquip(ItemInstance, EquipmentSlotDefinition, out ItemInstance)
Attempts to equip an item in the specified slot.
public bool TryEquip(ItemInstance item, EquipmentSlotDefinition slotDefinition, out ItemInstance replacedItem)
Parameters
item ItemInstance
The runtime item instance to inspect or modify.
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
replacedItem ItemInstance
Receives an item displaced from the equipment slot, if any.
Returns
Whether the operation succeeded.
TryEquip(ItemInstance, EquipmentSlotDefinition)
Attempts to equip an item in the specified slot.
public bool TryEquip(ItemInstance item, EquipmentSlotDefinition slotDefinition)
Parameters
item ItemInstance
The runtime item instance to inspect or modify.
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
Returns
Whether the operation succeeded.
TryGetEquippedItem(EquipmentSlotDefinition, out ItemInstance)
Attempts to find the item equipped in the specified slot.
public bool TryGetEquippedItem(EquipmentSlotDefinition slotDefinition, out ItemInstance item)
Parameters
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
item ItemInstance
Receives the resulting item when successful.
Returns
Whether the operation succeeded.
TryGetSlot(EquipmentSlotDefinition, out EquipmentSlot)
Attempts to find the specified runtime slot.
public bool TryGetSlot(EquipmentSlotDefinition slotDefinition, out EquipmentSlot slot)
Parameters
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
slot EquipmentSlot
Receives the matching runtime slot when found.
Returns
Whether the operation succeeded.
TryGetSlot(string, out EquipmentSlot)
Attempts to find the specified runtime slot.
public bool TryGetSlot(string slotId, out EquipmentSlot slot)
Parameters
slotId string
The identifier of the equipment slot.
slot EquipmentSlot
Receives the matching runtime slot when found.
Returns
Whether the operation succeeded.
TryUnequip(EquipmentSlotDefinition, out ItemInstance)
Attempts to remove the equipped item from the specified slot.
public bool TryUnequip(EquipmentSlotDefinition slotDefinition, out ItemInstance unequippedItem)
Parameters
slotDefinition EquipmentSlotDefinition
The equipment slot definition to inspect or use.
unequippedItem ItemInstance
Receives the previously equipped item when successful.
Returns
Whether the operation succeeded.
Changed
Raised when the underlying runtime state changes.
public event Action<EquipmentChange> Changed