GuildTycoon/Assets/_/Content/Free Low Poly Modular Character Pack - Fantasy Dream/Demo/Scripts/ModularHeroController.cs
2025-09-06 23:56:47 +02:00

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
}