ProjectDDD/Assets/Plugins/Borodar/RainbowHierarchy/Scripts/Runtime/HierarchyRule.cs
2025-07-08 19:46:31 +09:00

117 lines
3.3 KiB
C#

using System;
using UnityEngine;
namespace Borodar.RainbowHierarchy
{
[Serializable]
public class HierarchyRule
{
public KeyType Type;
public string Name;
public GameObject GameObject;
public int Ordinal;
public int Priority;
public HierarchyIcon IconType;
public Texture2D IconTexture;
public bool IsIconRecursive;
public HierarchyBackground BackgroundType;
public Texture2D BackgroundTexture;
public bool IsBackgroundRecursive;
public bool IsHidden;
//---------------------------------------------------------------------
// Ctors
//---------------------------------------------------------------------
public HierarchyRule(KeyType type, GameObject gameObject, string name)
{
Type = type;
GameObject = gameObject;
Name = name;
}
public HierarchyRule(HierarchyRule value)
{
Type = value.Type;
Name = value.Name;
GameObject = value.GameObject;
Ordinal = value.Ordinal;
Priority = value.Priority;
IconType = value.IconType;
IconTexture = value.IconTexture;
IsIconRecursive = value.IsIconRecursive;
BackgroundType = value.BackgroundType;
BackgroundTexture = value.BackgroundTexture;
IsBackgroundRecursive = value.IsBackgroundRecursive;
}
//---------------------------------------------------------------------
// Public
//---------------------------------------------------------------------
public void CopyFrom(HierarchyRule target)
{
Type = target.Type;
Name = target.Name;
GameObject = target.GameObject;
Ordinal = target.Ordinal;
Priority = target.Priority;
IconType = target.IconType;
IconTexture = target.IconTexture;
IsIconRecursive = target.IsIconRecursive;
BackgroundType = target.BackgroundType;
BackgroundTexture = target.BackgroundTexture;
IsBackgroundRecursive = target.IsBackgroundRecursive;
}
public bool HasIcon()
{
return IconType != HierarchyIcon.None && (!HasCustomIcon() || IconTexture != null);
}
public bool HasCustomIcon()
{
return IconType == HierarchyIcon.Custom;
}
public bool HasBackground()
{
return BackgroundType != HierarchyBackground.None && (!HasCustomBackground() || BackgroundTexture != null);
}
public bool HasCustomBackground()
{
return BackgroundType == HierarchyBackground.Custom;
}
public bool HasAtLeastOneTexture()
{
return HasIcon() || HasBackground();
}
public bool IsRecursive()
{
return IsIconRecursive || IsBackgroundRecursive;
}
//---------------------------------------------------------------------
// Nested
//---------------------------------------------------------------------
public enum KeyType
{
Object,
Name
}
}
}