/// <summary>
        /// Initialize any starting values.
        /// </summary>
        protected override void OnEnable()
        {
            base.OnEnable();

            m_UsableItem = target as UsableItem;
            m_Item       = m_UsableItem.GetComponent <Item>();
            m_UsableItem.UseAnimatorAudioStateSet.DeserializeAnimatorAudioStateSelector(m_Item, m_Item.GetComponentInParent <UltimateCharacterController.Character.UltimateCharacterLocomotion>());
            m_AttributeManager = m_UsableItem.GetComponent <AttributeManager>();
            var character = m_UsableItem.GetComponentInParent <UltimateCharacterController.Character.UltimateCharacterLocomotion>();

            if (character != null)
            {
                m_CharacterAttributeManager = character.GetComponent <AttributeManager>();
            }

            // After an undo or redo has been performed the animator audio state states need to be deserialized.
            Undo.undoRedoPerformed += OnUndoRedo;
        }