private void Initialize() { DirX[] values = DirX.GetList(); optionLabels = values.Select(dir => dir.identifier).ToArray(); optionValues = values.Select((_, i) => i).ToArray(); initialized = true; }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { bool isSettings = property.serializedObject.targetObject is KiteSettings; if (isSettings) { EditorGUI.PropertyField(position, property, label); return; } if (!DirXSettings.IsInitialized()) { DirXSettings.Initialize(); } if (!initialized) { Initialize(); } Rect valueRect = EditorGUI.PrefixLabel(position, new GUIContent(property.displayName)); DirX[] values = DirX.GetList(); DirX value = property.objectReferenceValue as DirX; if (value != null) { int currentIndex = Array.IndexOf(values, value); if (currentIndex != -1) { int buttonWidth = 24; Vector2 buttonSize = new Vector2(buttonWidth, valueRect.height); Rect buttonRect = new Rect(valueRect.position, buttonSize); if (GUI.Button(buttonRect, EditorGUIUtility.IconContent("tab_prev", "|Left"))) { property.objectReferenceValue = DirX.left; } buttonRect = new Rect(valueRect.position + new Vector2(buttonRect.width, 0), buttonSize); if (GUI.Button(buttonRect, EditorGUIUtility.IconContent("tab_next", "|Right"))) { property.objectReferenceValue = DirX.right; } valueRect.x += 2 * buttonWidth; valueRect.width -= 2 * buttonWidth; EditorGUI.BeginChangeCheck(); int selectedIndex = EditorGUI.IntPopup(valueRect, currentIndex, optionLabels, optionValues); if (EditorGUI.EndChangeCheck()) { property.objectReferenceValue = values[selectedIndex]; } return; } } property.objectReferenceValue = values[0]; }
public static int GetMultiplier(this DirX dir) { if (dir == DirX.Left) { return(-1); } else if (dir == DirX.Right) { return(1); } return(0); }
public static void Initialize(KiteSettings settings = null) { if (!settings) { settings = KiteSettingsEditor.GetOrCreateSettings(); } SerializedObject serializedObject = KiteSettingsEditor.GetSerializedSettings(); serializedObject.FindProperty(nameof(settings.rightDirX)).objectReferenceValue = InitRightDirX(); serializedObject.FindProperty(nameof(settings.leftDirX)).objectReferenceValue = InitLeftDirX(); serializedObject.ApplyModifiedProperties(); DirX.OnSettings(settings); }
private static DirX InitRightDirX() { string assetPath = $"{KiteSettingsEditor.path}/DirXRight.asset"; DirX rightDirX = AssetDatabase.LoadAssetAtPath <DirX>(assetPath); if (!rightDirX) { rightDirX = ScriptableObject.CreateInstance <DirX>(); rightDirX.identifier = "Right"; rightDirX.value = 1; AssetDatabase.CreateAsset(rightDirX, assetPath); } return(rightDirX); }
private static DirX InitLeftDirX() { string assetPath = $"{KiteSettingsEditor.path}/DirXLeft.asset"; DirX leftDirX = AssetDatabase.LoadAssetAtPath <DirX>(assetPath); if (!leftDirX) { leftDirX = ScriptableObject.CreateInstance <DirX>(); leftDirX.identifier = "Left"; leftDirX.value = -1; AssetDatabase.CreateAsset(leftDirX, assetPath); } return(leftDirX); }