private static void ExecuteIndex(TextureConverterPreset currentPreset, int i, Vector2 pos) { if (!currentPreset.useColor [i]) { return; } ParameterInfo[] mParameters = currentPreset.conversionMethods [currentPreset.chosenMethods [i]].GetParameters(); int iOffset = 0; object[] parameters = new object[mParameters.Length]; for (int iParams = 0; iParams < mParameters.Length; iParams++) { if (mParameters [iParams].ParameterType == typeof(UnityEngine.Vector2)) { if ((TextureConverterEditorWindow.PositionOrValue)currentPreset.chosenMethodsParameters [i] [iParams + iOffset] == TextureConverterEditorWindow.PositionOrValue.UseValue) { // Debug.Log (parameters [i]); parameters [iParams] = currentPreset.chosenMethodsParameters [i] [iParams + iOffset + 1]; } else { parameters [iParams] = pos; } iOffset++; } else { parameters [iParams] = currentPreset.chosenMethodsParameters [i] [iParams + iOffset]; } } currentPreset.conversionMethods [currentPreset.chosenMethods [i]].Invoke(null, parameters); }
private void DisplayPresetPicker() { GUILayout.BeginHorizontal(); GUILayout.Label("Current preset", EditorStyles.boldLabel, GUILayout.Width(150)); int index = EditorGUILayout.Popup(availablePresets.IndexOf(currentPreset.loadName), availablePresets.ToArray()); if (index != availablePresets.IndexOf(currentPreset.loadName)) { if (PresetFileLoader.SavePreset(currentPreset)) { currentPreset = PresetFileLoader.LoadPreset(availablePresets [index]); } } if (GUILayout.Button("NEW", GUILayout.Width(38))) { CreateNewPreset(); } GUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); currentPreset.presetName = GUILayout.TextField(currentPreset.presetName); if (EditorGUI.EndChangeCheck() && currentPreset.presetName.Length > 0) { if (PresetFileLoader.SavePreset(currentPreset)) { availablePresets = PresetFileLoader.LoadPresets(); } } }
private void CreateNewPreset() { TextureConverterPreset tempPreset = ScriptableObject.CreateInstance <TextureConverterPreset> (); // Debug.Log (tempPreset.loadName); while (availablePresets.Contains(tempPreset.loadName)) { tempPreset.loadName += "I"; tempPreset.presetName += "I"; } PresetFileLoader.SavePreset(tempPreset); string newPreset = tempPreset.loadName; availablePresets = PresetFileLoader.LoadPresets(); currentPreset = PresetFileLoader.LoadPreset(newPreset); }
public static void Execute(this TextureConverterPreset currentPreset, Texture2D texture) { List <Color> matchList = new List <Color> (currentPreset.textureColors); for (int x = 0; x < texture.width; x++) { for (int y = 0; y < texture.height; y++) { if (matchList.Contains(texture.GetPixel(x, y))) { int index = matchList.IndexOf(texture.GetPixel(x, y)); ExecuteIndex(currentPreset, index, new Vector2(x, y)); } } } }
public static void LoadMethodParameters(this TextureConverterPreset currentPreset, int method) { // Debug.Log (currentPreset.conversionMethods); // Debug.Log (TextureConverterAttributeManager.conversionMethods.Count); ParameterInfo[] mParameters = currentPreset.conversionMethods [currentPreset.chosenMethods [method]].GetParameters(); int paramLength = mParameters.Length; foreach (var item in mParameters) { if (item.ParameterType == typeof(UnityEngine.Vector2)) { paramLength++; } } currentPreset.chosenMethodsParameters [method] = new object[paramLength]; }
public static TextureConverterPreset LoadPreset(string name) { // Debug.Log ("loading \n" + name); string presetPath = Path + "/" + name + FileExtension; if (!File.Exists(presetPath)) { throw new System.ArgumentException("There is no preset in the designated folder for " + name); } Stream stream = File.Open(Path + "/" + name + FileExtension, FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); SerializableTextureConverterPreset preset = (SerializableTextureConverterPreset)formatter.Deserialize(stream); stream.Close(); formatter = null; for (int im = 0; im < preset.chosenMethodsParameters.Count; im++) { for (int i = 0; i < preset.chosenMethodsParameters [im].Length; i++) { if (preset.chosenMethodsParameters [im] [i] is string) { if (((string)preset.chosenMethodsParameters [im] [i]).StartsWith("#obj#")) { preset.chosenMethodsParameters [im] [i] = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(((string)preset.chosenMethodsParameters [im] [i]).Substring(5, ((string)preset.chosenMethodsParameters [im] [i]).Length - 5)), typeof(UnityEngine.Object)); } } } } List <MethodInfo> conversionMethods = TextureConverterAttributeManager.conversionMethods; TextureConverterPreset convertedPreset = (TextureConverterPreset)preset; if (!AreEqual(conversionMethods, convertedPreset.conversionMethods)) { convertedPreset.RedefineConversionMethodsInPreset(conversionMethods); } // Debug.Log ("done loading"); return(convertedPreset); }
private void OnEnable() { // Debug.Log ("OnEnableCalled"); availablePresets = PresetFileLoader.LoadPresets(); if (availablePresets.Count == 0) { // Debug.Log ("creating"); TextureConverterPreset tempPreset = ScriptableObject.CreateInstance <TextureConverterPreset> (); Debug.Log(tempPreset.loadName); if (PresetFileLoader.SavePreset(tempPreset)) { availablePresets = PresetFileLoader.LoadPresets(); } } currentPreset = PresetFileLoader.LoadPreset(availablePresets [0]); // Debug.Log (availablePresets [0]); // Undo.undoRedoPerformed += OnUndoRedo; }
public static bool SavePreset(TextureConverterPreset preset) { // Debug.Log ("saving"); string oldPresetPath = Path + "/" + preset.loadName + FileExtension; if (File.Exists(oldPresetPath)) { File.Delete(oldPresetPath); } List <string> existingPresets = LoadPresets(); preset.loadName = preset.presetName; while (existingPresets.Contains(preset.loadName) || preset.loadName == "") { preset.loadName += "I"; preset.presetName += "I"; } for (int im = 0; im < preset.chosenMethodsParameters.Count; im++) { for (int i = 0; i < preset.chosenMethodsParameters [im].Length; i++) { if (preset.chosenMethodsParameters [im] [i] is UnityEngine.Object) { preset.chosenMethodsParameters [im] [i] = "#obj#" + AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath((UnityEngine.Object)preset.chosenMethodsParameters [im] [i])); } } } Stream stream = File.Open(Path + "/" + preset.presetName + FileExtension, FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, (SerializableTextureConverterPreset)preset); stream.Close(); formatter = null; // Debug.Log ("done saving"); return(true); }
public static void RedefineConversionMethodsInPreset(this TextureConverterPreset currentPreset, List <MethodInfo> conversionMethods) { Debug.Log("Conversion Method definitions changed, redefine called on preset " + currentPreset.presetName); // Debug.Log (currentPreset.conversionMethods.Count); if (currentPreset.conversionMethods == null || currentPreset.chosenMethods == null) { // Debug.Log ("immediate conversion because null"); currentPreset.conversionMethods = conversionMethods; return; } for (int iMethod = 0; iMethod < currentPreset.conversionMethods.Count; iMethod++) { if (!conversionMethods.Contains(currentPreset.conversionMethods [iMethod])) { Debug.LogWarning("Method " + currentPreset.conversionMethods [iMethod] + " does not exist anymore and has been removed from this preset"); for (int i = 0; i < currentPreset.chosenMethods.Count; i++) { if (currentPreset.chosenMethods [i] == iMethod) { currentPreset.chosenMethods [i] = -1; } } } } for (int i = 0; i < currentPreset.chosenMethods.Count; i++) { if (currentPreset.chosenMethods [i] == -1) { currentPreset.chosenMethods [i] = 0; LoadMethodParameters(currentPreset, i); } else { currentPreset.chosenMethods [i] = conversionMethods.IndexOf(currentPreset.conversionMethods [currentPreset.chosenMethods [i]]); } } currentPreset.conversionMethods = conversionMethods; }