You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
5.1 KiB
C#
124 lines
5.1 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
/// <summary> This Class is use for creating Layers and Tags </summary>
|
|
namespace MalbersAnimations
|
|
{
|
|
[InitializeOnLoad]
|
|
public class MalbersSettings : Editor
|
|
{
|
|
|
|
static MalbersSettings()
|
|
{
|
|
CreateLayer("Animal", 20);
|
|
CreateLayer("Enemy", 23);
|
|
CreateLayer("Item", 30);
|
|
CreateTag("Fly");
|
|
CreateTag("Climb");
|
|
CreateTag("Stair");
|
|
CreateInputAxe();
|
|
}
|
|
|
|
|
|
//CREATE UP DOWN AXIS
|
|
public static void CreateInputAxe()
|
|
{
|
|
var InputManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/InputManager.asset")[0]);
|
|
var axesProperty = InputManager.FindProperty("m_Axes");
|
|
|
|
AddInputAxis(axesProperty, "UpDown", "c", "space", "", "", 1000, 0.001f, 3, true, false, AxisType.KeyMouseButton, AxisNumber.X);
|
|
|
|
InputManager.ApplyModifiedProperties();
|
|
}
|
|
|
|
private static void AddInputAxis(SerializedProperty axesProperty, string name, string negativeButton, string positiveButton,
|
|
string altNegativeButton, string altPositiveButton, float gravity, float dead, float sensitivity, bool snap, bool invert, AxisType axisType, AxisNumber axisNumber)
|
|
{
|
|
var property = FindAxisProperty(axesProperty, name);
|
|
|
|
if (property == null)
|
|
{
|
|
axesProperty.InsertArrayElementAtIndex(axesProperty.arraySize);
|
|
property = axesProperty.GetArrayElementAtIndex(axesProperty.arraySize - 1);
|
|
|
|
property.FindPropertyRelative("m_Name").stringValue = name;
|
|
property.FindPropertyRelative("negativeButton").stringValue = negativeButton;
|
|
property.FindPropertyRelative("positiveButton").stringValue = positiveButton;
|
|
property.FindPropertyRelative("altNegativeButton").stringValue = altNegativeButton;
|
|
property.FindPropertyRelative("altPositiveButton").stringValue = altPositiveButton;
|
|
property.FindPropertyRelative("gravity").floatValue = gravity;
|
|
property.FindPropertyRelative("dead").floatValue = dead;
|
|
property.FindPropertyRelative("sensitivity").floatValue = sensitivity;
|
|
property.FindPropertyRelative("snap").boolValue = snap;
|
|
property.FindPropertyRelative("invert").boolValue = invert;
|
|
property.FindPropertyRelative("type").intValue = (int)axisType;
|
|
property.FindPropertyRelative("axis").intValue = (int)axisNumber;
|
|
|
|
Debug.Log($"Added Input [{name}]");
|
|
}
|
|
}
|
|
|
|
private static SerializedProperty FindAxisProperty(SerializedProperty axesProperty, string name)
|
|
{
|
|
for (int i = 0; i < axesProperty.arraySize; ++i)
|
|
{
|
|
var property = axesProperty.GetArrayElementAtIndex(i);
|
|
if (property.FindPropertyRelative("m_Name").stringValue.Equals(name))
|
|
{
|
|
return property;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
static void CreateLayer(string LayerName, int index)
|
|
{
|
|
SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
|
|
SerializedProperty layers = tagManager.FindProperty("layers");
|
|
|
|
if (layers == null || !layers.isArray)
|
|
{
|
|
Debug.LogWarning("Can't set up the layers. It's possible the format of the layers and tags data has changed in this version of Unity.");
|
|
Debug.LogWarning("Layers is null: " + (layers == null));
|
|
return;
|
|
}
|
|
|
|
if (LayerMask.GetMask(LayerName) == 0)
|
|
{
|
|
var layerEnemy = layers.GetArrayElementAtIndex(index);
|
|
|
|
if (layerEnemy.stringValue == string.Empty)
|
|
{
|
|
Debug.Log("Setting up layers. Layer " + "[" + index + "]" + " is now called " + "[" + LayerName + "]");
|
|
layerEnemy.stringValue = LayerName;
|
|
tagManager.ApplyModifiedProperties();
|
|
}
|
|
}
|
|
}
|
|
|
|
static void CreateTag(string s)
|
|
{
|
|
SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
|
|
SerializedProperty tagsProp = tagManager.FindProperty("tags");
|
|
|
|
// First check if it is not already present
|
|
bool found = false;
|
|
for (int i = 0; i < tagsProp.arraySize; i++)
|
|
{
|
|
SerializedProperty t = tagsProp.GetArrayElementAtIndex(i);
|
|
if (t.stringValue.Equals(s)) { found = true; break; }
|
|
}
|
|
|
|
// if not found, add it
|
|
if (!found)
|
|
{
|
|
tagsProp.InsertArrayElementAtIndex(0);
|
|
SerializedProperty n = tagsProp.GetArrayElementAtIndex(0);
|
|
n.stringValue = s;
|
|
Debug.Log("Tag: <B>" + s + "</B> Added");
|
|
tagManager.ApplyModifiedProperties();
|
|
}
|
|
}
|
|
}
|
|
} |