コード例 #1
0
    public override void OnInspectorGUI()
    {
        SettingsAndControls sac         = (SettingsAndControls)target;
        RectOffset          defPadding  = GUI.skin.box.padding;
        TextAnchor          defAlign    = GUI.skin.textField.alignment;
        TextAnchor          defBoxAlign = GUI.skin.box.alignment;

        GUI.skin.box.padding         = new RectOffset(5, 5, 5, 5);
        GUI.skin.box.alignment       = TextAnchor.MiddleCenter;
        GUI.skin.textField.alignment = TextAnchor.MiddleCenter;
        serializedObject.Update();
        int fs = center.fontSize;

        center.fontSize = 16;
        EditorGUILayout.BeginVertical();
        GUILayout.Space(20);
        GUILayout.Box(_Logo, center);
        EditorGUILayout.LabelField("Simple Settings And Controls", center);
        center.fontSize = fs;
        EditorGUILayout.LabelField("By Nathan Fiscaletti (Fisc510)", center);
        EditorGUILayout.LabelField("V1.8", center);
        GUILayout.Space(20);
        EditorGUILayout.EndVertical();
        showDefaultInputs = EditorGUILayout.Foldout(showDefaultInputs, "Default Controls");
        if (showDefaultInputs)
        {
            EditorGUILayout.BeginVertical();
            int i = 0;
            try{
                for (i = 0; i < sac.DefaultInputs.Length; i++)
                {
                    EditorGUILayout.BeginHorizontal("Box");
                    EditorGUILayout.BeginVertical();
                    EditorGUILayout.LabelField(sac.DefaultInputs[i].Name, name, GUILayout.Width(Screen.width * .32f));
                    EditorGUILayout.TextField("Control", yellow, GUILayout.Width(Screen.width * .32f));
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.BeginVertical();
                    //EditorGUILayout.LabelField("Key Value", name, GUILayout.Width(Screen.width * .35f));
                    sac.DefaultInputs[i].keyCode = (KeyCode)EditorGUILayout.EnumPopup(sac.DefaultInputs[i].keyCode);
                    EditorGUILayout.EndVertical();
                    bool delete = GUILayout.Button("X");
                    EditorGUILayout.EndHorizontal();
                    if (delete)
                    {
                        sac.DefaultInputs = RemoveAt(sac.DefaultInputs, i);
                        break;
                    }
                }
            }catch (System.Exception e) {
                ResetTarget();
            }
            if (i == 0)
            {
                EditorGUILayout.LabelField("No Default Controls Defined", red);
            }

            if (showAddControl)
            {
                GUILayout.BeginVertical("Box", GUILayout.MinWidth(0), GUILayout.Width(Screen.width * .90f));
                if (showErrorControl)
                {
                    GUILayout.Label(controlError, red);
                }
                GUILayout.Label("Add New Control", center);
                GUILayout.BeginHorizontal();
                GUILayout.Label("Name", center, GUILayout.Width(Screen.width * .45f));
                GUILayout.Label("Value", center, GUILayout.Width(Screen.width * .45f));
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal(center);
                _ADD_C_Key.Name    = EditorGUILayout.TextField(_ADD_C_Key.Name, GUILayout.Width(Screen.width * .45f));
                _ADD_C_Key.keyCode = (KeyCode)EditorGUILayout.EnumPopup(_ADD_C_Key.keyCode);
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                bool cancel = GUILayout.Button("Cancel");
                bool _add   = GUILayout.Button("Add!");

                if (cancel)
                {
                    _ADD_C_Key       = new ControlKey("New Control", KeyCode.None);
                    showAddControl   = false;
                    showErrorControl = false;
                }

                if (_add)
                {
                    if (CheckControlAdd(sac.DefaultInputs))
                    {
                        controlError     = "'" + _ADD_C_Key.Name + "' is already defined.";
                        showErrorControl = true;
                    }
                    else
                    {
                        sac.DefaultInputs = AddTo(sac.DefaultInputs, _ADD_C_Key);
                        _ADD_C_Key        = new ControlKey("New Control", KeyCode.None);
                        showAddControl    = false;
                        showErrorControl  = false;
                    }
                }

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();
            }

            GUILayout.BeginHorizontal();
            if (i > 0)
            {
                bool removeAll = GUILayout.Button("Remove All");
                if (removeAll)
                {
                    sac.DefaultInputs = new ControlKey[] {};
                }
            }
            if (!showAddControl)
            {
                bool add = GUILayout.Button("Add New Control");
                if (add)
                {
                    showAddControl = true;
                }
            }
            GUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }



        showDefaultSettings = EditorGUILayout.Foldout(showDefaultSettings, "Default Settings");
        if (showDefaultSettings)
        {
            EditorGUILayout.BeginHorizontal(center);
            EditorGUILayout.BeginVertical();

            int i = 0;
            try{
                for (i = 0; i < sac.DefaultCustomSettings.Length; i++)
                {
                    EditorGUILayout.BeginHorizontal("Box");
                    EditorGUILayout.BeginHorizontal(center);
                    EditorGUILayout.BeginVertical();
                    EditorGUILayout.LabelField(sac.DefaultCustomSettings[i].Name, name, GUILayout.Width(Screen.width * .32f));
                    EditorGUILayout.LabelField("(" + System.Enum.GetName(typeof(Setting.SettingType), (int)sac.DefaultCustomSettings[i].Type) + ")", yellow, GUILayout.Width(Screen.width * .32f));
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.BeginHorizontal(center);
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.BeginHorizontal(center);

                    switch (sac.DefaultCustomSettings[i].Type)
                    {
                    case Setting.SettingType.STRING: {
                        sac.DefaultCustomSettings[i]._VAL_String = new SACString(EditorGUILayout.TextField(sac.DefaultCustomSettings[i]._VAL_String.GetString()));
                        break;
                    }

                    case Setting.SettingType.BOOLEAN: {
                        sac.DefaultCustomSettings[i]._VAL_Bool = new SACBool(EditorGUILayout.Toggle(sac.DefaultCustomSettings[i]._VAL_Bool.GetBool()));
                        break;
                    }

                    case Setting.SettingType.COLOR: {
                        Color col = EditorGUILayout.ColorField(sac.DefaultCustomSettings[i]._VAL_Color.GetColor());
                        sac.DefaultCustomSettings[i]._VAL_Color = new SACColor(col.r, col.g, col.b, col.a);
                        break;
                    }

                    case Setting.SettingType.FLOAT: {
                        sac.DefaultCustomSettings[i]._VAL_Float = new SACFloat(EditorGUILayout.FloatField(sac.DefaultCustomSettings[i]._VAL_Float.GetFloat()));
                        break;
                    }

                    case Setting.SettingType.INTEGER: {
                        sac.DefaultCustomSettings[i]._VAL_Int = new SACInt(EditorGUILayout.IntField(sac.DefaultCustomSettings[i]._VAL_Int.GetInt()));
                        break;
                    }

                    case Setting.SettingType.QUATERNION: {
                        GUILayout.BeginVertical();
                        EditorGUIUtility.labelWidth = 15;
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_Quaternion = new SACQuaternion(new Quaternion(EditorGUILayout.FloatField("X", sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().x, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().y, sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().z, sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().w));
                        sac.DefaultCustomSettings[i]._VAL_Quaternion = new SACQuaternion(new Quaternion(sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().x, EditorGUILayout.FloatField("Y", sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().y, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().z, sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().w));
                        GUILayout.EndHorizontal();
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_Quaternion = new SACQuaternion(new Quaternion(sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().x, sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().y, EditorGUILayout.FloatField("Z", sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().z, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().w));
                        sac.DefaultCustomSettings[i]._VAL_Quaternion = new SACQuaternion(new Quaternion(sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().x, sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().y, sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().z, EditorGUILayout.FloatField("W", sac.DefaultCustomSettings[i]._VAL_Quaternion.GetQuaternion().w, GUILayout.MinWidth(0))));
                        GUILayout.EndHorizontal();
                        EditorGUIUtility.labelWidth = 0;
                        GUILayout.EndVertical();

                        break;
                    }

                    case Setting.SettingType.VECTOR2: {
                        GUILayout.BeginVertical();
                        EditorGUIUtility.labelWidth = 15;
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_Vector2 = new SACVector2(new Vector2(EditorGUILayout.FloatField("X", sac.DefaultCustomSettings[i]._VAL_Vector2.GetVector2().x, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Vector2.GetVector2().y));
                        sac.DefaultCustomSettings[i]._VAL_Vector2 = new SACVector2(new Vector2(sac.DefaultCustomSettings[i]._VAL_Vector2.GetVector2().x, EditorGUILayout.FloatField("Y", sac.DefaultCustomSettings[i]._VAL_Vector2.GetVector2().y, GUILayout.MinWidth(0))));
                        GUILayout.EndHorizontal();
                        EditorGUIUtility.labelWidth = 0;
                        GUILayout.EndVertical();
                        break;
                    }

                    case Setting.SettingType.VECTOR3: {
                        GUILayout.BeginVertical();
                        EditorGUIUtility.labelWidth = 15;
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_Vector3 = new SACVector3(new Vector3(EditorGUILayout.FloatField("X", sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().x, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().y, sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().z));
                        sac.DefaultCustomSettings[i]._VAL_Vector3 = new SACVector3(new Vector3(sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().x, EditorGUILayout.FloatField("Y", sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().y, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().z));
                        sac.DefaultCustomSettings[i]._VAL_Vector3 = new SACVector3(new Vector3(sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().x, sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().y, EditorGUILayout.FloatField("Z", sac.DefaultCustomSettings[i]._VAL_Vector3.GetVector3().z, GUILayout.MinWidth(0))));
                        GUILayout.EndHorizontal();
                        EditorGUIUtility.labelWidth = 0;
                        GUILayout.EndVertical();
                        break;
                    }

                    case Setting.SettingType.VECTOR4: {
                        GUILayout.BeginVertical();
                        EditorGUIUtility.labelWidth = 15;
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_Vector4 = new SACVector4(new Vector4(EditorGUILayout.FloatField("X", sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().x, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().y, sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().z, sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().w));
                        sac.DefaultCustomSettings[i]._VAL_Vector4 = new SACVector4(new Vector4(sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().x, EditorGUILayout.FloatField("Y", sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().y, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().z, sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().w));
                        GUILayout.EndHorizontal();
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_Vector4 = new SACVector4(new Vector4(sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().x, sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().y, EditorGUILayout.FloatField("Z", sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().z, GUILayout.MinWidth(0)), sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().w));
                        sac.DefaultCustomSettings[i]._VAL_Vector4 = new SACVector4(new Vector4(sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().x, sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().y, sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().z, EditorGUILayout.FloatField("W", sac.DefaultCustomSettings[i]._VAL_Vector4.GetVector4().w, GUILayout.MinWidth(0))));
                        GUILayout.EndHorizontal();
                        EditorGUIUtility.labelWidth = 0;
                        GUILayout.EndVertical();

                        break;
                    }

                    case Setting.SettingType.TIME: {
                        GUILayout.BeginVertical();
                        EditorGUIUtility.labelWidth = 15;
                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_DateTime = new SACDate(new System.DateTime(sac.DefaultCustomSettings[i]._VAL_DateTime.year,
                                                                                                     EditorGUILayout.IntField("M", sac.DefaultCustomSettings[i]._VAL_DateTime.month, GUILayout.MinWidth(0)),
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.day,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.hour,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.min,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.sec));

                        sac.DefaultCustomSettings[i]._VAL_DateTime = new SACDate(new System.DateTime(sac.DefaultCustomSettings[i]._VAL_DateTime.year,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.month,
                                                                                                     EditorGUILayout.IntField("D", sac.DefaultCustomSettings[i]._VAL_DateTime.day, GUILayout.MinWidth(0)),
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.hour,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.min,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.sec));

                        sac.DefaultCustomSettings[i]._VAL_DateTime = new SACDate(new System.DateTime(EditorGUILayout.IntField("Y", sac.DefaultCustomSettings[i]._VAL_DateTime.year, GUILayout.MinWidth(0)),
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.month,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.day,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.hour,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.min,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.sec));

                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        sac.DefaultCustomSettings[i]._VAL_DateTime = new SACDate(new System.DateTime(sac.DefaultCustomSettings[i]._VAL_DateTime.year,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.month,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.day,
                                                                                                     EditorGUILayout.IntField("H", sac.DefaultCustomSettings[i]._VAL_DateTime.hour, GUILayout.MinWidth(0)),
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.min,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.sec));

                        sac.DefaultCustomSettings[i]._VAL_DateTime = new SACDate(new System.DateTime(sac.DefaultCustomSettings[i]._VAL_DateTime.year,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.month,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.day,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.hour,
                                                                                                     EditorGUILayout.IntField("M", sac.DefaultCustomSettings[i]._VAL_DateTime.min, GUILayout.MinWidth(0)),
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.sec));

                        sac.DefaultCustomSettings[i]._VAL_DateTime = new SACDate(new System.DateTime(sac.DefaultCustomSettings[i]._VAL_DateTime.year,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.month,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.day,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.hour,
                                                                                                     sac.DefaultCustomSettings[i]._VAL_DateTime.min,
                                                                                                     EditorGUILayout.IntField("S", sac.DefaultCustomSettings[i]._VAL_DateTime.sec, GUILayout.MinWidth(0))));

                        GUILayout.EndHorizontal();
                        EditorGUIUtility.labelWidth = 0;
                        GUILayout.EndVertical();
                        break;
                    }

                    default: {
                        break;
                    }
                    }
                    GUILayout.FlexibleSpace();
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.BeginHorizontal(center, GUILayout.Width(Screen.width * .05f));
                    bool delete = GUILayout.Button("X");
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.EndHorizontal();
                    if (delete)
                    {
                        sac.DefaultCustomSettings = RemoveAt(sac.DefaultCustomSettings, i);
                        break;
                    }
                    GUILayout.Space(5);
                }
            }catch (System.Exception e) {
                ResetTarget();
            }

            if (i == 0)
            {
                EditorGUILayout.LabelField("No Default Settings Defined", red);
            }

            if (showAddSetting)
            {
                GUILayout.BeginVertical("Box", GUILayout.MinWidth(0), GUILayout.Width(Screen.width * .90f));
                if (showErrorSetting)
                {
                    GUILayout.Label(settingError, red);
                }
                GUILayout.Label("Add New Setting", center);
                GUILayout.BeginHorizontal();
                GUILayout.Label("Key", center, GUILayout.Width(Screen.width * .3f));
                GUILayout.Label("Type", center, GUILayout.Width(Screen.width * .3f));
                GUILayout.Label("Value", center, GUILayout.Width(Screen.width * .3f));
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal(center);
                _ADD_S_name         = EditorGUILayout.TextField(_ADD_S_name, GUILayout.Width(Screen.width * .3f));
                _ADD_S_type         = (Setting.SettingType)EditorGUILayout.EnumPopup(_ADD_S_type, GUILayout.Width(Screen.width * .3f));
                _ADD_S_Setting.Name = _ADD_S_name;
                _ADD_S_Setting.Type = _ADD_S_type;
                //START
                switch (_ADD_S_type)
                {
                case Setting.SettingType.STRING: {
                    _ADD_S_Setting._VAL_String = new SACString(EditorGUILayout.TextField(_ADD_S_Setting._VAL_String.GetString()));
                    break;
                }

                case Setting.SettingType.BOOLEAN: {
                    _ADD_S_Setting._VAL_Bool = new SACBool(EditorGUILayout.Toggle(_ADD_S_Setting._VAL_Bool.GetBool()));
                    break;
                }

                case Setting.SettingType.COLOR: {
                    Color col = EditorGUILayout.ColorField(_ADD_S_Setting._VAL_Color.GetColor());
                    _ADD_S_Setting._VAL_Color = new SACColor(col.r, col.g, col.b, col.a);
                    break;
                }

                case Setting.SettingType.FLOAT: {
                    _ADD_S_Setting._VAL_Float = new SACFloat(EditorGUILayout.FloatField(_ADD_S_Setting._VAL_Float.GetFloat()));
                    break;
                }

                case Setting.SettingType.INTEGER: {
                    _ADD_S_Setting._VAL_Int = new SACInt(EditorGUILayout.IntField(_ADD_S_Setting._VAL_Int.GetInt()));
                    break;
                }

                case Setting.SettingType.QUATERNION: {
                    GUILayout.BeginVertical();
                    EditorGUIUtility.labelWidth = 15;
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_Quaternion = new SACQuaternion(new Quaternion(EditorGUILayout.FloatField("X", _ADD_S_Setting._VAL_Quaternion.GetQuaternion().x, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Quaternion.GetQuaternion().y, _ADD_S_Setting._VAL_Quaternion.GetQuaternion().z, _ADD_S_Setting._VAL_Quaternion.GetQuaternion().w));
                    _ADD_S_Setting._VAL_Quaternion = new SACQuaternion(new Quaternion(_ADD_S_Setting._VAL_Quaternion.GetQuaternion().x, EditorGUILayout.FloatField("Y", _ADD_S_Setting._VAL_Quaternion.GetQuaternion().y, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Quaternion.GetQuaternion().z, _ADD_S_Setting._VAL_Quaternion.GetQuaternion().w));
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_Quaternion = new SACQuaternion(new Quaternion(_ADD_S_Setting._VAL_Quaternion.GetQuaternion().x, _ADD_S_Setting._VAL_Quaternion.GetQuaternion().y, EditorGUILayout.FloatField("Z", _ADD_S_Setting._VAL_Quaternion.GetQuaternion().z, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Quaternion.GetQuaternion().w));
                    _ADD_S_Setting._VAL_Quaternion = new SACQuaternion(new Quaternion(_ADD_S_Setting._VAL_Quaternion.GetQuaternion().x, _ADD_S_Setting._VAL_Quaternion.GetQuaternion().y, _ADD_S_Setting._VAL_Quaternion.GetQuaternion().z, EditorGUILayout.FloatField("W", _ADD_S_Setting._VAL_Quaternion.GetQuaternion().w, GUILayout.MinWidth(0))));
                    GUILayout.EndHorizontal();
                    EditorGUIUtility.labelWidth = 0;
                    GUILayout.EndVertical();

                    break;
                }

                case Setting.SettingType.VECTOR2: {
                    GUILayout.BeginVertical();
                    EditorGUIUtility.labelWidth = 15;
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_Vector2 = new SACVector2(new Vector2(EditorGUILayout.FloatField("X", _ADD_S_Setting._VAL_Vector2.GetVector2().x, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Vector2.GetVector2().y));
                    _ADD_S_Setting._VAL_Vector2 = new SACVector2(new Vector2(_ADD_S_Setting._VAL_Vector2.GetVector2().x, EditorGUILayout.FloatField("Y", _ADD_S_Setting._VAL_Vector2.GetVector2().y, GUILayout.MinWidth(0))));
                    GUILayout.EndHorizontal();
                    EditorGUIUtility.labelWidth = 0;
                    GUILayout.EndVertical();
                    break;
                }

                case Setting.SettingType.VECTOR3: {
                    GUILayout.BeginVertical();
                    EditorGUIUtility.labelWidth = 15;
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_Vector3 = new SACVector3(new Vector3(EditorGUILayout.FloatField("X", _ADD_S_Setting._VAL_Vector3.GetVector3().x, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Vector3.GetVector3().y, _ADD_S_Setting._VAL_Vector3.GetVector3().z));
                    _ADD_S_Setting._VAL_Vector3 = new SACVector3(new Vector3(_ADD_S_Setting._VAL_Vector3.GetVector3().x, EditorGUILayout.FloatField("Y", _ADD_S_Setting._VAL_Vector3.GetVector3().y, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Vector3.GetVector3().z));
                    _ADD_S_Setting._VAL_Vector3 = new SACVector3(new Vector3(_ADD_S_Setting._VAL_Vector3.GetVector3().x, _ADD_S_Setting._VAL_Vector3.GetVector3().y, EditorGUILayout.FloatField("Z", _ADD_S_Setting._VAL_Vector3.GetVector3().z, GUILayout.MinWidth(0))));
                    GUILayout.EndHorizontal();
                    EditorGUIUtility.labelWidth = 0;
                    GUILayout.EndVertical();
                    break;
                }

                case Setting.SettingType.VECTOR4: {
                    GUILayout.BeginVertical();
                    EditorGUIUtility.labelWidth = 15;
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_Vector4 = new SACVector4(new Vector4(EditorGUILayout.FloatField("X", _ADD_S_Setting._VAL_Vector4.GetVector4().x, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Vector4.GetVector4().y, _ADD_S_Setting._VAL_Vector4.GetVector4().z, _ADD_S_Setting._VAL_Vector4.GetVector4().w));
                    _ADD_S_Setting._VAL_Vector4 = new SACVector4(new Vector4(_ADD_S_Setting._VAL_Vector4.GetVector4().x, EditorGUILayout.FloatField("Y", _ADD_S_Setting._VAL_Vector4.GetVector4().y, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Vector4.GetVector4().z, _ADD_S_Setting._VAL_Vector4.GetVector4().w));
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_Vector4 = new SACVector4(new Vector4(_ADD_S_Setting._VAL_Vector4.GetVector4().x, _ADD_S_Setting._VAL_Vector4.GetVector4().y, EditorGUILayout.FloatField("Z", _ADD_S_Setting._VAL_Vector4.GetVector4().z, GUILayout.MinWidth(0)), _ADD_S_Setting._VAL_Vector4.GetVector4().w));
                    _ADD_S_Setting._VAL_Vector4 = new SACVector4(new Vector4(_ADD_S_Setting._VAL_Vector4.GetVector4().x, _ADD_S_Setting._VAL_Vector4.GetVector4().y, _ADD_S_Setting._VAL_Vector4.GetVector4().z, EditorGUILayout.FloatField("W", _ADD_S_Setting._VAL_Vector4.GetVector4().w, GUILayout.MinWidth(0))));
                    GUILayout.EndHorizontal();
                    EditorGUIUtility.labelWidth = 0;
                    GUILayout.EndVertical();

                    break;
                }

                case Setting.SettingType.TIME: {
                    GUILayout.BeginVertical();
                    EditorGUIUtility.labelWidth = 15;
                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_DateTime = new SACDate(new System.DateTime(_ADD_S_Setting._VAL_DateTime.year,
                                                                                   EditorGUILayout.IntField("M", _ADD_S_Setting._VAL_DateTime.month, GUILayout.MinWidth(0)),
                                                                                   _ADD_S_Setting._VAL_DateTime.day,
                                                                                   _ADD_S_Setting._VAL_DateTime.hour,
                                                                                   _ADD_S_Setting._VAL_DateTime.min,
                                                                                   _ADD_S_Setting._VAL_DateTime.sec));

                    _ADD_S_Setting._VAL_DateTime = new SACDate(new System.DateTime(_ADD_S_Setting._VAL_DateTime.year,
                                                                                   _ADD_S_Setting._VAL_DateTime.month,
                                                                                   EditorGUILayout.IntField("D", _ADD_S_Setting._VAL_DateTime.day, GUILayout.MinWidth(0)),
                                                                                   _ADD_S_Setting._VAL_DateTime.hour,
                                                                                   _ADD_S_Setting._VAL_DateTime.min,
                                                                                   _ADD_S_Setting._VAL_DateTime.sec));

                    _ADD_S_Setting._VAL_DateTime = new SACDate(new System.DateTime(EditorGUILayout.IntField("Y", _ADD_S_Setting._VAL_DateTime.year, GUILayout.MinWidth(0)),
                                                                                   _ADD_S_Setting._VAL_DateTime.month,
                                                                                   _ADD_S_Setting._VAL_DateTime.day,
                                                                                   _ADD_S_Setting._VAL_DateTime.hour,
                                                                                   _ADD_S_Setting._VAL_DateTime.min,
                                                                                   _ADD_S_Setting._VAL_DateTime.sec));

                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    _ADD_S_Setting._VAL_DateTime = new SACDate(new System.DateTime(_ADD_S_Setting._VAL_DateTime.year,
                                                                                   _ADD_S_Setting._VAL_DateTime.month,
                                                                                   _ADD_S_Setting._VAL_DateTime.day,
                                                                                   EditorGUILayout.IntField("H", _ADD_S_Setting._VAL_DateTime.hour, GUILayout.MinWidth(0)),
                                                                                   _ADD_S_Setting._VAL_DateTime.min,
                                                                                   _ADD_S_Setting._VAL_DateTime.sec));

                    _ADD_S_Setting._VAL_DateTime = new SACDate(new System.DateTime(_ADD_S_Setting._VAL_DateTime.year,
                                                                                   _ADD_S_Setting._VAL_DateTime.month,
                                                                                   _ADD_S_Setting._VAL_DateTime.day,
                                                                                   _ADD_S_Setting._VAL_DateTime.hour,
                                                                                   EditorGUILayout.IntField("M", _ADD_S_Setting._VAL_DateTime.min, GUILayout.MinWidth(0)),
                                                                                   _ADD_S_Setting._VAL_DateTime.sec));

                    _ADD_S_Setting._VAL_DateTime = new SACDate(new System.DateTime(_ADD_S_Setting._VAL_DateTime.year,
                                                                                   _ADD_S_Setting._VAL_DateTime.month,
                                                                                   _ADD_S_Setting._VAL_DateTime.day,
                                                                                   _ADD_S_Setting._VAL_DateTime.hour,
                                                                                   _ADD_S_Setting._VAL_DateTime.min,
                                                                                   EditorGUILayout.IntField("S", _ADD_S_Setting._VAL_DateTime.sec, GUILayout.MinWidth(0))));

                    GUILayout.EndHorizontal();
                    EditorGUIUtility.labelWidth = 0;
                    GUILayout.EndVertical();
                    break;
                }

                default: {
                    break;
                }
                }

                //END
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                bool cancel = GUILayout.Button("Cancel");
                bool _add   = GUILayout.Button("Add!");

                if (cancel)
                {
                    _ADD_S_name      = "New Setting";
                    _ADD_S_type      = Setting.SettingType.STRING;
                    _ADD_S_Setting   = new Setting(_ADD_S_name, new SACString("Setting Value"), _ADD_S_type);
                    showAddSetting   = false;
                    showErrorSetting = false;
                }

                if (_add)
                {
                    if (CheckSettingAdd(sac.DefaultCustomSettings))
                    {
                        settingError     = "'" + _ADD_S_name + "' is already defined";
                        showErrorSetting = true;
                    }
                    else
                    {
                        sac.DefaultCustomSettings = AddTo(sac.DefaultCustomSettings, _ADD_S_Setting);
                        _ADD_S_name      = "New Setting";
                        _ADD_S_type      = Setting.SettingType.STRING;
                        _ADD_S_Setting   = new Setting(_ADD_S_name, new SACString("Setting Value"), _ADD_S_type);
                        showAddSetting   = false;
                        showErrorSetting = false;
                    }
                }

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();
            }

            GUILayout.BeginHorizontal();
            if (i > 0)
            {
                bool removeAll = GUILayout.Button("Remove All");
                if (removeAll)
                {
                    sac.DefaultCustomSettings = new Setting[] {};
                }
            }
            if (!showAddSetting)
            {
                bool add = GUILayout.Button("Add New Setting");
                if (add)
                {
                    showAddSetting = true;
                }
            }
            GUILayout.EndHorizontal();
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();
        }

        showFileName = EditorGUILayout.Foldout(showFileName, "Save File Name");
        if (showFileName)
        {
            EditorGUILayout.BeginVertical();
            GUIStyle italic = new GUIStyle();
            italic.fontStyle        = FontStyle.Italic;
            italic.normal.textColor = Color.blue;
            italic.hover.textColor  = Color.magenta;
            italic.padding.left     = 5;
            if (GUILayout.Button("Persistent Data Path/ (Click To Open)", italic))
            {
                Application.OpenURL(Application.persistentDataPath);
            }
            sac.FileName = EditorGUILayout.TextField(sac.FileName);
            EditorGUILayout.EndVertical();
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(sac);
        }

        serializedObject.ApplyModifiedProperties();

        GUILayout.Space(20);

        GUI.skin.box.padding         = defPadding;
        GUI.skin.box.alignment       = defBoxAlign;
        GUI.skin.textField.alignment = defAlign;
    }
コード例 #2
0
    /// <summary>
    /// Sets a specific settings value based on a key
    /// (If setting does not already exist, it will be created)
    /// </summary>
    /// <param name="name">The setting's name</param>
    /// <param name="val">The value to set</param>
    /// <returns>True if setting set, else false. (Will return false if canceled with EventHandler)</returns>
    public bool SetSetting(string name, SACObject val, Setting.SettingType type)
    {
        if (GetSettingValue(name) != null)
        {
            foreach (SACEventHandler handler in SettingsAndControls.EventHandlers)
            {
                SACEventHandler.SACChangeSettingEvent e = handler.OnSettingChange(new SACEventHandler.SACChangeSettingEvent(SettingsAndControls.LastLoadedSettings, SettingsAndControls.Settings, SettingsAndControls.Settings.names.IndexOf(name)));
                if (e.IsCanceled())
                {
                    return(false);
                }
            }
        }
        else
        {
            foreach (SACEventHandler handler in SettingsAndControls.EventHandlers)
            {
                SACEventHandler.SACAddSettingEvent e = handler.OnSettingAdd(new SACEventHandler.SACAddSettingEvent(new Setting(name, val, type)));
                if (e.IsCanceled())
                {
                    return(false);
                }
            }
        }
        int  i = 0;
        bool d = false;

        foreach (string str in names)
        {
            if (name == str)
            {
                d = true;
                break;
            }
            i++;
        }

        if (d)
        {
            switch (type)
            {
            case Setting.SettingType.BOOLEAN: {
                settings[i] = ((SACBool)val).ToString();
                break;
            }

            case Setting.SettingType.COLOR: {
                settings[i] = ((SACColor)val).ToString();
                break;
            }

            case Setting.SettingType.FLOAT: {
                settings[i] = ((SACFloat)val).ToString();
                break;
            }

            case Setting.SettingType.INTEGER: {
                settings[i] = ((SACInt)val).ToString();
                break;
            }

            case Setting.SettingType.QUATERNION: {
                settings[i] = ((SACQuaternion)val).ToString();
                break;
            }

            case Setting.SettingType.STRING: {
                settings[i] = ((SACString)val).ToString();
                break;
            }

            case Setting.SettingType.TIME: {
                settings[i] = ((SACDate)val).ToString();
                break;
            }

            case Setting.SettingType.VECTOR2: {
                settings[i] = ((SACVector2)val).ToString();
                break;
            }

            case Setting.SettingType.VECTOR3: {
                settings[i] = ((SACVector3)val).ToString();
                break;
            }

            case Setting.SettingType.VECTOR4: {
                settings[i] = ((SACVector4)val).ToString();
                break;
            }

            default: {
                break;
            }
            }
            types[i] = type;
        }
        else
        {
            names.Add(name);
            switch (type)
            {
            case Setting.SettingType.BOOLEAN: {
                settings.Add(((SACBool)val).ToString());
                break;
            }

            case Setting.SettingType.COLOR: {
                settings.Add(((SACColor)val).ToString());
                break;
            }

            case Setting.SettingType.FLOAT: {
                settings.Add(((SACFloat)val).ToString());
                break;
            }

            case Setting.SettingType.INTEGER: {
                settings.Add(((SACInt)val).ToString());
                break;
            }

            case Setting.SettingType.QUATERNION: {
                settings.Add(((SACQuaternion)val).ToString());
                break;
            }

            case Setting.SettingType.STRING: {
                settings.Add(((SACString)val).ToString());
                break;
            }

            case Setting.SettingType.TIME: {
                settings.Add(((SACDate)val).ToString());
                break;
            }

            case Setting.SettingType.VECTOR2: {
                settings.Add(((SACVector2)val).ToString());
                break;
            }

            case Setting.SettingType.VECTOR3: {
                settings.Add(((SACVector3)val).ToString());
                break;
            }

            case Setting.SettingType.VECTOR4: {
                settings.Add(((SACVector4)val).ToString());
                break;
            }

            default: {
                break;
            }
            }
            ;
            types.Add(type);
        }

        return(true);
    }