Files
Outline-Toolkit/Runtime/Scripts/Rendering/OutlineRenderObject.cs
2025-07-20 21:01:09 +08:00

65 lines
1.6 KiB
C#

// Copyright (C) 2019-2021 Alexander Bogarsukov. All rights reserved.
// See the LICENSE.md file in the project root for more information.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
namespace UnityFx.Outline
{
/// <summary>
/// A single outline object + its outline settings.
/// </summary>
public readonly struct OutlineRenderObject : IEquatable<OutlineRenderObject>
{
#region data
private readonly string _tag;
private readonly IReadOnlyList<Renderer> _renderers;
private readonly IOutlineSettings _outlineSettings;
#endregion
#region interface
/// <summary>
/// Gets the object tag name.
/// </summary>
public string Tag => _tag;
/// <summary>
/// Gets renderers for the object.
/// </summary>
public IReadOnlyList<Renderer> Renderers => _renderers;
/// <summary>
/// Gets outline settings for this object.
/// </summary>
public IOutlineSettings OutlineSettings => _outlineSettings;
/// <summary>
/// Initializes a new instance of the <see cref="OutlineRenderObject"/> struct.
/// </summary>
public OutlineRenderObject(IReadOnlyList<Renderer> renderers, IOutlineSettings outlineSettings, string tag = null)
{
_renderers = renderers;
_outlineSettings = outlineSettings;
_tag = tag;
}
#endregion
#region IEquatable
/// <inheritdoc/>
public bool Equals(OutlineRenderObject other)
{
return string.CompareOrdinal(_tag, other._tag) == 0 && _renderers == other._renderers && _outlineSettings == other._outlineSettings;
}
#endregion
}
}