Files
riz-au-lait-ui/Assets/ithappy/Creative_Characters_FREE/Scripts/Editor/LayerMaskUtility.cs
2025-12-10 18:51:40 +01:00

50 lines
1.5 KiB
C#

using System;
using UnityEditor;
using UnityEngine;
namespace CharacterCustomizationTool.Editor
{
public class LayerMaskUtility
{
public static void CreateLayer(string name)
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentNullException(nameof(name), "New layer name string is either null or empty.");
}
var tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
var layerProps = tagManager.FindProperty("layers");
var propCount = layerProps.arraySize;
SerializedProperty firstEmptyProp = null;
for (var i = 0; i < propCount; i++)
{
var layerProp = layerProps.GetArrayElementAtIndex(i);
var stringValue = layerProp.stringValue;
if (stringValue == name)
{
return;
}
if (i < 8 || stringValue != string.Empty)
{
continue;
}
firstEmptyProp ??= layerProp;
}
if (firstEmptyProp == null)
{
Debug.LogError("Maximum limit of " + propCount + " layers exceeded. Layer \"" + name + "\" not created.");
return;
}
firstEmptyProp.stringValue = name;
tagManager.ApplyModifiedProperties();
}
}
}