93 lines
No EOL
2.5 KiB
C#
93 lines
No EOL
2.5 KiB
C#
using System.Collections.Generic;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using static UnityEngine.GraphicsBuffer;
|
|
|
|
namespace GanzSe
|
|
{
|
|
public class ModularHeroController : MonoBehaviour
|
|
{
|
|
[Header("Armor Parts")]
|
|
public Transform armorPartsRoot;
|
|
|
|
[Header("Face Details Parts")]
|
|
public Transform facePartsRoot;
|
|
|
|
[Header("Toggle Helmet")]
|
|
public bool showHelmet = true;
|
|
|
|
public void RandomizeArmorParts()
|
|
{
|
|
if (armorPartsRoot == null) return;
|
|
foreach (Transform category in armorPartsRoot)
|
|
{
|
|
SetRandomActiveChild(category);
|
|
}
|
|
}
|
|
|
|
public void RandomizeFaceParts()
|
|
{
|
|
if (facePartsRoot == null) return;
|
|
foreach (Transform category in facePartsRoot)
|
|
{
|
|
SetRandomActiveChild(category);
|
|
}
|
|
}
|
|
|
|
public void ToggleHelmet()
|
|
{
|
|
Transform heads = armorPartsRoot.Find("HEADS");
|
|
Transform faceParent = facePartsRoot;
|
|
|
|
if (heads == null || faceParent == null) return;
|
|
|
|
heads.gameObject.SetActive(showHelmet);
|
|
faceParent.gameObject.SetActive(!showHelmet);
|
|
}
|
|
|
|
private void SetRandomActiveChild(Transform category)
|
|
{
|
|
if (category.childCount == 0) return;
|
|
|
|
foreach (Transform child in category)
|
|
{
|
|
child.gameObject.SetActive(false);
|
|
}
|
|
|
|
int rand = Random.Range(0, category.childCount);
|
|
category.GetChild(rand).gameObject.SetActive(true);
|
|
}
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
[CustomEditor(typeof(ModularHeroController))]
|
|
public class ModularCharacterEditor : Editor
|
|
{
|
|
public override void OnInspectorGUI()
|
|
{
|
|
DrawDefaultInspector();
|
|
|
|
ModularHeroController controller = (ModularHeroController)target;
|
|
|
|
GUILayout.Space(10);
|
|
GUILayout.Label("Editor Controls", EditorStyles.boldLabel);
|
|
|
|
if (GUILayout.Button("Randomize Armor Parts"))
|
|
{
|
|
controller.RandomizeArmorParts();
|
|
}
|
|
|
|
if (GUILayout.Button("Randomize Face Parts"))
|
|
{
|
|
controller.RandomizeFaceParts();
|
|
}
|
|
|
|
if (GUILayout.Button(controller.showHelmet ? "Hide Helmet" : "Show Helmet"))
|
|
{
|
|
controller.showHelmet = !controller.showHelmet;
|
|
controller.ToggleHelmet();
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
} |