using System;
using UnityEditor.ShaderGraph.Internal;

namespace UnityEditor.ShaderGraph
{
    static class ValueUtilities
    {
        public static string ToShaderString(this ShaderValueType type, string precisionToken = PrecisionUtil.Token)
        {
            switch (type)
            {
                case ShaderValueType.Boolean:
                    return precisionToken;
                case ShaderValueType.Float:
                    return precisionToken;
                case ShaderValueType.Float2:
                    return $"{precisionToken}2";
                case ShaderValueType.Float3:
                    return $"{precisionToken}3";
                case ShaderValueType.Float4:
                    return $"{precisionToken}4";
                case ShaderValueType.Matrix2:
                    return $"{precisionToken}2x2";
                case ShaderValueType.Matrix3:
                    return $"{precisionToken}3x3";
                case ShaderValueType.Matrix4:
                    return $"{precisionToken}4x4";
                case ShaderValueType.Integer:
                    return "int";
                case ShaderValueType.Uint:
                    return "uint";
                case ShaderValueType.Uint4:
                    return "uint4";
                default:
                    return "Error";
            }
        }

        public static int GetVectorCount(this ShaderValueType type)
        {
            switch (type)
            {
                case ShaderValueType.Float:
                    return 1;
                case ShaderValueType.Float2:
                    return 2;
                case ShaderValueType.Float3:
                    return 3;
                case ShaderValueType.Float4:
                    return 4;
                default:
                    return 0;
            }
        }
    }
}