示例#1
0
 private void Initialize()
 {
     DirX[] values = DirX.GetList();
     optionLabels = values.Select(dir => dir.identifier).ToArray();
     optionValues = values.Select((_, i) => i).ToArray();
     initialized  = true;
 }
示例#2
0
        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];
        }
示例#3
0
 public static int GetMultiplier(this DirX dir)
 {
     if (dir == DirX.Left)
     {
         return(-1);
     }
     else if (dir == DirX.Right)
     {
         return(1);
     }
     return(0);
 }
示例#4
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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }