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(); if (node != null) { map.nodes.Add(node); } } } } #endif }