Files
Studio/Assets/Scripts/AGVMapEditor.cs
2025-05-15 09:49:17 +09:00

65 lines
1.6 KiB
C#

using Newtonsoft.Json;
using System;
using UnityEditor;
using UnityEngine;
using XED.VirtualFactory;
namespace XED.EditorUtil
{
#if UNITY_EDITOR
[CustomEditor(typeof(AGVMap))]
public class AGVMapEditor : Editor
{
AGVMap map;
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
map = (AGVMap)target;
if(GUILayout.Button("Auto Indexing"))
{
AutoIndexing();
}
}
private void AutoIndexing()
{
LoadNodes();
for (int i = 0; i < map.nodes.Count; i++)
{
var node = map.nodes[i];
node.entity = new AGVNodeEntity();
var entity = node.entity as AGVNodeEntity;
entity.id = i.ToString();
map.nodes[i].gameObject.name = node.entity.id;
}
for (int i = 0; i < map.nodes.Count; i++)
{
var node = map.nodes[i];
var entity = node.entity as AGVNodeEntity;
entity.linkedNodeIDs.Clear();
foreach (var linkedNode in node.linkedNodes)
{
entity.linkedNodeIDs.Add(linkedNode.entity.id);
}
}
}
void LoadNodes()
{
map.nodes.Clear();
foreach (Transform child in map.transform)
{
AGVNode node = child.GetComponent<AGVNode>();
if (node != null)
{
map.nodes.Add(node);
}
}
}
}
#endif
}