65 lines
1.6 KiB
C#
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
|
|
} |