42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using UnityEngine; | ||
|  | using UnityEditor; | ||
|  | using UnityEditor.Callbacks; | ||
|  | using UnityEditor.UIElements; | ||
|  | using UnityEngine.UIElements; | ||
|  | 
 | ||
|  | namespace Unity.Multiplayer.Center.Questionnaire | ||
|  | { | ||
|  |     /// <summary> | ||
|  |     /// Because of the "questionnaire" extension, the default inspector is not shown. | ||
|  |     /// Double clicking on the asset will open this custom inspector (in debug mode), which has a way to force saving | ||
|  |     /// the asset. | ||
|  |     /// </summary> | ||
|  |     [CustomEditor(typeof(QuestionnaireObject))] | ||
|  |     internal class QuestionnaireEditor : Editor | ||
|  |     { | ||
|  |         public override VisualElement CreateInspectorGUI() | ||
|  |         { | ||
|  |             var so = new SerializedObject(target); | ||
|  |             var root = new VisualElement(); | ||
|  |             var questionnaire = (QuestionnaireObject) target; | ||
|  |             root.Add(new Button(() => questionnaire.ForceReload() ){text = "Load Changes From Disk", tooltip = "Use when editing with external editor."}); | ||
|  |             root.Add(new Button(() => questionnaire.ForceSave() ){text = "Save local changes", tooltip = "Use when editing in inspector."}); | ||
|  |             var inspector = new PropertyField(so.FindProperty("Questionnaire")); | ||
|  |             root.Add(inspector); | ||
|  |             return root; | ||
|  |         } | ||
|  |          | ||
|  |         [OnOpenAsset(1)] | ||
|  |         public static bool OpenMyCustomAsset(int instanceID, int line) | ||
|  |         { | ||
|  |             if (!EditorPrefs.GetBool("DeveloperMode")) return false; | ||
|  |             var asset = EditorUtility.InstanceIDToObject(instanceID); | ||
|  |             var path = AssetDatabase.GetAssetPath(asset); | ||
|  |             if(string.IsNullOrEmpty(path) || !path.EndsWith("questionnaire")) | ||
|  |                 return false; | ||
|  |          | ||
|  |             Selection.activeObject = QuestionnaireObject.instance; | ||
|  |             return true; | ||
|  |         } | ||
|  |     } | ||
|  | } |