private AIReference GetAIReference(AIStorage ai) { AIReference aiRef; if (!_aiReferences.TryGetValue(ai.aiId, out aiRef)) { aiRef = new AIReference(ai.aiId, ai.name); _aiReferences.Add(ai.aiId, aiRef); } return(aiRef); }
private void DrawAIListItem(AIReference item) { var labelContent = new GUIContent(); EditorGUILayout.BeginVertical("Box"); EditorGUILayout.BeginHorizontal(SharedStyles.BuiltIn.listItemHeader); labelContent.text = item.name; EditorGUILayout.LabelField(labelContent); EditorGUILayout.EndHorizontal(); if (item.directReferences.Count > 0) { EditorGUILayout.BeginVertical("Box"); labelContent.text = "Direct References"; EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText); item.directReferencesExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.directReferencesExpanded, GUIContent.none, true); if (item.directReferencesExpanded) { foreach (var aiRef in item.directReferences) { labelContent.text = aiRef.name; EditorGUILayout.LabelField(labelContent); } } EditorGUILayout.EndVertical(); } if (item.directlyReferencingScenesOrPrefabs.Length > 0) { EditorGUILayout.BeginVertical("Box"); labelContent.text = "Directly referenced by Scene or Prefab"; EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText); item.directScenesOrPrefabsExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.directScenesOrPrefabsExpanded, GUIContent.none, true); if (item.directScenesOrPrefabsExpanded) { foreach (var sof in item.directlyReferencingScenesOrPrefabs) { labelContent.text = sof.name; EditorGUILayout.LabelField(labelContent); } } EditorGUILayout.EndVertical(); } if (item.directlyReferencingAIs.Length > 0) { EditorGUILayout.BeginVertical("Box"); labelContent.text = "Directly referenced by AIs"; EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText); item.directAIsExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.directAIsExpanded, GUIContent.none, true); if (item.directAIsExpanded) { foreach (var aiRef in item.directlyReferencingAIs) { labelContent.text = aiRef.name; EditorGUILayout.LabelField(labelContent); } } EditorGUILayout.EndVertical(); } if (item.indirectReferences.Count > 0) { EditorGUILayout.BeginVertical("Box"); labelContent.text = "Indirect References"; EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText); item.indirectReferencesExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.indirectReferencesExpanded, GUIContent.none, true); if (item.indirectReferencesExpanded) { foreach (var aiRef in item.indirectReferences) { labelContent.text = aiRef.name; EditorGUILayout.LabelField(labelContent); } } EditorGUILayout.EndVertical(); } if (item.indirectlyReferencingScenesOrPrefabs.Length > 0) { EditorGUILayout.BeginVertical("Box"); labelContent.text = "Indirectly referenced by Scene or Prefab"; EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText); item.indirectScenesOrPrefabsExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.indirectScenesOrPrefabsExpanded, GUIContent.none, true); if (item.indirectScenesOrPrefabsExpanded) { foreach (var sof in item.indirectlyReferencingScenesOrPrefabs) { labelContent.text = sof.name; EditorGUILayout.LabelField(labelContent); } } EditorGUILayout.EndVertical(); } if (item.indirectlyReferencingAIs.Length > 0) { EditorGUILayout.BeginVertical("Box"); labelContent.text = "Indirectly referenced by AIs"; EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText); item.indirectAIsExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.indirectAIsExpanded, GUIContent.none, true); if (item.indirectAIsExpanded) { foreach (var aiRef in item.indirectlyReferencingAIs) { labelContent.text = aiRef.name; EditorGUILayout.LabelField(labelContent); } } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); }