369 lines
18 KiB
C#
369 lines
18 KiB
C#
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Reflection;
|
|
|
|
using Object = UnityEngine.Object;
|
|
|
|
namespace lilToon
|
|
{
|
|
public partial class lilToonInspector
|
|
{
|
|
private void DrawOutlineSettings(Material material)
|
|
{
|
|
if(!ShouldDrawBlock(PropertyBlock.Outline)) return;
|
|
if(isMultiVariants || isRefr || isFur || isGem || isFakeShadow || material.shader.name.Contains("Overlay")) return;
|
|
edSet.isShowOutline = lilEditorGUI.Foldout(GetLoc("sOutlineSetting"), edSet.isShowOutline);
|
|
DrawMenuButton(GetLoc("sAnchorOutline"), PropertyBlock.Outline);
|
|
if(edSet.isShowOutline)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxOuter);
|
|
if(isShowRenderMode)
|
|
{
|
|
if(isOutl != EditorGUILayout.ToggleLeft(GetLoc("sOutline"), isOutl, customToggleFont))
|
|
{
|
|
isOutl = !isOutl;
|
|
SetupMaterialWithRenderingMode(renderingModeBuf, transparentModeBuf);
|
|
}
|
|
}
|
|
else if(isCustomShader)
|
|
{
|
|
EditorGUILayout.LabelField(GetLoc("sOutline"), customToggleFont);
|
|
}
|
|
if(!isLite && isOutl)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxInnerHalf);
|
|
TextureGUI(ref edSet.isShowOutlineMap, mainColorRGBAContent, outlineTex, outlineColor, outlineTex_ScrollRotate, true, true);
|
|
EditorGUI.indentLevel++;
|
|
ToneCorrectionGUI(outlineTexHSVG);
|
|
if(lilEditorGUI.Button(GetLoc("sBake")))
|
|
{
|
|
outlineTex.textureValue = AutoBakeOutlineTexture(material);
|
|
outlineTexHSVG.vectorValue = lilConstants.defaultHSVG;
|
|
}
|
|
EditorGUI.indentLevel--;
|
|
lilEditorGUI.DrawLine();
|
|
GUILayout.Label(GetLoc("sHighlight"), boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
LocalizedPropertyColorWithAlpha(outlineLitColor);
|
|
if(outlineLitColor.colorValue.a > 0)
|
|
{
|
|
LocalizedProperty(outlineLitApplyTex);
|
|
float min = lilEditorGUI.GetRemapMinValue(outlineLitScale.floatValue, outlineLitOffset.floatValue);
|
|
float max = lilEditorGUI.GetRemapMaxValue(outlineLitScale.floatValue, outlineLitOffset.floatValue);
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUI.showMixedValue = alphaMaskScale.hasMixedValue || alphaMaskValue.hasMixedValue;
|
|
min = lilEditorGUI.Slider(Event.current.alt ? outlineLitScale.name + ", " + outlineLitOffset.name : "Min", min, -0.01f, 1.01f);
|
|
max = lilEditorGUI.Slider(Event.current.alt ? outlineLitScale.name + ", " + outlineLitOffset.name : "Max", max, -0.01f, 1.01f);
|
|
EditorGUI.showMixedValue = false;
|
|
if(EditorGUI.EndChangeCheck())
|
|
{
|
|
if(min == max) max += 0.001f;
|
|
outlineLitScale.floatValue = lilEditorGUI.GetRemapScaleValue(min, max);
|
|
outlineLitOffset.floatValue = lilEditorGUI.GetRemapOffsetValue(min, max);
|
|
}
|
|
LocalizedProperty(outlineLitShadowReceive);
|
|
}
|
|
EditorGUI.indentLevel--;
|
|
lilEditorGUI.DrawLine();
|
|
LocalizedProperty(outlineEnableLighting);
|
|
lilEditorGUI.DrawLine();
|
|
LocalizedPropertyTexture(widthMaskContent, outlineWidthMask, outlineWidth);
|
|
EditorGUI.indentLevel++;
|
|
LocalizedProperty(outlineFixWidth);
|
|
LocalizedProperty(outlineVertexR2Width);
|
|
LocalizedProperty(outlineDeleteMesh);
|
|
LocalizedProperty(outlineZBias);
|
|
LocalizedProperty(outlineDisableInVR);
|
|
EditorGUI.indentLevel--;
|
|
LocalizedPropertyTexture(normalMapContent, outlineVectorTex, outlineVectorScale);
|
|
LocalizedProperty(outlineVectorUVMode, 2);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
else if(isOutl)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxInnerHalf);
|
|
TextureGUI(ref edSet.isShowOutlineMap, mainColorRGBAContent, outlineTex, outlineColor, outlineTex_ScrollRotate, true, true);
|
|
LocalizedProperty(outlineEnableLighting);
|
|
lilEditorGUI.DrawLine();
|
|
LocalizedPropertyTexture(widthMaskContent, outlineWidthMask, outlineWidth);
|
|
EditorGUI.indentLevel++;
|
|
LocalizedProperty(outlineFixWidth);
|
|
LocalizedProperty(outlineVertexR2Width);
|
|
LocalizedProperty(outlineDeleteMesh);
|
|
LocalizedProperty(outlineZBias);
|
|
EditorGUI.indentLevel--;
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
}
|
|
|
|
private void DrawOutlineSettingsSimple(Material material)
|
|
{
|
|
if(!ShouldDrawBlock(PropertyBlock.Outline)) return;
|
|
if(isMultiVariants || isRefr || isFur || isGem || isFakeShadow || material.shader.name.Contains("Overlay")) return;
|
|
edSet.isShowOutline = lilEditorGUI.Foldout(GetLoc("sOutlineSetting"), edSet.isShowOutline);
|
|
DrawMenuButton(GetLoc("sAnchorOutline"), PropertyBlock.Outline);
|
|
if(edSet.isShowOutline)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxOuter);
|
|
if(isShowRenderMode)
|
|
{
|
|
if(isOutl != EditorGUILayout.ToggleLeft(GetLoc("sOutline"), isOutl, customToggleFont))
|
|
{
|
|
isOutl = !isOutl;
|
|
SetupMaterialWithRenderingMode(renderingModeBuf, transparentModeBuf);
|
|
}
|
|
}
|
|
else if(isCustomShader)
|
|
{
|
|
EditorGUILayout.LabelField(GetLoc("sOutline"), customToggleFont);
|
|
}
|
|
if(!isLite && isOutl)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxInnerHalf);
|
|
TextureGUI(ref edSet.isShowOutlineMap, mainColorRGBAContent, outlineTex, outlineColor, outlineTex_ScrollRotate, true, true);
|
|
LocalizedPropertyTexture(widthMaskContent, outlineWidthMask, outlineWidth);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
else if(isOutl)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxInnerHalf);
|
|
TextureGUI(ref edSet.isShowOutlineMap, mainColorRGBAContent, outlineTex, outlineColor, outlineTex_ScrollRotate, true, true);
|
|
LocalizedPropertyTexture(widthMaskContent, outlineWidthMask, outlineWidth);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
}
|
|
|
|
private void DrawSpecularMode()
|
|
{
|
|
int specularMode = 0;
|
|
if(specularToon.floatValue == 0.0f) specularMode = 1;
|
|
if(specularToon.floatValue == 1.0f) specularMode = 2;
|
|
if(applySpecular.floatValue == 0.0f) specularMode = 0;
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUI.showMixedValue = specularToon.hasMixedValue || applySpecular.hasMixedValue;
|
|
specularMode = lilEditorGUI.Popup(GetLoc("sSpecularMode"),specularMode,new string[]{GetLoc("sSpecularNone"),GetLoc("sSpecularReal"),GetLoc("sSpecularToon")});
|
|
EditorGUI.showMixedValue = false;
|
|
if(EditorGUI.EndChangeCheck())
|
|
{
|
|
if(specularMode == 0)
|
|
{
|
|
applySpecular.floatValue = 0.0f;
|
|
specularToon.floatValue = 0.0f;
|
|
}
|
|
if(specularMode == 1)
|
|
{
|
|
applySpecular.floatValue = 1.0f;
|
|
specularToon.floatValue = 0.0f;
|
|
EditorGUI.indentLevel++;
|
|
LocalizedProperty(specularNormalStrength);
|
|
LocalizedProperty(applySpecularFA);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
if(specularMode == 2)
|
|
{
|
|
applySpecular.floatValue = 1.0f;
|
|
specularToon.floatValue = 1.0f;
|
|
EditorGUI.indentLevel++;
|
|
LocalizedProperty(specularNormalStrength);
|
|
LocalizedProperty(specularBorder);
|
|
LocalizedProperty(specularBlur);
|
|
LocalizedProperty(applySpecularFA);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
}
|
|
|
|
if(specularMode == 1)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
LocalizedProperty(specularNormalStrength);
|
|
LocalizedProperty(applySpecularFA);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
if(specularMode == 2)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
LocalizedProperty(specularNormalStrength);
|
|
LocalizedProperty(specularBorder);
|
|
LocalizedProperty(specularBlur);
|
|
LocalizedProperty(applySpecularFA);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
}
|
|
|
|
private void DrawStencilSettings(Material material)
|
|
{
|
|
if(!ShouldDrawBlock(PropertyBlock.Stencil)) return;
|
|
edSet.isShowStencil = lilEditorGUI.Foldout(GetLoc("sStencilSetting"), edSet.isShowStencil);
|
|
DrawMenuButton(GetLoc("sAnchorStencil"), PropertyBlock.Stencil);
|
|
if(edSet.isShowStencil)
|
|
{
|
|
if(lilEditorGUI.Button("Reset"))
|
|
{
|
|
isStWr = false;
|
|
stencilRef.floatValue = 0;
|
|
stencilReadMask.floatValue = 255.0f;
|
|
stencilWriteMask.floatValue = 255.0f;
|
|
stencilComp.floatValue = (float)CompareFunction.Always;
|
|
stencilPass.floatValue = (float)StencilOp.Keep;
|
|
stencilFail.floatValue = (float)StencilOp.Keep;
|
|
stencilZFail.floatValue = (float)StencilOp.Keep;
|
|
if(transparentModeBuf == TransparentMode.TwoPass)
|
|
{
|
|
preStencilRef.floatValue = 0;
|
|
preStencilReadMask.floatValue = 255.0f;
|
|
preStencilWriteMask.floatValue = 255.0f;
|
|
preStencilComp.floatValue = (float)CompareFunction.Always;
|
|
preStencilPass.floatValue = (float)StencilOp.Keep;
|
|
preStencilFail.floatValue = (float)StencilOp.Keep;
|
|
preStencilZFail.floatValue = (float)StencilOp.Keep;
|
|
}
|
|
if(isOutl)
|
|
{
|
|
outlineStencilRef.floatValue = 0;
|
|
outlineStencilReadMask.floatValue = 255.0f;
|
|
outlineStencilWriteMask.floatValue = 255.0f;
|
|
outlineStencilComp.floatValue = (float)CompareFunction.Always;
|
|
outlineStencilPass.floatValue = (float)StencilOp.Keep;
|
|
outlineStencilFail.floatValue = (float)StencilOp.Keep;
|
|
outlineStencilZFail.floatValue = (float)StencilOp.Keep;
|
|
}
|
|
if(isFur)
|
|
{
|
|
furStencilRef.floatValue = 0;
|
|
furStencilReadMask.floatValue = 255.0f;
|
|
furStencilWriteMask.floatValue = 255.0f;
|
|
furStencilComp.floatValue = (float)CompareFunction.Always;
|
|
furStencilPass.floatValue = (float)StencilOp.Keep;
|
|
furStencilFail.floatValue = (float)StencilOp.Keep;
|
|
furStencilZFail.floatValue = (float)StencilOp.Keep;
|
|
}
|
|
}
|
|
|
|
EditorGUILayout.BeginVertical(customBox);
|
|
LocalizedProperty(stencilRef);
|
|
LocalizedProperty(stencilReadMask);
|
|
LocalizedProperty(stencilWriteMask);
|
|
LocalizedProperty(stencilComp);
|
|
LocalizedProperty(stencilPass);
|
|
LocalizedProperty(stencilFail);
|
|
LocalizedProperty(stencilZFail);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
if(transparentModeBuf == TransparentMode.TwoPass)
|
|
{
|
|
EditorGUILayout.LabelField("PrePass");
|
|
EditorGUILayout.BeginVertical(customBox);
|
|
LocalizedProperty(preStencilRef);
|
|
LocalizedProperty(preStencilReadMask);
|
|
LocalizedProperty(preStencilWriteMask);
|
|
LocalizedProperty(preStencilComp);
|
|
LocalizedProperty(preStencilPass);
|
|
LocalizedProperty(preStencilFail);
|
|
LocalizedProperty(preStencilZFail);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
|
|
if(isOutl)
|
|
{
|
|
EditorGUILayout.LabelField(GetLoc("sOutline"));
|
|
EditorGUILayout.BeginVertical(customBox);
|
|
LocalizedProperty(outlineStencilRef);
|
|
LocalizedProperty(outlineStencilReadMask);
|
|
LocalizedProperty(outlineStencilWriteMask);
|
|
LocalizedProperty(outlineStencilComp);
|
|
LocalizedProperty(outlineStencilPass);
|
|
LocalizedProperty(outlineStencilFail);
|
|
LocalizedProperty(outlineStencilZFail);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
|
|
if(isFur)
|
|
{
|
|
EditorGUILayout.LabelField(GetLoc("sFur"));
|
|
EditorGUILayout.BeginVertical(customBox);
|
|
LocalizedProperty(furStencilRef);
|
|
LocalizedProperty(furStencilReadMask);
|
|
LocalizedProperty(furStencilWriteMask);
|
|
LocalizedProperty(furStencilComp);
|
|
LocalizedProperty(furStencilPass);
|
|
LocalizedProperty(furStencilFail);
|
|
LocalizedProperty(furStencilZFail);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DrawEncryptionSettings()
|
|
{
|
|
if(lilDirectoryManager.ExistsEncryption() || lilDirectoryManager.ExistsAvaCryptV2())
|
|
{
|
|
if(!ShouldDrawBlock(PropertyBlock.Encryption)) return;
|
|
edSet.isShowEncryption = lilEditorGUI.Foldout(GetLoc("sEncryption"), edSet.isShowEncryption);
|
|
DrawMenuButton(GetLoc("sAnchorEncryption"), PropertyBlock.Encryption);
|
|
if(edSet.isShowEncryption)
|
|
{
|
|
EditorGUILayout.BeginVertical(boxOuter);
|
|
EditorGUILayout.LabelField(GetLoc("sEncryption"), customToggleFont);
|
|
DrawMenuButton(GetLoc("sAnchorEncryption"), PropertyBlock.Encryption);
|
|
EditorGUILayout.BeginVertical(boxInnerHalf);
|
|
EditorGUILayout.HelpBox("This will be removed in the future.", MessageType.Warning);
|
|
LocalizedProperty(ignoreEncryption);
|
|
if(lilDirectoryManager.ExistsEncryption())
|
|
{
|
|
LocalizedProperty(keys);
|
|
}
|
|
else
|
|
{
|
|
LocalizedProperty(bitKey0);
|
|
LocalizedProperty(bitKey1);
|
|
LocalizedProperty(bitKey2);
|
|
LocalizedProperty(bitKey3);
|
|
LocalizedProperty(bitKey4);
|
|
LocalizedProperty(bitKey5);
|
|
LocalizedProperty(bitKey6);
|
|
LocalizedProperty(bitKey7);
|
|
LocalizedProperty(bitKey8);
|
|
LocalizedProperty(bitKey9);
|
|
LocalizedProperty(bitKey10);
|
|
LocalizedProperty(bitKey11);
|
|
LocalizedProperty(bitKey12);
|
|
LocalizedProperty(bitKey13);
|
|
LocalizedProperty(bitKey14);
|
|
LocalizedProperty(bitKey15);
|
|
LocalizedProperty(bitKey16);
|
|
LocalizedProperty(bitKey17);
|
|
LocalizedProperty(bitKey18);
|
|
LocalizedProperty(bitKey19);
|
|
LocalizedProperty(bitKey20);
|
|
LocalizedProperty(bitKey21);
|
|
LocalizedProperty(bitKey22);
|
|
LocalizedProperty(bitKey23);
|
|
LocalizedProperty(bitKey24);
|
|
LocalizedProperty(bitKey25);
|
|
LocalizedProperty(bitKey26);
|
|
LocalizedProperty(bitKey27);
|
|
LocalizedProperty(bitKey28);
|
|
LocalizedProperty(bitKey29);
|
|
LocalizedProperty(bitKey30);
|
|
LocalizedProperty(bitKey31);
|
|
}
|
|
EditorGUILayout.EndVertical();
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|