124 lines
4.8 KiB
C#
124 lines
4.8 KiB
C#
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using static AllIn13DShader.NoiseCreatorTool;
|
|
|
|
namespace AllIn13DShader
|
|
{
|
|
public class NoiseCreatorDrawer
|
|
{
|
|
private NoiseCreatorTool noiseCreatorTool;
|
|
private CommonStyles commonStyles;
|
|
|
|
private NoiseCreatorValues Values
|
|
{
|
|
get
|
|
{
|
|
return noiseCreatorTool.values;
|
|
}
|
|
}
|
|
|
|
public NoiseCreatorDrawer(NoiseCreatorTool noiseCreatorTool, CommonStyles commonStyles)
|
|
{
|
|
this.noiseCreatorTool = noiseCreatorTool;
|
|
this.commonStyles = commonStyles;
|
|
}
|
|
|
|
public void Draw()
|
|
{
|
|
GUILayout.Label("Tileable Noise Creator", commonStyles.bigLabel);
|
|
GUILayout.Space(20);
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
{
|
|
EditorGUILayout.BeginVertical(GUILayout.MaxWidth(550));
|
|
{
|
|
if (Values.noisePreview == null)
|
|
{
|
|
GUILayout.Label("*Change a property to start editing a Noise texture", EditorStyles.boldLabel);
|
|
}
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUILayout.BeginHorizontal();
|
|
{
|
|
GUILayout.Label("Noise Type:", GUILayout.MaxWidth(145));
|
|
Values.noiseType = (NoiseTypes)EditorGUILayout.EnumPopup(Values.noiseType, GUILayout.MaxWidth(200));
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
noiseCreatorTool.NoiseSetMaterial();
|
|
noiseCreatorTool.CheckCreationNoiseTextures();
|
|
noiseCreatorTool.UpdateNoiseMatAndRender();
|
|
}
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
if (Values.isFractalNoise)
|
|
{
|
|
EditorUtils.TextureEditorFloatParameter("Scale X", ref Values.noiseScaleX, 0.1f, 50f, 4f);
|
|
if (!Values.noiseSquareScale) EditorUtils.TextureEditorFloatParameter("Scale Y", ref Values.noiseScaleY, 0.1f, 50f, 4f);
|
|
}
|
|
else
|
|
{
|
|
EditorUtils.TextureEditorFloatParameter("Scale X", ref Values.noiseScaleX, 0.1f, 50f, 10f);
|
|
if (!Values.noiseSquareScale) EditorUtils.TextureEditorFloatParameter("Scale Y", ref Values.noiseScaleY, 0.1f, 50f, 10f);
|
|
}
|
|
Values.noiseSquareScale = EditorGUILayout.Toggle("Square Scale?", Values.noiseSquareScale, GUILayout.MaxWidth(200));
|
|
if (Values.noiseSquareScale) Values.noiseScaleY = Values.noiseScaleX;
|
|
if (Values.noiseType == NoiseTypes.Fractal) EditorUtils.TextureEditorFloatParameter("Fractal Amount", ref Values.noiseFractalAmount, 1f, 10f, 8f);
|
|
else if (Values.noiseType == NoiseTypes.Perlin) EditorUtils.TextureEditorFloatParameter("Fractal Amount", ref Values.noiseFractalAmount, 1f, 10f, 1f);
|
|
else if (Values.noiseType == NoiseTypes.Billow) EditorUtils.TextureEditorFloatParameter("Fractal Amount", ref Values.noiseFractalAmount, 1f, 10f, 4f);
|
|
else EditorUtils.TextureEditorFloatParameter("Jitter", ref Values.noiseJitter, 0.0f, 2f, 1f);
|
|
EditorUtils.TextureEditorFloatParameter("Contrast", ref Values.noiseContrast, 0.1f, 10f, 1f);
|
|
EditorUtils.TextureEditorFloatParameter("Brightness", ref Values.noiseBrightness, -1f, 1f, 0f);
|
|
EditorUtils.TextureEditorIntParameter("Random Seed", ref Values.noiseSeed, 0, 100, 0);
|
|
Values.noiseInverted = EditorGUILayout.Toggle("Inverted?", Values.noiseInverted);
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
if (Values.noiseMaterial == null)
|
|
{
|
|
noiseCreatorTool.NoiseSetMaterial();
|
|
}
|
|
noiseCreatorTool.CheckCreationNoiseTextures();
|
|
|
|
noiseCreatorTool.UpdateNoiseMatAndRender();
|
|
}
|
|
|
|
GUILayout.Space(20);
|
|
EditorGUILayout.BeginHorizontal();
|
|
{
|
|
GUILayout.Label("Noise Size:", GUILayout.MaxWidth(145));
|
|
Values.noiseSize = (TextureSizes)EditorGUILayout.EnumPopup(Values.noiseSize, GUILayout.MaxWidth(200));
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
EditorGUILayout.BeginHorizontal();
|
|
{
|
|
GUILayout.Label("New Noise Filtering: ", GUILayout.MaxWidth(145));
|
|
Values.noiseFiltering = (FilterMode)EditorGUILayout.EnumPopup(Values.noiseFiltering, GUILayout.MaxWidth(200));
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
EditorGUILayout.EndVertical();
|
|
|
|
if (Values.noisePreview != null) GUILayout.Label(Values.noisePreview, GUILayout.MaxWidth(450), GUILayout.MaxHeight(450));
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
|
|
GUILayout.Space(20);
|
|
GUILayout.Label("Select the folder where new Noise Textures will be saved", EditorStyles.boldLabel);
|
|
GlobalConfiguration.instance.NoiseSavePath = EditorUtils.DrawSelectorFolder(GlobalConfiguration.instance.NoiseSavePath, /*AllIn13DShaderConfig.NOISES_SAVE_PATH_DEFAULT,*/ "Noises");
|
|
|
|
if (Directory.Exists(GlobalConfiguration.instance.NoiseSavePath) && Values.noisePreview != null)
|
|
{
|
|
if (GUILayout.Button("Save Noise Texture", GUILayout.MaxWidth(CommonStyles.BUTTON_WIDTH)))
|
|
{
|
|
noiseCreatorTool.CreateNoiseTex();
|
|
EditorUtils.SaveTextureAsPNG(GlobalConfiguration.instance.NoiseSavePath, "Noise", "Noises",
|
|
Values.finalNoiseTex, Values.noiseFiltering, TextureImporterType.Default, TextureWrapMode.Clamp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |