public static void DuplicateTextureQuad(MA_TextureAtlasserProAtlas atlas, bool focus = true, bool copyData = false, string namePrefix = "new ") { if (atlas != null && atlas.selectedTextureQuad != null) { MA_TextureAtlasserProQuad q = CreateTextureQuad(atlas, namePrefix + atlas.selectedTextureQuad.name, atlas.selectedTextureQuad.rect, false); if (copyData) { q.meshes = atlas.selectedTextureQuad.meshes; for (int i = 0; i < atlas.selectedTextureQuad.textureGroups.Count; i++) { q.textureGroups[i].texture = atlas.selectedTextureQuad.textureGroups[i].texture; } } if (focus) { atlas.selectedTextureQuad = q; } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } }
private void SelectQuad(MA_TextureAtlasserProQuad quad) { if (selectedTextureQuad) { DeselectQuad(); } quad.isSelected = true; selectedTextureQuad = quad; }
private void DeselectQuad() { if (textureQuads != null) { foreach (MA_TextureAtlasserProQuad quad in textureQuads) { quad.isSelected = false; } selectedTextureQuad = null; } }
public static void SetTextureGroups(MA_TextureAtlasserProAtlas atlas, MA_TextureAtlasserProQuad quad) { if (quad.textureGroups == null) { quad.textureGroups = new List <MA_TextureGroup>(); } //Add texture groups foreach (MA_TextureGroupRegistration tgr in atlas.textureGroupRegistration) { MA_TextureGroup textureGroup = new MA_TextureGroup(); textureGroup.name = tgr.name; quad.textureGroups.Add(textureGroup); } }
public static MA_TextureAtlasserProQuad CreateTextureQuad(MA_TextureAtlasserProAtlas atlas, string name, Rect rect, bool focus = true) { if (atlas != null) { //Create new list if we haven't one already if (atlas.textureQuads == null) { atlas.textureQuads = new List <MA_TextureAtlasserProQuad>(); } //Create new quad MA_TextureAtlasserProQuad _quad = ScriptableObject.CreateInstance <MA_TextureAtlasserProQuad>(); //Add quad to asset if (_quad != null) { //Set quad settings _quad.name = name; _quad.rect = rect; SetTextureGroups(atlas, _quad); atlas.textureQuads.Add(_quad); AssetDatabase.AddObjectToAsset(_quad, atlas); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); if (focus) { atlas.selectedTextureQuad = atlas.textureQuads[atlas.textureQuads.Count - 1]; } return(_quad); } else { Debug.LogError("CreateTextureQuad Failed: _TextureQuad"); } } else { Debug.LogError("CreateTextureQuad Failed: textureAtlas"); } return(null); }
public static void DuplicateTextureQuad(MA_TextureAtlasserProAtlas atlas, bool focus = true, string namePrefix = "new ") { if (atlas != null && atlas.selectedTextureQuad != null) { //MA_TextureAtlasserProQuad q = CreateTextureQuad(atlas, namePrefix + atlas.selectedTextureQuad.name, atlas.selectedTextureQuad.rect, false); MA_TextureAtlasserProQuad q = Object.Instantiate(atlas.selectedTextureQuad); q.name = string.Format("{0}{1}", namePrefix, atlas.selectedTextureQuad.name); atlas.textureQuads.Add(q); AssetDatabase.AddObjectToAsset(q, atlas); if (focus) { atlas.selectedTextureQuad = q; } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } }
public override void UpdateView(Event e, Rect editorViewRect) { //Update base derived class base.UpdateView(e, editorViewRect); if (isLoaded) { //Draw inspector if (curWindow.textureAtlas != null && curWindow.textureAtlas.selectedTextureQuad != null) { //Deselect GUI elements when we are focusing on a new quad if (lastSelectedQuad != curWindow.textureAtlas.selectedTextureQuad) { lastSelectedQuad = curWindow.textureAtlas.selectedTextureQuad; GUI.FocusControl(null); } GUILayout.BeginArea(editorViewRect, EditorStyles.helpBox); GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); GUILayout.Label("Quad Name"); curWindow.textureAtlas.selectedTextureQuad.name = EditorGUILayout.TextField(curWindow.textureAtlas.selectedTextureQuad.name); GUILayout.Space(MA_TextureAtlasserProUtils.VIEW_OFFSET / 2); //Textures GUILayout.BeginHorizontal(); GUILayout.Label("Textures", GUILayout.ExpandWidth(true)); if (GUILayout.Button(MA_TextureAtlasserProGuiLoader.editGC, EditorStyles.miniButton, GUILayout.Width(36), GUILayout.Height(15))) { isEditing = !isEditing; } GUILayout.EndHorizontal(); if (curWindow.textureAtlas.textureGroupRegistration == null || curWindow.textureAtlas.textureGroupRegistration.Count == 0) { if (GUILayout.Button("+", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { MA_TextureAtlasserProUtils.CreateTextureGroup(curWindow.textureAtlas, "New TextureGroup"); } } for (int i = 0; i < curWindow.textureAtlas.textureGroupRegistration.Count; i++) { if (isEditing) { curWindow.textureAtlas.textureGroupRegistration[i].name = curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].name = EditorGUILayout.TextField(curWindow.textureAtlas.textureGroupRegistration[i].name); } else { GUILayout.Label(curWindow.textureAtlas.textureGroupRegistration[i].name); } GUILayout.BeginHorizontal(); curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].texture = (Texture)EditorGUILayout.ObjectField(curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].texture, typeof(Texture), false); if (isEditing && GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.ExpandWidth(false))) { MA_TextureAtlasserProUtils.RemoveTextureGroup(curWindow.textureAtlas, i); } if (isEditing && GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false))) { MA_TextureAtlasserProUtils.CreateTextureGroup(curWindow.textureAtlas, "New TextureGroup"); } GUILayout.EndHorizontal(); } GUILayout.Space(MA_TextureAtlasserProUtils.VIEW_OFFSET / 2); //Models GUILayout.Label("Models"); SerializedObject serializedObject = new SerializedObject(curWindow.textureAtlas.selectedTextureQuad); serializedObject.Update(); if (curWindow.textureAtlas.selectedTextureQuad.modelGroups != null) { SerializedProperty modelGroupsSP = serializedObject.FindProperty("modelGroups"); for (int i = 0; i < curWindow.textureAtlas.selectedTextureQuad.modelGroups.Count; i++) { using (new GUILayout.VerticalScope(EditorStyles.helpBox)) { using (new GUILayout.HorizontalScope()) { curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].name = EditorGUILayout.TextField(curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].name); if (GUILayout.Button("-", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { curWindow.textureAtlas.selectedTextureQuad.modelGroups.RemoveAt(i); break; } } SerializedProperty meshesSP = modelGroupsSP.GetArrayElementAtIndex(i).FindPropertyRelative("meshes"); EditorGUILayout.PropertyField(meshesSP, false, GUILayout.ExpandWidth(false), GUILayout.MaxWidth(editorViewRect.width * 0.5f)); if (meshesSP.isExpanded) { for (int j = 0; j < curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].meshes.Count; j++) { using (new GUILayout.HorizontalScope()) { curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].meshes[j] = (Mesh)EditorGUILayout.ObjectField(curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].meshes[j], typeof(Mesh), false); if (GUILayout.Button("-", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].meshes.RemoveAt(j); break; } } } } if (GUILayout.Button("+", EditorStyles.miniButton)) { curWindow.textureAtlas.selectedTextureQuad.modelGroups[i].meshes.Add(null); } } } if (GUILayout.Button("+", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { curWindow.textureAtlas.selectedTextureQuad.modelGroups.Add(new MA_ModelGroup() { name = MA_StringUtils.RandomAlphabetString(6) }); } } else { curWindow.textureAtlas.selectedTextureQuad.modelGroups = new List <MA_ModelGroup>(); } serializedObject.ApplyModifiedProperties(); GUILayout.Space(MA_TextureAtlasserProUtils.VIEW_OFFSET / 2); //x, y, w, h. GUILayout.FlexibleSpace(); if (!MA_TextureAtlasserProUtils.IsPowerOfTwo((int)curWindow.textureAtlas.selectedTextureQuad.guiRect.width) || !MA_TextureAtlasserProUtils.IsPowerOfTwo((int)curWindow.textureAtlas.selectedTextureQuad.guiRect.height)) { labelStyle.normal.textColor = Color.red; } else { labelStyle.normal.textColor = GUI.skin.label.normal.textColor; } GUILayout.Label("x " + curWindow.textureAtlas.selectedTextureQuad.guiRect.x.ToString() + ", y " + curWindow.textureAtlas.selectedTextureQuad.guiRect.y.ToString()); GUILayout.Label("w " + curWindow.textureAtlas.selectedTextureQuad.guiRect.width.ToString() + ", h " + curWindow.textureAtlas.selectedTextureQuad.guiRect.height.ToString(), labelStyle); GUILayout.EndVertical(); GUILayout.EndArea(); } } if (curWindow.textureAtlas != null && curWindow.textureAtlas.selectedTextureQuad != null) { ProcessEvents(e, editorViewRect); } }
public override void UpdateView(Event e, Rect editorViewRect) { //Update base derived class base.UpdateView(e, editorViewRect); if (isLoaded) { //Draw inspector if (curWindow.textureAtlas != null && curWindow.textureAtlas.selectedTextureQuad != null) { //Deselect GUI elements when we are focusing on a new quad if (lastSelectedQuad != curWindow.textureAtlas.selectedTextureQuad) { lastSelectedQuad = curWindow.textureAtlas.selectedTextureQuad; GUI.FocusControl(null); } GUILayout.BeginArea(editorViewRect, EditorStyles.helpBox); GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); GUILayout.Label("Quad Name"); curWindow.textureAtlas.selectedTextureQuad.name = EditorGUILayout.TextField(curWindow.textureAtlas.selectedTextureQuad.name); GUILayout.Space(MA_TextureAtlasserProUtils.VIEWOFFSET / 2); //Textures GUILayout.BeginHorizontal(); GUILayout.Label("Textures", GUILayout.ExpandWidth(true)); if (GUILayout.Button(MA_TextureAtlasserProIcons.editIcon, EditorStyles.miniButton, GUILayout.Width(36), GUILayout.Height(15))) { isEditing = !isEditing; } GUILayout.EndHorizontal(); if (curWindow.textureAtlas.textureGroupRegistration == null || curWindow.textureAtlas.textureGroupRegistration.Count == 0) { if (GUILayout.Button("+", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { MA_TextureAtlasserProUtils.CreateTextureGroup(curWindow.textureAtlas, "New TextureGroup"); } } for (int i = 0; i < curWindow.textureAtlas.textureGroupRegistration.Count; i++) { if (isEditing) { curWindow.textureAtlas.textureGroupRegistration[i].name = curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].name = EditorGUILayout.TextField(curWindow.textureAtlas.textureGroupRegistration[i].name); } else { GUILayout.Label(curWindow.textureAtlas.textureGroupRegistration[i].name); } GUILayout.BeginHorizontal(); curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].texture = (Texture)EditorGUILayout.ObjectField(curWindow.textureAtlas.selectedTextureQuad.textureGroups[i].texture, typeof(Texture), false); if (isEditing && GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.ExpandWidth(false))) { MA_TextureAtlasserProUtils.RemoveTextureGroup(curWindow.textureAtlas, i); } if (isEditing && GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false))) { MA_TextureAtlasserProUtils.CreateTextureGroup(curWindow.textureAtlas, "New TextureGroup"); } GUILayout.EndHorizontal(); } GUILayout.Space(MA_TextureAtlasserProUtils.VIEWOFFSET / 2); //Meshes GUILayout.Label("Meshes"); if (curWindow.textureAtlas.selectedTextureQuad.meshes != null) { if (curWindow.textureAtlas.selectedTextureQuad.meshes.Count == 0) { if (GUILayout.Button("+", EditorStyles.miniButton, GUILayout.ExpandWidth(true))) { curWindow.textureAtlas.selectedTextureQuad.meshes.Add(null); } } for (int i = 0; i < curWindow.textureAtlas.selectedTextureQuad.meshes.Count; i++) { GUILayout.BeginHorizontal(); curWindow.textureAtlas.selectedTextureQuad.meshes[i] = (Mesh)EditorGUILayout.ObjectField(curWindow.textureAtlas.selectedTextureQuad.meshes[i], typeof(Mesh), false); if (GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.ExpandWidth(false))) { curWindow.textureAtlas.selectedTextureQuad.meshes.RemoveAt(i); } if (GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false))) { curWindow.textureAtlas.selectedTextureQuad.meshes.Insert(i, null); } GUILayout.EndHorizontal(); } } else { curWindow.textureAtlas.selectedTextureQuad.meshes = new List <Mesh>(); } GUILayout.FlexibleSpace(); GUILayout.Label("x " + curWindow.textureAtlas.selectedTextureQuad.guiRect.x.ToString() + ", y " + curWindow.textureAtlas.selectedTextureQuad.guiRect.y.ToString()); GUILayout.Label("w " + curWindow.textureAtlas.selectedTextureQuad.guiRect.width.ToString() + ", h " + curWindow.textureAtlas.selectedTextureQuad.guiRect.height.ToString()); GUILayout.EndVertical(); GUILayout.EndArea(); } } if (curWindow.textureAtlas != null && curWindow.textureAtlas.selectedTextureQuad != null) { ProcessEvents(e, editorViewRect); } }