You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.3 KiB
69 lines
2.3 KiB
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using UnityEngine.VFX;
|
|
|
|
namespace UnityEditor.VFX.Block
|
|
{
|
|
static class CustomAttributeUtility
|
|
{
|
|
private static readonly Regex s_NameValidationRegex = new Regex("^[A-Za-z_][A-Za-z0-9_]*$", RegexOptions.Compiled);
|
|
private static readonly Regex s_NameReplaceRegex = new Regex("[A-Za-z_][A-Za-z0-9_]*", RegexOptions.Compiled);
|
|
|
|
public enum Signature
|
|
{
|
|
Float,
|
|
Vector2,
|
|
Vector3,
|
|
Vector4,
|
|
Bool,
|
|
Uint,
|
|
Int
|
|
}
|
|
|
|
internal static VFXValueType GetValueType(Signature signature)
|
|
{
|
|
switch (signature)
|
|
{
|
|
default:
|
|
case Signature.Float: return VFXValueType.Float;
|
|
case Signature.Vector2: return VFXValueType.Float2;
|
|
case Signature.Vector3: return VFXValueType.Float3;
|
|
case Signature.Vector4: return VFXValueType.Float4;
|
|
case Signature.Int: return VFXValueType.Int32;
|
|
case Signature.Uint: return VFXValueType.Uint32;
|
|
case Signature.Bool: return VFXValueType.Boolean;
|
|
}
|
|
}
|
|
|
|
internal static Signature GetSignature(VFXValueType valueType)
|
|
{
|
|
switch (valueType)
|
|
{
|
|
default:
|
|
case VFXValueType.Float: return Signature.Float;
|
|
case VFXValueType.Float2: return Signature.Vector2;
|
|
case VFXValueType.Float3: return Signature.Vector3;
|
|
case VFXValueType.Float4: return Signature.Vector4;
|
|
case VFXValueType.Int32: return Signature.Int;
|
|
case VFXValueType.Uint32: return Signature.Uint;
|
|
case VFXValueType.Boolean: return Signature.Bool;
|
|
}
|
|
}
|
|
|
|
internal static string MakeShaderCompatibleName(string name)
|
|
{
|
|
var validName = new StringBuilder();
|
|
foreach (var match in s_NameReplaceRegex.Matches(name))
|
|
{
|
|
validName.Append(((Match)match).Value);
|
|
}
|
|
|
|
return validName.ToString();
|
|
}
|
|
|
|
internal static bool IsShaderCompilableName(string name)
|
|
{
|
|
return s_NameValidationRegex.IsMatch(name);
|
|
}
|
|
}
|
|
}
|