rabidus-test/Assets/Dreamteck/Splines/Editor/Tools/UpdateTool.cs

119 lines
4.3 KiB
C#
Raw Permalink Normal View History

2023-07-24 16:38:13 +03:00
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
namespace Dreamteck.Splines
{
public class UpdateTool : SplineTool
{
protected GameObject obj;
protected ObjectController spawner;
private string updated = "";
public override string GetName()
{
return "Update Components";
}
protected override string GetPrefix()
{
return "UpdateTool";
}
public override void Draw(Rect windowRect)
{
if (GUILayout.Button("Update All Spline Components"))
{
updated = "";
UpdateComputers();
UpdateNodes();
UpdateUsers();
}
if (GUILayout.Button("Update SplineUsers"))
{
updated = "";
UpdateUsers();
}
if (GUILayout.Button("Update MeshGenerators"))
{
updated = "";
UpdateMeshGenerators();
}
if (GUILayout.Button("Update SplineComputers"))
{
updated = "";
UpdateComputers();
}
if (GUILayout.Button("Update Nodes In Scene"))
{
updated = "";
UpdateNodes();
}
EditorGUILayout.Space();
GUILayout.Label(updated);
}
private void UpdateNodes()
{
Node[] nodes = GameObject.FindObjectsOfType<Node>();
EditorUtility.ClearProgressBar();
for (int i = 0; i < nodes.Length; i++)
{
EditorUtility.DisplayProgressBar("Updating nodes", "Updating node " + nodes[i].name, (float)i / (nodes.Length - 1));
nodes[i].UpdateConnectedComputers();
EditorUtility.SetDirty(nodes[i]);
updated += i + " - " + nodes[i].name + System.Environment.NewLine;
}
EditorUtility.ClearProgressBar();
if (nodes.Length == 0) updated += System.Environment.NewLine+"No active Nodes found in the scene.";
}
private void UpdateUsers()
{
SplineUser[] users = GameObject.FindObjectsOfType<SplineUser>();
EditorUtility.ClearProgressBar();
for (int i = 0; i < users.Length; i++)
{
EditorUtility.DisplayProgressBar("Updating users", "Updating user " + users[i].name, (float)i/(users.Length-1));
users[i].Rebuild();
EditorUtility.SetDirty(users[i]);
updated += i + " - " + users[i].name + System.Environment.NewLine;
}
EditorUtility.ClearProgressBar();
if (users.Length == 0) updated += System.Environment.NewLine+"No active SplineUsers found in the scene.";
}
private void UpdateMeshGenerators()
{
MeshGenerator[] users = GameObject.FindObjectsOfType<MeshGenerator>();
EditorUtility.ClearProgressBar();
for (int i = 0; i < users.Length; i++)
{
EditorUtility.DisplayProgressBar("Updating mesh generators", "Updating generator " + users[i].name, (float)i / (users.Length - 1));
users[i].Rebuild();
EditorUtility.SetDirty(users[i]);
updated += i + " - " + users[i].name + System.Environment.NewLine;
}
EditorUtility.ClearProgressBar();
if (users.Length == 0) updated += System.Environment.NewLine + "No active MeshGenerators found in the scene.";
}
private void UpdateComputers()
{
SplineComputer[] computers = GameObject.FindObjectsOfType<SplineComputer>();
EditorUtility.ClearProgressBar();
for (int i = 0; i < computers.Length; i++)
{
EditorUtility.DisplayProgressBar("Updating spline computers", "Updating computer " + computers[i].name, (float)i / (computers.Length - 1));
computers[i].RebuildImmediate();
EditorUtility.SetDirty(computers[i]);
updated += i + " - " + computers[i].name + System.Environment.NewLine;
}
EditorUtility.ClearProgressBar();
if (computers.Length == 0) updated += System.Environment.NewLine+"No active SplineComputers found in the scene.";
}
}
}