//build map void BuildMap() { if (creator.firstTimeBuild) { creator.BuildMapComplete(false, false, false); } else { Vector3 _p = this.transform.position; //this is a custom optimization loop because we are using a radius //instead of just a single point position for (int l = 0; l < creator.configuration.global.layerCount; l++) { for (int rY = -radius; rY < radius; rY++) { for (int rX = -radius; rX < radius; rX++) { creator.OptimizePassPartial(l, (int)_p.x + rX, (int)_p.z + rY); } } } creator.BuildMapPartial(false, true); } }
//build map if user has clicked and automatic build is enabled void BuildMap() { if (creator.configuration.ui.autoBuild) { for (int l = 0; l < creator.configuration.global.layerCount; l++) { for (int i = 0; i < 4; i++) { for (int c = 0; c < cellMap.GetLength(0); c++) { for (int d = 0; d < cellMap.GetLength(1); d++) { if (cellInstancedMap[c, d]) { creator.OptimizePassPartial(l, c, d); } } } } } if (creator.firstTimeBuild) { creator.BuildMapComplete(false, false, true); } else { if (creator.configuration.global.buildOverlappingTiles) { //set optimization to false because we do the optmizitation above //creator.BuildMapPartial(false, false, 0, 0); creator.BuildMapPartial(false, false); } else { creator.firstTimeBuild = true; creator.BuildMapComplete(false, false, true); } } //reset the painted cells ResetCells(); } }
public override void OnInspectorGUI() { EditorGUILayout.BeginHorizontal("Box"); GUILayout.Label(topLogo); //if (GUILayout.Button(iconStore, GUILayout.Width(40), GUILayout.Height(40))) //{ // TileWorldTileStore.InitStore(); //} if (GUILayout.Button(iconOptionMenu, GUILayout.Height(40), GUILayout.Width(40))) { Event evt = Event.current; Rect contextRect = new Rect(0, 0, Screen.width, 300); Vector2 mousePos = evt.mousePosition; if (contextRect.Contains(mousePos)) { // create menu GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Load Map"), false, Callback, "item 1"); menu.AddItem(new GUIContent("Save Map"), false, Callback, "item 2"); menu.AddSeparator(""); //menu.AddItem(new GUIContent("Check for new tiles"), false, Callback, "item 3"); menu.AddItem(new GUIContent("About"), false, Callback, "item 4"); menu.AddItem(new GUIContent("Help"), false, Callback, "item 5"); menu.ShowAsContext(); evt.Use(); } } EditorGUILayout.EndHorizontal(); if (creator.configuration == null) { EditorGUILayout.HelpBox("Please create or load an asset configuration file.", MessageType.Info); } //CONFIGURATION FILE OPTIONS EditorGUILayout.BeginHorizontal(); creator.configuration = (TileWorldConfiguration)EditorGUILayout.ObjectField(creator.configuration, typeof(TileWorldConfiguration), true) as TileWorldConfiguration; if (GUILayout.Button("create config.", "ToolBarButton")) { TileWorldConfigurationEditor.CreateConfigFile(creator); } if (GUILayout.Button("load config.", "ToolBarButton")) { var _configPath = EditorUtility.OpenFilePanel("load configuration file", "Assets", "asset"); //make path relative if (_configPath != "") { _configPath = "Assets" + _configPath.Substring(Application.dataPath.Length); creator.configuration = (TileWorldConfiguration)UnityEditor.AssetDatabase.LoadAssetAtPath(_configPath, typeof(TileWorldConfiguration)); } } EditorGUILayout.EndHorizontal(); if (creator.configuration == null) { if (GUI.changed) { creator.firstTimeBuild = true; #if UNITY_5_3_OR_NEWER || UNITY_5_3 EditorSceneManager.MarkSceneDirty(this.currentScene); #else EditorApplication.MarkSceneDirty(); #endif } return; } // Show configuration editor //-------------------------- TileWorldConfigurationEditor.ShowConfigurationEditor(creator.configuration); //SHOW EDIT MAP //------------- GUI.color = colorGUIFoldout3; EditorGUILayout.BeginVertical("Box"); GUI.color = Color.white; GUILayout.BeginHorizontal("Box"); creator.configuration.ui.showEdit = GUILayout.Toggle(creator.configuration.ui.showEdit, ("Edit map"), GUI.skin.GetStyle("foldout"), GUILayout.ExpandWidth(true), GUILayout.Height(18)); if (GUILayout.Button(iconUndockWindow, "ToolbarButton", GUILayout.Width(25))) { TileWorldCreatorEditorEditMapWindow.InitWindow(creator.gameObject); } GUILayout.EndHorizontal(); if (creator.configuration.ui.showEdit) { ShowEdit(); } EditorGUILayout.EndVertical(); if (GUILayout.Button("Generate New", GUILayout.Height(30))) { //reset undo stack undoStack = new TileWorldUndoStack <bool[]>(); redoStack = new TileWorldUndoStack <bool[]>(); //paintRegisterMap = new bool[creator.configuration.global.width, creator.configuration.global.height]; creator.GenerateMaps(); for (int li = 0; li < creator.configuration.global.layerCount; li++) { creator.configuration.worldMap[li].maskMap = new bool[creator.configuration.global.width, creator.configuration.global.height]; creator.configuration.worldMap[li].maskMap = creator.iMasks[creator.configuration.worldMap[li].selectedMask].ApplyMask(creator.configuration.worldMap[li].cellMap, creator.GetComponent <TileWorldCreator>(), creator.configuration); } } if (GUILayout.Button("Build", GUILayout.Height(30))) { if (creator.firstTimeBuild) { //creator.BuildMapEditor(); creator.BuildMapComplete(false, false, true); } else { if (creator.configuration.global.buildOverlappingTiles) { //creator.BuildMapPartial(true); //creator.BuildMapPartial(false, false, 0, 0); creator.BuildMapPartial(false, false); } else { creator.firstTimeBuild = true; //creator.BuildMapEditor(); creator.BuildMapComplete(false, false, true); } } } if (creator.mergeReady) { GUI.enabled = true; } else { GUI.enabled = false; } if (GUILayout.Button("Merge", GUILayout.Height(30))) { Merge(); creator.mergeReady = false; } GUI.enabled = true; SceneView.RepaintAll(); if (GUI.changed) { creator.firstTimeBuild = true; #if UNITY_5_3_OR_NEWER || UNITY_5_3 EditorSceneManager.MarkSceneDirty(this.currentScene); #else EditorApplication.MarkSceneDirty(); #endif } EditorUtility.SetDirty(creator); if (creator.configuration != null) { EditorUtility.SetDirty(creator.configuration); } }