Esempio n. 1
0
    //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);
        }
    }
Esempio n. 2
0
        //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();
            }
        }
Esempio n. 3
0
    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);
        }
    }