ECM2
This commit is contained in:
142
Assets/RapidIcon/Editor/Scripts/Windows/CopyWindow.cs
Normal file
142
Assets/RapidIcon/Editor/Scripts/Windows/CopyWindow.cs
Normal file
@@ -0,0 +1,142 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace RapidIcon_1_7_2
|
||||
{
|
||||
public class CopyWindow : EditorWindow
|
||||
{
|
||||
public static CopyWindow window;
|
||||
private static int option;
|
||||
private static int subOption;
|
||||
private static int selectedVariantIdx;
|
||||
private static IconEditor iconEditor;
|
||||
|
||||
public static void Init(IconEditor editor)
|
||||
{
|
||||
window = (CopyWindow)GetWindow(typeof(CopyWindow), true, "Copy to other icons");
|
||||
window.position = new Rect(Screen.currentResolution.width / 2 - 230, Screen.currentResolution.height / 2 - 64, 460, 128);
|
||||
|
||||
iconEditor = editor;
|
||||
selectedVariantIdx = iconEditor.currentIconSet.icons.IndexOf(iconEditor.currentIcon);
|
||||
|
||||
window.Show();
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.Space(4);
|
||||
GUILayout.Label("Copy to");
|
||||
|
||||
//---Draw dropdown list of selected assets---//
|
||||
|
||||
string[] options = new string[] { "All variants of this icon", "Currently selected variant of selected icons", "All variants of selected icons", "Specific variant of selected icons" };
|
||||
option = EditorGUILayout.Popup(option, options);
|
||||
|
||||
string[] subOptions = new string[] { "Current tab only", "All tabs" };
|
||||
subOption = EditorGUILayout.Popup(subOption, subOptions);
|
||||
|
||||
if (option == 3)
|
||||
{
|
||||
selectedVariantIdx = EditorGUILayout.IntField("Variant Index", selectedVariantIdx);
|
||||
if (selectedVariantIdx < 0)
|
||||
selectedVariantIdx = 0;
|
||||
|
||||
bool showWarning = false;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
if (selectedVariantIdx >= iconSet.icons.Count)
|
||||
{
|
||||
showWarning = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (showWarning)
|
||||
{
|
||||
GUIStyle s = new GUIStyle(GUI.skin.label);
|
||||
s.normal.textColor = new Color(1.0f, 0.5f, 0.0f, 1.0f);
|
||||
GUILayout.Label("Not all selected icons have a variant at index " + selectedVariantIdx + ", a new variant will be created", s);
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
GUILayout.BeginHorizontal();
|
||||
GUILayout.FlexibleSpace();
|
||||
if (GUILayout.Button("Copy"))
|
||||
{
|
||||
DoCopy();
|
||||
window.Close();
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
private void DoCopy()
|
||||
{
|
||||
switch (option)
|
||||
{
|
||||
case 0:
|
||||
int idx = 0;
|
||||
int count = iconEditor.currentIconSet.icons.Count;
|
||||
foreach (Icon icon in iconEditor.currentIconSet.icons)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Copy to Other Icons", "Copying to icon (" + idx + "/" + count + ")", (float)(idx++)/count);
|
||||
Utils.CopyIconSettings(iconEditor.currentIcon, icon, subOption == 0 ? iconEditor.tab : -1);
|
||||
Utils.UpdateIcon(icon, iconEditor);
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
idx = 0;
|
||||
count = iconEditor.assetGrid.selectedIconSets.Count;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Copy to Other Icons", "Copying to icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
Icon icon = iconSet.GetCurrentIcon();
|
||||
Utils.CopyIconSettings(iconEditor.currentIcon, icon, subOption == 0 ? iconEditor.tab : -1);
|
||||
Utils.UpdateIcon(icon, iconEditor);
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
idx = 0;
|
||||
count = iconEditor.assetGrid.selectedIconSets.Count;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Copy to Other Icons", "Copying to icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
foreach (Icon icon in iconSet.icons)
|
||||
{
|
||||
Utils.CopyIconSettings(iconEditor.currentIcon, icon, subOption == 0 ? iconEditor.tab : -1);
|
||||
Utils.UpdateIcon(icon, iconEditor);
|
||||
}
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
idx = 0;
|
||||
count = iconEditor.assetGrid.selectedIconSets.Count;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Copy to Other Icons", "Copying to icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
Icon icon;
|
||||
if (iconSet.icons.Count > selectedVariantIdx)
|
||||
icon = iconSet.icons[selectedVariantIdx];
|
||||
else
|
||||
{
|
||||
icon = iconSet.AddDefaultIcon(iconEditor.assetGrid, new ObjectPathPair { path = iconSet.assetPath, UnityEngine_object = iconSet.assetObject });
|
||||
iconSet.iconIndex = iconSet.icons.Count - 1;
|
||||
icon.iconSettings.exportName += " (" + iconSet.iconIndex + ")";
|
||||
}
|
||||
|
||||
Utils.CopyIconSettings(iconEditor.currentIcon, icon, subOption == 0 ? iconEditor.tab : -1);
|
||||
Utils.UpdateIcon(icon, iconEditor);
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/RapidIcon/Editor/Scripts/Windows/CopyWindow.cs.meta
Normal file
11
Assets/RapidIcon/Editor/Scripts/Windows/CopyWindow.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2be791c4489377a4ca53adc5e9e2b9ee
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
147
Assets/RapidIcon/Editor/Scripts/Windows/RapidIconWindow.cs
Normal file
147
Assets/RapidIcon/Editor/Scripts/Windows/RapidIconWindow.cs
Normal file
@@ -0,0 +1,147 @@
|
||||
using UnityEditor;
|
||||
using UnityEditor.SceneManagement;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace RapidIcon_1_7_2
|
||||
{
|
||||
public class RapidIconWindow : EditorWindow
|
||||
{
|
||||
public static RapidIconWindow window;
|
||||
|
||||
public AssetList assetList;
|
||||
public DraggableSeparator leftSeparator, rightSeparator;
|
||||
public AssetGrid assetGrid;
|
||||
public IconEditor iconEditor;
|
||||
public static bool dontSaveOnExit;
|
||||
public bool forceCloseDontSave;
|
||||
|
||||
[MenuItem("Tools/RapidIcon")]
|
||||
public static void Init()
|
||||
{
|
||||
SessionState.SetBool("rapidicon_forceclose", false);
|
||||
SessionState.SetBool("rapidicon_loaded", true);
|
||||
|
||||
if (!VersionControl.PreLoadCheck())
|
||||
return;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Display RapidIcon window
|
||||
*--------------------------------------------------------------------------------*/
|
||||
dontSaveOnExit = false;
|
||||
|
||||
window = (RapidIconWindow)GetWindow(typeof(RapidIconWindow), false, "RapidIcon");
|
||||
window.minSize = new Vector2(870, 600);
|
||||
window.forceCloseDontSave = false;
|
||||
window.Show();
|
||||
|
||||
float x = EditorPrefs.GetFloat(PlayerSettings.productName + "RapidIconWindowPosX", -1);
|
||||
float y = EditorPrefs.GetFloat(PlayerSettings.productName + "RapidIconWindowPosY", -1);
|
||||
float width = EditorPrefs.GetFloat(PlayerSettings.productName + "RapidIconWindowWidth", -1);
|
||||
|
||||
if (x != -1 && y != -1 && width != -1)
|
||||
window.position = new Rect(x, y, width, window.position.height);
|
||||
|
||||
EditorSceneManager.sceneClosing += window.SceneClosing;
|
||||
EditorSceneManager.sceneOpened += window.OpenScene;
|
||||
EditorSceneManager.newSceneCreated += window.NewScene;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Instantiate and initialise window elements
|
||||
* Load data
|
||||
*--------------------------------------------------------------------------------*/
|
||||
assetList = new AssetList(Application.dataPath);
|
||||
assetList.LoadData();
|
||||
|
||||
leftSeparator = new DraggableSeparator(SeparatorTypes.Vertical);
|
||||
leftSeparator.LoadData("RapidIconSepPosLeft", 300);
|
||||
|
||||
rightSeparator = new DraggableSeparator(SeparatorTypes.Vertical);
|
||||
rightSeparator.LoadData("RapidIconSepPosRight", 900);
|
||||
|
||||
assetGrid = new AssetGrid(assetList);
|
||||
|
||||
iconEditor = new IconEditor(assetGrid, window);
|
||||
iconEditor.LoadData();
|
||||
|
||||
assetGrid.LoadData();
|
||||
}
|
||||
|
||||
void SceneClosing(Scene s, bool removingScene)
|
||||
{
|
||||
foreach (IconSet iconSet in assetGrid.objectIconSets.Values)
|
||||
{
|
||||
foreach (Icon icon in iconSet.icons)
|
||||
icon.SaveMatInfo();
|
||||
}
|
||||
}
|
||||
|
||||
void NewScene(Scene s, NewSceneSetup newSceneSetup, NewSceneMode newSceneMode)
|
||||
{
|
||||
window.Close();
|
||||
}
|
||||
|
||||
void OpenScene(Scene s, OpenSceneMode openSceneMode)
|
||||
{
|
||||
window.Close();
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (forceCloseDontSave)
|
||||
return;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Save data
|
||||
*--------------------------------------------------------------------------------*/
|
||||
assetList.SaveData();
|
||||
leftSeparator.SaveData("RapidIconSepPosLeft");
|
||||
rightSeparator.SaveData("RapidIconSepPosRight");
|
||||
assetGrid.SaveData();
|
||||
|
||||
if (dontSaveOnExit)
|
||||
{
|
||||
bool res = EditorUtility.DisplayDialog("Exit Without Save?", "You have selected to exit without saving, are you sure?", "Don't Save", "Save");
|
||||
if (res)
|
||||
return;
|
||||
}
|
||||
|
||||
iconEditor.SaveData();
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
if (!window)
|
||||
{
|
||||
RapidIconWindow window = EditorWindow.GetWindow<RapidIconWindow>();
|
||||
window.forceCloseDontSave = true;
|
||||
window.Close();
|
||||
return;
|
||||
}
|
||||
|
||||
if (SessionState.GetBool("rapidicon_forceclose", false))
|
||||
{
|
||||
forceCloseDontSave = true;
|
||||
SessionState.SetBool("rapidicon_forceclose", false);
|
||||
window.Close();
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Draw window elements
|
||||
*--------------------------------------------------------------------------------*/
|
||||
GUILayout.BeginHorizontal();
|
||||
if (!iconEditor.fullscreen)
|
||||
{
|
||||
assetList.Draw(leftSeparator.value, window);
|
||||
leftSeparator.Draw(150, rightSeparator.value - 320, window);
|
||||
assetGrid.Draw(rightSeparator.value - leftSeparator.value, window);
|
||||
rightSeparator.Draw(leftSeparator.value + 320, window.position.width - 400, window);
|
||||
}
|
||||
iconEditor.Draw(window.position.width - rightSeparator.value, window);
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1aaff905f87cc4c4bb8d3d29cdc687e2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
144
Assets/RapidIcon/Editor/Scripts/Windows/ResetWindow.cs
Normal file
144
Assets/RapidIcon/Editor/Scripts/Windows/ResetWindow.cs
Normal file
@@ -0,0 +1,144 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace RapidIcon_1_7_2
|
||||
{
|
||||
public class ResetWindow : EditorWindow
|
||||
{
|
||||
public static ResetWindow window;
|
||||
private static int option;
|
||||
private static int subOption;
|
||||
private static IconEditor iconEditor;
|
||||
|
||||
public static void Init(IconEditor editor)
|
||||
{
|
||||
window = (ResetWindow)GetWindow(typeof(ResetWindow), true, "Reset");
|
||||
window.position = new Rect(Screen.currentResolution.width / 2 - 200, Screen.currentResolution.height / 2 - 50, 400, 100);
|
||||
|
||||
iconEditor = editor;
|
||||
|
||||
window.Show();
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.Space(4);
|
||||
GUILayout.Label("Reset");
|
||||
|
||||
//---Draw dropdown list of selected assets---//
|
||||
|
||||
string[] options = new string[] { "Currently selected variant only", "All variants of currently selected icon", "Currently selected variant of all selected icons", "All variants of all selected icons", "Reset and delete all variants (this icon only)", "Reset and delete all variants (all selected icons)" };
|
||||
option = EditorGUILayout.Popup(option, options);
|
||||
|
||||
if (option <= 3)
|
||||
{
|
||||
string[] subOptions = new string[] { "Current tab only", "All tabs" };
|
||||
subOption = EditorGUILayout.Popup(subOption, subOptions);
|
||||
}
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
GUILayout.BeginHorizontal();
|
||||
GUILayout.FlexibleSpace();
|
||||
if (GUILayout.Button("Reset"))
|
||||
{
|
||||
DoReset();
|
||||
window.Close();
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
private void DoReset()
|
||||
{
|
||||
switch (option)
|
||||
{
|
||||
case 0:
|
||||
ResetIcon(iconEditor.currentIcon);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
int idx = 0;
|
||||
int count = iconEditor.currentIconSet.icons.Count;
|
||||
foreach (Icon icon in iconEditor.currentIconSet.icons)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Reset Icons", "Resetting icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
ResetIcon(icon);
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
idx = 0;
|
||||
count = iconEditor.assetGrid.selectedIconSets.Count;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Reset Icons", "Resetting icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
Icon icon = iconSet.GetCurrentIcon();
|
||||
ResetIcon(icon);
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
idx = 0;
|
||||
count = iconEditor.assetGrid.selectedIconSets.Count;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Reset Icons", "Resetting icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
foreach (Icon icon in iconSet.icons)
|
||||
{
|
||||
ResetIcon(icon);
|
||||
}
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
case 4:
|
||||
iconEditor.currentIconSet.icons.Clear();
|
||||
|
||||
ObjectPathPair currrntSetObj = new ObjectPathPair(iconEditor.currentIconSet.assetObject, iconEditor.currentIconSet.assetPath);
|
||||
iconEditor.currentIconSet.AddDefaultIcon(iconEditor.assetGrid, currrntSetObj);
|
||||
|
||||
iconEditor.currentIconSet.iconIndex = 0;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
idx = 0;
|
||||
count = iconEditor.assetGrid.selectedIconSets.Count;
|
||||
foreach (IconSet iconSet in iconEditor.assetGrid.selectedIconSets)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Reset Icons", "Resetting icon (" + idx + "/" + count + ")", (float)(idx++) / count);
|
||||
iconSet.icons.Clear();
|
||||
|
||||
ObjectPathPair setObj = new ObjectPathPair(iconSet.assetObject, iconSet.assetPath);
|
||||
iconSet.AddDefaultIcon(iconEditor.assetGrid, setObj);
|
||||
|
||||
iconSet.iconIndex = 0;
|
||||
}
|
||||
EditorUtility.ClearProgressBar();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ResetIcon(Icon icon)
|
||||
{
|
||||
//---Create a reset icon---//
|
||||
ObjectPathPair obj = new ObjectPathPair(icon.parentIconSet.assetObject, icon.parentIconSet.assetPath);
|
||||
IconSet newIconSet = iconEditor.assetGrid.CreateIconSet(obj);
|
||||
|
||||
Utils.CopyIconSettings(newIconSet.GetCurrentIcon(), icon, subOption == 0 ? iconEditor.tab : -1);
|
||||
ResetHierarchy(icon);
|
||||
|
||||
Utils.UpdateIcon(icon, iconEditor);
|
||||
}
|
||||
|
||||
private void ResetHierarchy(Icon icon)
|
||||
{
|
||||
List<string> keys = icon.iconSettings.subObjectEnables.Keys.ToList();
|
||||
foreach (string s in keys)
|
||||
icon.iconSettings.subObjectEnables[s] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/RapidIcon/Editor/Scripts/Windows/ResetWindow.cs.meta
Normal file
11
Assets/RapidIcon/Editor/Scripts/Windows/ResetWindow.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8d4beb9accfc98843b04511a1978a612
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user