private void OnGUI() { ToolCommon.WindowHeader("UnlitWF / CleanUp material property", "CleanUp disabled values", "materialsから無効化されている機能の設定値をクリアします。"); var so = new SerializedObject(param); so.Update(); SerializedProperty prop; // スクロール開始 scroll = EditorGUILayout.BeginScrollView(scroll); // マテリアルリスト EditorGUILayout.LabelField("materials", EditorStyles.boldLabel); EditorGUILayout.PropertyField(so.FindProperty("materials"), new GUIContent("list"), true); EditorGUILayout.Space(); // マテリアルに UnlitWF 以外のシェーダが紛れている場合には警告 bool removeOther = ToolCommon.NoticeIfIllegalMaterials(param.materials); EditorGUILayout.Space(); // オプション EditorGUILayout.LabelField("options", EditorStyles.boldLabel); prop = so.FindProperty("resetUnused"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "UnUsed Properties (未使用の値) も一緒にクリアする"); prop = so.FindProperty("resetKeywords"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "ShaderKeywords (Shaderキーワード) も一緒にクリアする"); EditorGUILayout.Space(); so.ApplyModifiedPropertiesWithoutUndo(); so.SetIsDifferentCacheDirty(); // UnlitWF 以外のマテリアルを除去 if (removeOther) { param.materials = ToolCommon.FilterOnlyWFMaterial(param.materials); } if (ToolCommon.ExecuteButton("CleanUp", param.materials.Length == 0)) { WFMaterialEditUtility.CleanUpProperties(param); } EditorGUILayout.Space(); // スクロール終了 EditorGUILayout.EndScrollView(); }
private void OnGUI() { ToolCommon.WindowHeader("UnlitWF / Migration material", "Migration materials", "古いバージョンのUnlitWFで設定されたmaterialsを最新版に変換します。"); var so = new SerializedObject(param); so.Update(); // スクロール開始 scroll = EditorGUILayout.BeginScrollView(scroll); // マテリアルリスト EditorGUILayout.LabelField("materials", EditorStyles.boldLabel); EditorGUILayout.PropertyField(so.FindProperty("materials"), new GUIContent("list"), true); EditorGUILayout.Space(); // マテリアルに UnlitWF 以外のシェーダが紛れている場合には警告 bool removeOther = ToolCommon.NoticeIfIllegalMaterials(param.materials); EditorGUILayout.Space(); so.ApplyModifiedPropertiesWithoutUndo(); so.SetIsDifferentCacheDirty(); // UnlitWF 以外のマテリアルを除去 if (removeOther) { param.materials = ToolCommon.FilterOnlyWFMaterial(param.materials); } if (ToolCommon.ExecuteButton("Convert", param.materials.Length == 0)) { // 変換 WFMaterialEditUtility.MigrationMaterial(param); // ShaderGUI側のマテリアルキャッシュをリセット ShaderCustomEditor.ResetOldMaterialTable(); // 変更したマテリアルを保存 AssetDatabase.SaveAssets(); } EditorGUILayout.Space(); // スクロール終了 EditorGUILayout.EndScrollView(); }
private void OnGUI() { ToolCommon.WindowHeader("UnlitWF / Copy material property", "Copy properties", "source material の設定値を destination materials にコピーします。"); var so = new SerializedObject(param); so.Update(); // スクロール開始 scroll = EditorGUILayout.BeginScrollView(scroll); // マテリアルリスト EditorGUILayout.LabelField("destination materials", EditorStyles.boldLabel); EditorGUILayout.PropertyField(so.FindProperty("materialDestination"), new GUIContent("list"), true); EditorGUILayout.Space(); // マテリアルに UnlitWF 以外のシェーダが紛れている場合には警告 bool removeOther = ToolCommon.NoticeIfIllegalMaterials(param.materialDestination); EditorGUILayout.Space(); EditorGUILayout.LabelField("source materials", EditorStyles.boldLabel); EditorGUILayout.PropertyField(so.FindProperty("materialSource"), new GUIContent("material"), true); EditorGUILayout.Space(); ToolCommon.NoticeIfIllegalMaterials(new Material[] { param.materialSource }, false); EditorGUILayout.Space(); so.ApplyModifiedPropertiesWithoutUndo(); so.SetIsDifferentCacheDirty(); // 対象 EditorGUILayout.LabelField("copy target functions", EditorStyles.boldLabel); var updatedFunctions = new List <string>(); foreach (var func in WFShaderFunction.GetEnableFunctionList(param.materialSource)) { bool value = param.labels.Contains(func.Label); if (GUILayout.Toggle(value, string.Format("[{0}] {1}", func.Label, func.Name))) { updatedFunctions.Add(func.Label); } } if (!updatedFunctions.SequenceEqual(param.labels)) { param.labels = updatedFunctions.ToArray(); } EditorGUILayout.Space(); // UnlitWF 以外のマテリアルを除去 if (removeOther) { param.materialDestination = ToolCommon.FilterOnlyWFMaterial(param.materialDestination); } using (new EditorGUI.DisabledGroupScope(param.labels.Length == 0)) { if (ToolCommon.ExecuteButton("Copy Values", param.materialSource == null || param.materialDestination.Length == 0)) { WFMaterialEditUtility.CopyProperties(param); } } EditorGUILayout.Space(); // スクロール終了 EditorGUILayout.EndScrollView(); }
private void OnGUI() { ToolCommon.WindowHeader("UnlitWF / Reset material property", "Reset properties", "materialsの設定値を初期化します。"); var so = new SerializedObject(param); so.Update(); SerializedProperty prop; // スクロール開始 scroll = EditorGUILayout.BeginScrollView(scroll); // マテリアルリスト EditorGUILayout.LabelField("materials", EditorStyles.boldLabel); EditorGUILayout.PropertyField(so.FindProperty("materials"), new GUIContent("list"), true); EditorGUILayout.Space(); // マテリアルに UnlitWF 以外のシェーダが紛れている場合には警告 bool removeOther = ToolCommon.NoticeIfIllegalMaterials(param.materials); EditorGUILayout.Space(); // 対象(種類から) EditorGUILayout.LabelField("Reset by Type", EditorStyles.boldLabel); prop = so.FindProperty("resetColor"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "Color (色) をデフォルトに戻す"); prop = so.FindProperty("resetTexture"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "Texture (テクスチャ) をデフォルトに戻す"); prop = so.FindProperty("resetFloat"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "Float (数値) をデフォルトに戻す"); EditorGUILayout.Space(); // 対象(機能から) EditorGUILayout.LabelField("Reset by Function", EditorStyles.boldLabel); prop = so.FindProperty("resetColorAlpha"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "Color (色) の Alpha を 1.0 にする"); prop = so.FindProperty("resetLit"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "Lit & Lit Advance の設定をデフォルトに戻す"); EditorGUILayout.Space(); // オプション EditorGUILayout.LabelField("options", EditorStyles.boldLabel); prop = so.FindProperty("resetUnused"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "UnUsed Properties (未使用の値) も一緒にクリアする"); prop = so.FindProperty("resetKeywords"); prop.boolValue = GUILayout.Toggle(prop.boolValue, "ShaderKeywords (Shaderキーワード) も一緒にクリアする"); EditorGUILayout.Space(); so.ApplyModifiedPropertiesWithoutUndo(); so.SetIsDifferentCacheDirty(); // UnlitWF 以外のマテリアルを除去 if (removeOther) { param.materials = ToolCommon.FilterOnlyWFMaterial(param.materials); } if (ToolCommon.ExecuteButton("Reset Values", param.materials.Length == 0)) { WFMaterialEditUtility.ResetProperties(param); } EditorGUILayout.Space(); // スクロール終了 EditorGUILayout.EndScrollView(); }