95 lines
3.1 KiB
C#
95 lines
3.1 KiB
C#
using System;
|
|
using System.Text;
|
|
using Object = UnityEngine.Object;
|
|
|
|
namespace UnityEngine
|
|
{
|
|
/// <summary>
|
|
/// Used to restrict an AssetReference field or property to only allow items wil specific labels. This is only enforced through the UI.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
|
|
public class AssetReferenceUIRestriction : Attribute
|
|
{
|
|
/// <summary>
|
|
/// Validates that the referenced asset allowable for this asset reference.
|
|
/// </summary>
|
|
/// <param name="obj">The Object to validate.</param>
|
|
/// <returns>Whether the referenced asset is valid.</returns>
|
|
public virtual bool ValidateAsset(Object obj)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Validates that the referenced asset allowable for this asset reference.
|
|
/// </summary>
|
|
/// <param name="path">The path to the asset in question.</param>
|
|
/// <returns>Whether the referenced asset is valid.</returns>
|
|
public virtual bool ValidateAsset(string path)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Used to restrict an AssetReference field or property to only allow items wil specific labels. This is only enforced through the UI.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
|
|
public sealed class AssetReferenceUILabelRestriction : AssetReferenceUIRestriction
|
|
{
|
|
/// <summary>
|
|
/// Stores the labels allowed for the AssetReference.
|
|
/// </summary>
|
|
public string[] m_AllowedLabels;
|
|
|
|
/// <summary>
|
|
/// Stores the allowed labels formatted as a string.
|
|
/// </summary>
|
|
public string m_CachedToString;
|
|
|
|
/// <summary>
|
|
/// Creates a new AssetReferenceUILabelRestriction object.
|
|
/// </summary>
|
|
/// <param name="allowedLabels">The labels allowed for the AssetReference.</param>
|
|
public AssetReferenceUILabelRestriction(params string[] allowedLabels)
|
|
{
|
|
m_AllowedLabels = allowedLabels;
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public override bool ValidateAsset(Object obj)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public override bool ValidateAsset(string path)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Converts the information about the allowed labels to a formatted string.
|
|
/// </summary>
|
|
/// <returns>Returns information about the allowed labels as a string.</returns>
|
|
public override string ToString()
|
|
{
|
|
if (m_CachedToString == null)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
bool first = true;
|
|
foreach (var t in m_AllowedLabels)
|
|
{
|
|
if (!first)
|
|
sb.Append(',');
|
|
first = false;
|
|
sb.Append(t);
|
|
}
|
|
|
|
m_CachedToString = sb.ToString();
|
|
}
|
|
|
|
return m_CachedToString;
|
|
}
|
|
}
|
|
}
|