UnityGame/Library/PackageCache/com.unity.multiplayer.center/Editor/Questionnaire/QuestionnaireEditor.cs

42 lines
1.7 KiB
C#
Raw Normal View History

2024-10-27 10:53:47 +03:00
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;
}
}
}