76 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | #if UNITY_EDITOR | ||
|  | using System.Collections; | ||
|  | using System.Collections.Generic; | ||
|  | using UnityEngine; | ||
|  | using UnityEditor; | ||
|  | using UnityEditor.ShortcutManagement; | ||
|  | using System.Reflection; | ||
|  | using System.Linq; | ||
|  | using UnityEngine.UIElements; | ||
|  | using UnityEngine.SceneManagement; | ||
|  | using UnityEditor.SceneManagement; | ||
|  | using static VHierarchy.Libs.VUtils; | ||
|  | using static VHierarchy.Libs.VGUI; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | namespace VHierarchy | ||
|  | { | ||
|  |     public class VHierarchyData : ScriptableObject, ISerializationCallbackReceiver | ||
|  |     { | ||
|  | 
 | ||
|  |         public SerializableDictionary<string, SceneData> sceneDatas_byGuid = new SerializableDictionary<string, SceneData>(); | ||
|  | 
 | ||
|  | 
 | ||
|  |         [System.Serializable] | ||
|  |         public class SceneData | ||
|  |         { | ||
|  |             public SerializableDictionary<GlobalID, GameObjectData> goDatas_byGlobalId = new SerializableDictionary<GlobalID, GameObjectData>(); | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |         [System.Serializable] | ||
|  |         public class GameObjectData | ||
|  |         { | ||
|  |             public int colorIndex; | ||
|  |             public string iconNameOrGuid = ""; // name for buildin icons, guid for custom ones | ||
|  | 
 | ||
|  |             [System.NonSerialized] // set in GetGameObjectData | ||
|  |             public SceneData sceneData; | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         public void OnBeforeSerialize() => VHierarchy.firstDataCacheLayer.Clear(); | ||
|  |         public void OnAfterDeserialize() => VHierarchy.firstDataCacheLayer.Clear(); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         [CustomEditor(typeof(VHierarchyData))] | ||
|  |         class Editor : UnityEditor.Editor | ||
|  |         { | ||
|  |             public override void OnInspectorGUI() | ||
|  |             { | ||
|  |                 var style = new GUIStyle(EditorStyles.label) { wordWrap = true }; | ||
|  | 
 | ||
|  | 
 | ||
|  |                 SetGUIEnabled(false); | ||
|  |                 BeginIndent(0); | ||
|  | 
 | ||
|  |                 Space(10); | ||
|  |                 EditorGUILayout.LabelField("This file contains data about which icons and colors are assigned to objects", style); | ||
|  | 
 | ||
|  |                 Space(6); | ||
|  |                 GUILayout.Label("If there are multiple people working on the project, you might want to store this data in scenes to avoid merge conflicts. To do that, create a script that inherits from VHierarchy.VHierarchyDataComponent and add it to any object in the scene", style); | ||
|  | 
 | ||
|  |                 EndIndent(10); | ||
|  |                 ResetGUIEnabled(); | ||
|  | 
 | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | } | ||
|  | #endif |