Example #1
0
 private void Initialize()
 {
     DirY[] values = DirY.GetList();
     optionLabels = values.Select(dir => dir.identifier).ToArray();
     optionValues = values.Select((_, i) => i).ToArray();
     initialized  = true;
 }
Example #2
0
        public static void Initialize(KiteSettings settings = null)
        {
            if (!settings)
            {
                settings = KiteSettingsEditor.GetOrCreateSettings();
            }
            SerializedObject serializedObject = KiteSettingsEditor.GetSerializedSettings();

            serializedObject.FindProperty(nameof(settings.upDirY)).objectReferenceValue   = InitUpDirY();
            serializedObject.FindProperty(nameof(settings.downDirY)).objectReferenceValue = InitDownDirY();
            serializedObject.ApplyModifiedProperties();
            DirY.OnSettings(settings);
        }
Example #3
0
        private static DirY InitUpDirY()
        {
            string assetPath = $"{KiteSettingsEditor.path}/DirYUp.asset";
            DirY   upDirY    = AssetDatabase.LoadAssetAtPath <DirY>(assetPath);

            if (!upDirY)
            {
                upDirY            = ScriptableObject.CreateInstance <DirY>();
                upDirY.identifier = "Up";
                upDirY.value      = 1;
                AssetDatabase.CreateAsset(upDirY, assetPath);
            }
            return(upDirY);
        }
Example #4
0
        private static DirY InitDownDirY()
        {
            string assetPath = $"{KiteSettingsEditor.path}/DirYDown.asset";
            DirY   downDirY  = AssetDatabase.LoadAssetAtPath <DirY>(assetPath);

            if (!downDirY)
            {
                downDirY            = ScriptableObject.CreateInstance <DirY>();
                downDirY.identifier = "Down";
                downDirY.value      = -1;
                AssetDatabase.CreateAsset(downDirY, assetPath);
            }
            return(downDirY);
        }
Example #5
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 (!DirYSettings.IsInitialized())
            {
                DirYSettings.Initialize();
            }

            if (!initialized)
            {
                Initialize();
            }

            Rect valuePosition = EditorGUI.PrefixLabel(position, new GUIContent(property.displayName));

            DirY[] values = DirY.GetList();
            DirY   value  = property.objectReferenceValue as DirY;

            if (value != null)
            {
                int currentIndex = Array.IndexOf(values, value);
                if (currentIndex != -1)
                {
                    EditorGUI.BeginChangeCheck();
                    int selectedIndex = EditorGUI.IntPopup(valuePosition, currentIndex, optionLabels, optionValues);
                    if (EditorGUI.EndChangeCheck())
                    {
                        property.objectReferenceValue = values[selectedIndex];
                    }
                    return;
                }
            }
            property.objectReferenceValue = values[0];
        }