// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using Microsoft.MixedReality.Toolkit.Utilities;
using System;
using UnityEngine;

namespace Microsoft.MixedReality.Toolkit.Input
{
    [Serializable]
    public class AnimatedCursorStateData : AnimatedCursorData<CursorStateEnum> { }

    [Serializable]
    public class AnimatedCursorContextData : AnimatedCursorData<CursorContextEnum> { }

    /// <summary>
    /// Data struct for cursor state information for the Animated Cursor, which leverages the Unity animation system.
    /// This defines a modification to an Unity animation parameter, based on cursor state.
    /// </summary>
    [Serializable]
    public class AnimatedCursorData<T>
    {

        [SerializeField]
        [Tooltip("The name of this specific cursor state.")]
        protected string name;

        /// <summary>
        /// The name of this specific cursor state.
        /// </summary>
        public string Name => name;

        [SerializeField]
        [Tooltip("The Cursor State for this specific animation.")]
        protected T cursorState;

        /// <summary>
        /// The Cursor State for this specific animation.
        /// </summary>
        public T CursorState => cursorState;

        [SerializeField]
        [Tooltip("Animator parameter definition for this cursor state.")]
        protected AnimatorParameter parameter;

        /// <summary>
        /// Animator parameter definition for this cursor state.
        /// </summary>
        public AnimatorParameter Parameter => parameter;
    }
}