using UnityEngine;
using UnityEngine.Serialization;
namespace UnityEngine.ProBuilder
{
///
/// Store UV2 unwrapping parameters.
///
[System.Serializable]
public sealed class UnwrapParameters
{
internal const float k_HardAngle = 88f;
internal const float k_PackMargin = 20f;
internal const float k_AngleError = 8f;
internal const float k_AreaError = 15f;
[Tooltip("Angle between neighbor triangles that will generate seam.")]
[Range(1f, 180f)]
[SerializeField]
[FormerlySerializedAs("hardAngle")]
float m_HardAngle = k_HardAngle;
[Tooltip("Measured in pixels, assuming mesh will cover an entire 1024x1024 lightmap.")]
[Range(1f, 64f)]
[SerializeField]
[FormerlySerializedAs("packMargin")]
float m_PackMargin = k_PackMargin;
[Tooltip("Measured in percents. Angle error measures deviation of UV angles from geometry angles. Area error "
+ "measures deviation of UV triangles area from geometry triangles if they were uniformly scaled.")]
[Range(1f, 75f)]
[SerializeField]
[FormerlySerializedAs("angleError")]
float m_AngleError = k_AngleError;
[Range(1f, 75f)]
[SerializeField]
[FormerlySerializedAs("areaError")]
float m_AreaError = k_AreaError;
///
/// Angle between neighbor triangles that will generate seam.
///
public float hardAngle { get { return m_HardAngle; } set { m_HardAngle = value; } }
///
/// Measured in pixels, assuming mesh will cover an entire 1024x1024 lightmap.
///
public float packMargin { get { return m_PackMargin; } set { m_PackMargin = value; } }
///
/// Measured in percents. Angle error measures deviation of UV angles from geometry angles. Area error measures
/// deviation of UV triangles area from geometry triangles if they were uniformly scaled.
///
public float angleError { get { return m_AngleError; } set { m_AngleError = value; } }
///
/// Does... something.
///
public float areaError { get { return m_AreaError; } set { m_AreaError = value; } }
public UnwrapParameters()
{
Reset();
}
///
/// Copy constructor.
///
/// The UnwrapParameters to copy properties from.
public UnwrapParameters(UnwrapParameters other)
{
if (other == null)
throw new System.ArgumentNullException("other");
hardAngle = other.hardAngle;
packMargin = other.packMargin;
angleError = other.angleError;
areaError = other.areaError;
}
///
/// Reset the unwrap parameters to default values.
///
public void Reset()
{
hardAngle = k_HardAngle;
packMargin = k_PackMargin;
angleError = k_AngleError;
areaError = k_AreaError;
}
public override string ToString()
{
return string.Format("hardAngle: {0}\npackMargin: {1}\nangleError: {2}\nareaError: {3}",
hardAngle,
packMargin,
angleError,
areaError);
}
}
}