inz-00/Assets/Editor/GraphGeneratorUI.cs

77 lines
2.2 KiB
C#

using System;
using Assets;
using UnityEditor;
using UnityEngine;
using Random = UnityEngine.Random;
namespace Editor
{
[CustomEditor(typeof (LandmassGenerator))]
public class GraphGeneratorUI : UnityEditor.Editor
{
private string _threshold;
private bool _showInfo = false;
public override void OnInspectorGUI()
{
LandmassGenerator generator = (LandmassGenerator)target;
_showInfo = EditorGUILayout.Foldout(_showInfo, "Debug info");
if (_showInfo)
{
EditorGUILayout.LabelField($"Stage: ", generator.Stage.ToString());
EditorGUILayout.LabelField($"Took: ", $"{generator.debug.generationTime:F3}s");
}
DrawDefaultInspector();
if (GUILayout.Button("Reset")) {
generator.Reset();
}
if (GUILayout.Button("Generate Random"))
{
generator.seed = (int)(Random.value * int.MaxValue);
generator.Reset();
generator.Generate();
}
if (GUILayout.Button("Generate")) {
generator.Generate();
}
if (GUILayout.Button("Step")) {
generator.Step();
}
GUILayout.BeginHorizontal();
{
_threshold = GUILayout.TextField(_threshold);
if (GUILayout.Button("Go")) {
try
{
generator.Rewind(float.Parse(_threshold));
}
catch
{
GUILayout.Label("You should pass valid number.");
}
}
}
GUILayout.EndHorizontal();
}
private void OnSceneGUI()
{
LandmassGenerator generator = (LandmassGenerator)target;
if (generator.VoronoiGenerator != null)
{
var moved = Handles.PositionHandle(generator.transform.position + Vector3.up * (float)generator.VoronoiGenerator.Line.Directrix, Quaternion.identity);
generator.VoronoiGenerator.Line.Directrix = moved.y;
}
}
}
}