static void DeleteSpriteImage(object command) {//删除小图 if ((m_spriteListView == null) || (m_spriteListView.LastSelectItem < 0)) { return; } List <string> deleteSpriteName = new List <string>(); foreach (var index in m_spriteListView.SelectItems) { ListCtrlItem deleteItem = m_spriteListView.Items[index]; deleteSpriteName.Add(deleteItem.tooltip); } foreach (var item in deleteSpriteName) { AtlasDeleteSpriteImageCommand cmd = new AtlasDeleteSpriteImageCommand(); cmd.m_SpriteName = item; EditorCommandManager.GetInstance().Add(cmd); RegisterUndo("Delete SpriteImage"); } m_bIsOperateSaved = false; RequestRepaint(); }
static void OnAddImageBtn(EditorControl c) { //[添加小图]按钮压下处理函数 if (!UIAtlasEditorModel.GetInstance().IsProjectExist()) { //工程不存在 //提示创建工程的Message EditorUtility.DisplayDialog("添加失败", "请先创建工程", "确认"); } else {//工程存在 //初始化添加小图对话框信息 OpenFileDialog openfiledialog1 = new OpenFileDialog(); InitializeOpenFileDialog(openfiledialog1); //显示添加小图对话框 if (openfiledialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { for (int fi = 0; fi < openfiledialog1.FileNames.Length; fi++) { //执行添加小图命令 AtlasAddSpriteImageCommand cmd = new AtlasAddSpriteImageCommand(); cmd.m_SpriteName = openfiledialog1.FileNames[fi].ToString(); EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Add SpriteImage"); } } RequestRepaint(); } }
static void OnClearCurrentProject() {//清空当前工程信息 if ((m_spriteListView == null) || (m_projTreeView == null)) { return; } //清空小图List m_spriteListView.ClearItems(); m_spriteListView.LastSelectItem = -1; //清空工程List m_projTreeView.ClearItems(); //初始化画面显示 ClearCurrentView(); //清空命令 EditorCommandManager.GetInstance().Clear(); //清空命令计数器 m_CommandCounter.CommandCounter = 0; m_CommandCounter.PreCommandCounter = 0; m_bIsOperateSaved = true; RequestRepaint(); }
static void OnUndoRedo() {//Undo/Redo 命令响应函数 int commandCount = 0; if (m_CommandCounter == null) { return; } if (m_CommandCounter.IsRedo(out commandCount)) {//当前操作是Redo for (int i = 0; i < commandCount; i++) { EditorCommandManager.GetInstance().PerformRedo(); } } else {//当前操作是Undo for (int i = 0; i < commandCount; i++) { EditorCommandManager.GetInstance().PerformUndo(); } } //更新前次命令计数器 m_CommandCounter.PreCommandCounter = m_CommandCounter.CommandCounter; }
public static EditorCommandManager GetInstance() { if (s_cmdManager == null) { s_cmdManager = new EditorCommandManager(); } return(s_cmdManager); }
static void OnMakeAtlasCommand(bool bRet) {//Atlas生成完响应函数 if (bRet) { //提示生成成功 EditorUtility.DisplayDialog("生成成功", "Atlas生成完毕\n\n" + "相关文件保存至\"" + UIAtlasEditorModel.GetInstance().GetAtlasSavePath() + "\"", "确认"); m_bIsOperateSaved = false; } else { if (PROJECT_ERROR_TYPE.PROJECT_ERROR_ATLASOUTPU_PATH == UIAtlasEditorModel.GetInstance().GetProjectFailedType()) {//未指定Atlas输出路径 //显示选择路径对话框 string savePath = EditorUtility.SaveFolderPanel("请选择Atlas文件的输出路径", "Assets/", ""); if (savePath.Contains("/Assets")) {//路径合法(Unity相对路径) //获取Unity相对路径 savePath = savePath.Substring(UnityEngine.Application.dataPath.Length - "Assets".Length); //设定Atlas输出路径 UIAtlasEditorModel.GetInstance().SetAtlasSavePath(savePath + "/"); //执行“生成Atlas”命令 AtlasMakeAtlas cmd = new AtlasMakeAtlas(); EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Make Atlas"); } else { //提示输出路径错误message EditorUtility.DisplayDialog("生成失败", "请选择Assets/下的路径", "确认"); } } else if (PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE_IMAGE == UIAtlasEditorModel.GetInstance().GetProjectFailedType()) {//未添加小图 //提示添加小图message EditorUtility.DisplayDialog("生成失败", "请添加小图资源", "确认"); } else { //do nothing } } RequestRepaint(); }
public void Init(int w, int h, ModelViewer viewer, Browser browser, EditorCommandManager commandManager, GUISkin skin) { //width = w; //height = h; this.viewer = viewer; this.browser = browser; this.commandManager = commandManager; this.skin = skin; initBlockType(); }
static void OnMakeAtlasBtn(EditorControl c) { //[生成Atlas]按钮压下处理函数 if (!UIAtlasEditorModel.GetInstance().IsProjectExist()) { //工程未创建 //提示创建工程message EditorUtility.DisplayDialog("生成失败", "请先创建工程", "确认"); } else {//工程已存在 AtlasMakeAtlas cmd = new AtlasMakeAtlas(); EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Make Atlas"); } RequestRepaint(); }
static void OnDisable(EditorRoot root) {//窗口无效回调函数 if (UIAtlasEditorModel.GetInstance().IsProjectExist()) { if (!m_bIsOperateSaved) { if (EditorUtility.DisplayDialog("保存工程", "是否保存当前工程", "保存", "取消")) { OnSaveProjBtn(null); } } } UIAtlasTempTextureManager.DestroyInstance(); UIAtlasEditorModel.GetInstance().DestoryInstance(); EditorCommandManager.GetInstance().Clear(); Undo.undoRedoPerformed -= OnUndoRedo; GameObject.DestroyImmediate(m_Counter); GameObject.DestroyImmediate(m_previewObj); }
public void Init(Camera cam, EditorCommandManager commandManager) { //计算格子 List <Vector3> tempLines = new List <Vector3>(); for (int i = 0; i <= SpaceX * Const.ChunkSize; i++) { tempLines.Add(new Vector3(i, halfSpaceSize.y, 0) - halfSpaceSize); tempLines.Add(new Vector3(i, halfSpaceSize.y, SpaceY * Const.ChunkSize) - halfSpaceSize); } for (int j = 0; j <= SpaceY * Const.ChunkSize; j++) { tempLines.Add(new Vector3(0, halfSpaceSize.y, j) - halfSpaceSize); tempLines.Add(new Vector3(SpaceX * Const.ChunkSize, halfSpaceSize.y, j) - halfSpaceSize); } gridLines = tempLines.ToArray(); //预处理光线 rays = new Vector3[6][]; { for (int i = 0; i < 6; i++) { rays[i] = TerrainTool.getRandomRays(9, i); } } DebugTool.Log("预处理光线追踪"); camera = cam; this.commandManager = commandManager; blockManager = new BlockManager(); blockManager.create(SpaceX * Const.ChunkSize, SpaceY * Const.ChunkSize, SpaceZ * Const.ChunkSize, new BlockTypeFun()); //blockManager.forEachChunk((BlockChunk chunk, int i, int j, int k) => { // for (int x = 0; x < Const.ChunkSize; x++) { // for (int y = 0; y < Const.ChunkSize; y++) { // for (int z = 0; z < Const.ChunkSize; z++) { // int gx = i * Const.ChunkSize + x; // int gy = j * Const.ChunkSize + y; // int gz = k * Const.ChunkSize + z; // if ((new Vector3(gx, gy, gz) - new Vector3(SpaceX / 2.0f, SpaceY / 2.0f, SpaceZ / 2.0f) * Const.ChunkSize).magnitude < 10) { // chunk.setBlock(x, y, z, (int)BlockTypeEnum.Sand); // } // } // } // } //}); rtm = new RayCastManager(); rtm.create(blockManager.SizeX, blockManager.SizeY, blockManager.SizeZ); //rtm.moveTo(0, 0, 0, (int gx, int gy, int gz) => { // return blockManager.getBlock(gx, gy, gz) != 0 ? RayCastBlockType.All : RayCastBlockType.Nothing; //}); for (int x = 0; x < SpaceX * Const.ChunkSize; x++) { for (int y = 0; y < SpaceY * Const.ChunkSize; y++) { for (int z = 0; z < SpaceZ * Const.ChunkSize; z++) { rtm.setBlock(x, y, z, blockManager.getBlock(x, y, z) != 0 ? RayCastBlockType.All : RayCastBlockType.Nothing); } } } bDirty = true; previewMesh = GLRender.createCubeMesh(0.5f, Color.white); }
static void OnSpriteInspector(EditorControl c, object target) {//小图属性窗口显示 int w, h; string oldStr = null; string SpriteName = null; if ((m_spriteListView == null) || (m_spriteListView.LastSelectItem < 0)) { return; } ListCtrlItem deleteItem = m_spriteListView.Items[m_spriteListView.LastSelectItem]; SpriteName = deleteItem.tooltip; GUILayout.Space(20f); GUILayout.BeginHorizontal(); GUILayout.Label("宽高比", GUILayout.Width(60f)); GUILayout.TextField(m_aspecet.ToString(), GUILayout.Width(150)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("宽度", GUILayout.Width(60f)); GUI.SetNextControlName("宽度"); oldStr = m_spriteWidthStr; m_spriteWidthStr = GUILayout.TextField(m_spriteWidthStr, GUILayout.Width(150)); if ((GUI.GetNameOfFocusedControl() == "宽度") && (oldStr != m_spriteWidthStr)) { int.TryParse(m_spriteWidthStr, out w); h = (int)(w / m_aspecet); m_spriteHeightStr = h.ToString(); } GUILayout.Label("pix", GUILayout.Width(50f)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("高度", GUILayout.Width(60f)); GUI.SetNextControlName("高度"); oldStr = m_spriteHeightStr; m_spriteHeightStr = GUILayout.TextField(m_spriteHeightStr, GUILayout.Width(150)); if ((GUI.GetNameOfFocusedControl() == "高度") && (oldStr != m_spriteHeightStr)) { int.TryParse(m_spriteHeightStr, out h); w = (int)(h * m_aspecet); m_spriteWidthStr = w.ToString(); } GUILayout.Label("pix", GUILayout.Width(50f)); GUILayout.EndHorizontal(); if (Event.current.keyCode == KeyCode.Return && Event.current.type == EventType.Used) { if (GUI.GetNameOfFocusedControl() == "高度" || GUI.GetNameOfFocusedControl() == "宽度") { AtlasSpriteImage spriteImage = null; AtlasImageZoomCommand cmd = null; Texture2D tex = null; int.TryParse(m_spriteWidthStr, out w); int.TryParse(m_spriteHeightStr, out h); cmd = new AtlasImageZoomCommand(); UIAtlasEditorModel.GetInstance().GetSpriteImage(SpriteName, out spriteImage); tex = UIAtlasEditorModel.GetInstance().GetSpriteTexture(SpriteName); if (tex == null) { return; } cmd.m_oldScaleFactor = spriteImage.ZoomScale; cmd.m_newScaleFactor = (float)w / (float)tex.width; cmd.m_SpriteName = SpriteName; EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Zoom Image"); } } //RequestRepaint(); }