示例#1
0
    public void Hydrate()
    {
        if (IsHydrated == false)
        {
            Octaves      = ScriptableObject.CreateInstance <Int_MinMax_Reference>();
            Octaves.name = "Octaves";
            Octaves.Hydrate();

            Scale      = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            Scale.name = "Scale";
            Scale.Hydrate();

            Persistance      = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            Persistance.name = "Persistance";
            Persistance.Hydrate();

            Lacunarity      = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            Lacunarity.name = "Lacunarity";
            Lacunarity.Hydrate();

            Root      = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            Root.name = "Root";
            Root.Hydrate();

            Magnitude      = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            Magnitude.name = "Magnitude";
            Magnitude.Hydrate();
        }
    }
    public void Hydrate()
    {
        if (IsHydrated == false)
        {
            ExtrudeMap = ScriptableObject.CreateInstance <TerrainLayer_Variable>();
            ExtrudeMap.Hydrate();
            ExtrudeMap.IsHydrated = true;

            ExtrudeOctaves = ScriptableObject.CreateInstance <Int_MinMax_Reference>();
            ExtrudeOctaves.Hydrate();
            ExtrudeOctaves.IsHydrated = true;

            ExtrudeScale = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            ExtrudeScale.Hydrate();
            ExtrudeScale.IsHydrated = true;

            ExtrudePersistance = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            ExtrudePersistance.Hydrate();
            ExtrudePersistance.IsHydrated = true;

            ExtrudeLacunarity = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            ExtrudeLacunarity.Hydrate();
            ExtrudeLacunarity.IsHydrated = true;

            ExtrudeRoot = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            ExtrudeRoot.Hydrate();
            ExtrudeRoot.IsHydrated = true;

            ExtrudeMagnitude = ScriptableObject.CreateInstance <Float_MinMax_Reference>();
            ExtrudeMagnitude.Hydrate();
            ExtrudeMagnitude.IsHydrated = true;
        }
    }
示例#3
0
    public void DrawRowFor_Local_Int_MinMax_Values(string name, Int_MinMax_Reference reference, Rect position)
    {
        if (states[name] == state.EDITING)
        {
            reference.Min = EditorGUI.IntField(new Rect(position.x + 20f, position.y, 60f, 16f), reference.Min);
            reference.Max = EditorGUI.IntField(new Rect(position.x + 80f, position.y, 60f, 16f), reference.Max);

            reference.Value = (int)GUI.HorizontalSlider(
                new Rect(position.x + 140f, position.y, 100f, 16f),
                reference.Value,
                reference.Min,
                reference.Max
                );

            reference.Value = EditorGUI.IntField(
                new Rect(position.x + 240f, position.y, 80f, 16f),
                reference.Value
                );

            if (GUI.Button(new Rect(position.x + 325f, position.y, 20f, 16f), "N"))
            {
                states[name] = state.NAMING;
            }
        }
        else
        {
            names[name] = EditorGUI.TextField(
                new Rect(position.x + 20f, position.y, 207.5f, 16f),
                name
                );

            if (GUI.Button(new Rect(position.x + 230f, position.y, 20f, 16f), "S"))
            {
                CreateFetchAndClearAsset(name, reference);
            }

            if (GUI.Button(new Rect(position.x + 250f, position.y, 20f, 16f), "C"))
            {
                Clear(name);
            }
        }
    }
示例#4
0
    protected void Int_MinMax_CreateFetchAndClearAsset(string name, Int_MinMax_Reference reference)
    {
        string path = $"Resources/Serialized Data/Variables/Int/{name}.asset";

        Int_MinMax_Variable variable = ScriptableObject.CreateInstance <Int_MinMax_Variable>();

        variable.Min   = reference.Min;
        variable.Max   = reference.Max;
        variable.Value = reference.Value;

        AssetDatabase.CreateAsset(variable, path);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();

        Int_MinMax_Variable loaded = AssetDatabase.LoadAssetAtPath <Int_MinMax_Variable>(path);

        reference.UseLocal = false;
        reference.Shared   = loaded;

        Clear(name);
    }
示例#5
0
    protected void DrawLocal_Int_MinMax_SharedButtons(
        string name,
        Int_MinMax_Reference input,
        int x,
        int y
        )
    {
        if (GUI.Button(new Rect(x, y, button_width, row_height), input.UseLocal ? "L" : "S"))
        {
            GenericMenu menu = new GenericMenu();

            menu.AddItem(
                new GUIContent("Local Value"),
                input.UseLocal == true,
                (object _) => input.UseLocal = true,
                null
                );

            menu.AddItem(
                new GUIContent("Shared Value"),
                input.UseLocal == false,
                (object _) => {
                if (input != null)
                {
                    states[name] = state.EDITING;
                }
                else
                {
                    states[name] = state.NAMING;
                }

                input.UseLocal = false;
            },
                null
                );

            menu.ShowAsContext();
        }
    }
示例#6
0
    protected Int_MinMax_Reference Int_MinMax_Field(
        string context,
        string name,
        Int_MinMax_Reference input,
        int y
        )
    {
        Int_MinMax_Reference property = input;

        string contextual_name = $"{context}{name}";

        EditorGUI.PrefixLabel(
            new Rect(15, y, 80, 16),
            new GUIContent(name)
            );

        if (GUI.Button(new Rect(110, y, 20, 16), property.UseLocal ? "L" : "S"))
        {
            GenericMenu menu = new GenericMenu();

            menu.AddItem(
                new GUIContent("Local Value"),
                property.UseLocal == true,
                (object result) => property.UseLocal = true,
                null
                );

            menu.AddItem(
                new GUIContent("Shared Value"),
                property.UseLocal == false,
                (object result) => {
                if (property != null)
                {
                    states[contextual_name] = state.EDITING;
                }
                else
                {
                    states[contextual_name] = state.NAMING;
                }

                property.UseLocal = false;
            },
                null
                );

            menu.ShowAsContext();
        }

        if (property.UseLocal)
        {
            if (states[contextual_name] == state.EDITING)
            {
                property.Min = EditorGUI.IntField(
                    new Rect(135, y, 25, 16),
                    property.Min
                    );

                property.Max = EditorGUI.IntField(
                    new Rect(165, y, 25, 16),
                    property.Max
                    );

                property.Value = EditorGUI.IntSlider(
                    new Rect(195, y, 220, 16),
                    property.Value,
                    property.Min,
                    property.Max
                    );

                if (GUI.Button(new Rect(420, y, 20, 16), "N"))
                {
                    states[contextual_name] = state.NAMING;
                }
            }
            else
            {
                names[contextual_name] = EditorGUI.TextField(new Rect(135, y, 207, 16), names[contextual_name]);

                if (GUI.Button(new Rect(347, y, 20, 16), "S"))
                {
                    string path = $"Assets/Serialized Data/Variables/{context}/{names[contextual_name]}.asset";

                    Int_MinMax_Variable variable = ScriptableObject.CreateInstance <Int_MinMax_Variable>();

                    variable.name  = names[contextual_name];
                    variable.Min   = property.Min;
                    variable.Max   = property.Max;
                    variable.Value = property.Value;

                    AssetDatabase.CreateAsset(variable, path);
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();

                    Int_MinMax_Variable loaded = AssetDatabase.LoadAssetAtPath <Int_MinMax_Variable>(path);

                    property.UseLocal = false;
                    property.Shared   = loaded;

                    states[contextual_name] = state.EDITING;
                    names[contextual_name]  = "";
                }
                else if (GUI.Button(new Rect(372, y, 20, 16), "C"))
                {
                    states[contextual_name] = state.EDITING;
                    names[contextual_name]  = "";
                }
            }
        }
        else
        {
            property.Shared = EditorGUI.ObjectField(
                new Rect(135, y, 252, 16),
                property.Shared,
                typeof(Int_MinMax_Variable),
                false
                ) as Int_MinMax_Variable;
        }

        return(property);
    }
示例#7
0
    protected void Int_MinMax_Field(
        string context,
        string name,
        Int_MinMax_Reference input,
        int x,
        int y
        )
    {
        string contextual_name = $"{context}{name}";

        EditorGUI.PrefixLabel(
            new Rect(x, y, label_width, row_height),
            new GUIContent(name)
            );

        DrawLocal_Int_MinMax_SharedButtons(name, input, x += full_label_width, y);

        if (input.UseLocal)
        {
            if (states[contextual_name] == state.EDITING)
            {
                input.Min       = EditorGUI.IntField(
                    new Rect(x += full_button_width, y, limit_width, row_height),
                    input.Min
                    );

                input.Max       = EditorGUI.IntField(
                    new Rect(x += full_limit_width, y, limit_width, row_height),
                    input.Max
                    );

                input.Value     = (int)GUI.HorizontalSlider(
                    new Rect(x += full_limit_width, y, slider_width, row_height),
                    input.Value,
                    input.Min,
                    input.Max
                    );

                input.Value     = EditorGUI.IntField(
                    new Rect(x += full_slider_width, y, value_width, row_height),
                    input.Value
                    );

                if (GUI.Button(new Rect(x += full_value_width, y, button_width, row_height), "N"))
                {
                    states[contextual_name] = state.NAMING;
                }
            }
            else
            {
                names[contextual_name] = EditorGUI.TextField(
                    new Rect(x        += full_button_width, y, text_width, row_height),
                    names[contextual_name]
                    );

                if (GUI.Button(new Rect(x += full_text_width, y, button_width, row_height), "S"))
                {
                    string path = $"Assets/Serialized Data/Variables/Int/{names[contextual_name]}.asset";

                    Int_MinMax_Variable variable = ScriptableObject.CreateInstance <Int_MinMax_Variable>();

                    variable.name  = names[contextual_name];
                    variable.Min   = input.Min;
                    variable.Max   = input.Max;
                    variable.Value = input.Value;

                    AssetDatabase.CreateAsset(variable, path);
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();

                    Int_MinMax_Variable loaded = AssetDatabase.LoadAssetAtPath <Int_MinMax_Variable>(path);

                    input.UseLocal = false;
                    input.Shared   = loaded;

                    states[contextual_name] = state.EDITING;
                    name = "";
                }
                else if (GUI.Button(new Rect(x += full_button_width, y, button_width, row_height), "C"))
                {
                    states[contextual_name] = state.EDITING;
                    name = "";
                }
            }
        }
        else
        {
            input.Shared    = EditorGUI.ObjectField(
                new Rect(x += full_button_width, y, full_obj_width, row_height),
                input.Shared,
                typeof(Int_MinMax_Variable),
                false
                ) as Int_MinMax_Variable;
        }
    }