Exemplo n.º 1
0
    static void SpawnObject(int i, bool isPlusButton)
    {
        if (!isPlusButton)
        {
            try
            {
                TileEditorData data              = tileData[i].GetComponent <TileEditorData>();
                string         idstring          = data.ID.ToString();
                string         overwriteidstring = data.OVERWRITEID.ToString();
                Sprite         sprite            = data.SPRITE;
                Texture2D      tex = null;
                tex = ConvertSpriteToTexture(sprite);

                GUILayout.BeginHorizontal();
                if (tex != null)
                {
                    if (GUILayout.Button(tex, GUILayout.MinHeight((tileSize.y / 100) * 60), GUILayout.MinWidth((tileSize.x / 100) * 60)))
                    {
                        OnEditButtonPress(i);
                    }
                }
                else
                {
                    if (GUILayout.Button("Edit", GUILayout.MinHeight((tileSize.y / 100) * 60), GUILayout.MinWidth((tileSize.x / 100) * 60)))
                    {
                        OnEditButtonPress(i);
                    }
                }
                GUILayout.BeginVertical();
                if (GUILayout.Button("X"))
                {
                    SpawnObject(i, true);
                    AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(filteredObjects[i]));
                    refreshAtEnd = true;
                }

                try
                {
                    GUILayout.Label(idstring);
                    tileData[i].GetComponent <TileEditorData>().OVERWRITEID = int.Parse(GUILayout.TextField(overwriteidstring));
                }
                catch { }
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }
            catch { }
        }
        else
        {
            if (GUILayout.Button("+", GUILayout.MinHeight((tileSize.y / 100) * 95), GUILayout.MinWidth((tileSize.x / 100) * 95)))
            {
                AddNewGameObject(i);
            }
        }
    }
    void Start()
    {
        GameObject[] loadedObjects = (GameObject[])Resources.LoadAll <GameObject>("TileData") as GameObject[];

        for (int i = 0; i < loadedObjects.Length; i++)
        {
            tileObjects.Add(loadedObjects[i] as GameObject);

            TileEditorData data = loadedObjects[i].GetComponent <TileEditorData>();
            tileStorage.Add(data.ID, new Tile(data.ID, MakeListFromArray <GameObject>(data.CUSTOMSCRIPTS), data.NEEDSUPDATE, data.SPRITE));
        }
    }
Exemplo n.º 3
0
    static void Save(GameObject overWriteObject, TileEditorData data)
    {
        int            overwriteid = data.OVERWRITEID;
        TileEditorData dat         = overWriteObject.GetComponent <TileEditorData>();

        AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(overWriteObject), "TileObject" + (overwriteid));
        dat.ID            = data.OVERWRITEID;
        dat.NEEDSUPDATE   = data.NEEDSUPDATE;
        dat.SPRITE        = data.SPRITE;
        dat.CUSTOMSCRIPTS = data.CUSTOMSCRIPTS;
        dat.TILETITLE     = data.TILETITLE;
        PrefabUtility.SavePrefabAsset(overWriteObject.gameObject);

        //"Assets/Resources/TileData/TileObject" + (i + 1).ToString() + ".prefab"
    }
Exemplo n.º 4
0
    void OnGUI()
    {
        GUILayout.BeginVertical();

        if (!showTileEditor)
        {
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Refresh", GUILayout.Width(120)))
            {
                Refresh();
            }
            if (GUILayout.Button("Rewrite", GUILayout.Width(120)))
            {
                Rewrite();
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Size: ", GUILayout.MaxWidth(40));
            size = GUILayout.HorizontalSlider(tileSize.x, 50, 200, GUILayout.MaxWidth(150));
            if (GUILayout.Button("Reset Size"))
            {
                size = 100;
            }
            tileSize.x = size;
            tileSize.y = size;

            GUILayout.EndHorizontal();

            scrollPos = GUILayout.BeginScrollView(scrollPos, GUILayout.Height(window.position.size.y - 100), GUILayout.Width(window.position.size.x - 5));
            GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxHeight(window.position.size.y - 100), GUILayout.MaxWidth(window.position.size.x - 5));
            SpawnObjects();
            GUILayout.EndVertical();
            GUILayout.EndScrollView();
        }
        else
        {
            if (GUILayout.Button("Back", GUILayout.Width(120)))
            {
                Refresh();
            }

            TileEditorData data = loadedData.GetComponent <TileEditorData>();



            GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxHeight(window.position.size.y - 100), GUILayout.MaxWidth(window.position.size.x - 5));

            GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5));
            GUILayout.Label("Tile ID = ", GUILayout.MaxWidth(90));
            GUILayout.Label(data.ID.ToString(), GUILayout.MaxWidth(60));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5));
            GUILayout.Label("Overwrite ID = ", GUILayout.MaxWidth(90));
            data.OVERWRITEID = int.Parse(GUILayout.TextField(data.OVERWRITEID.ToString(), GUILayout.MaxWidth(200)));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5));
            GUILayout.Label("Tile Name = ", GUILayout.MaxWidth(90));
            data.TILETITLE = GUILayout.TextField(data.TILETITLE.ToString(), GUILayout.MaxWidth(200));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxWidth(400));
            data.SPRITE = (Sprite)EditorGUILayout.ObjectField("Sprite", data.SPRITE, typeof(Sprite), allowSceneObjects: false);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5));
            GUILayout.Label("needs update", GUILayout.MaxWidth(90));
            data.NEEDSUPDATE = EditorGUILayout.Toggle(data.NEEDSUPDATE);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(200), GUILayout.MaxWidth(window.position.size.x - 5));
            //additional data
            GUILayout.BeginVertical();
            if (tickonce)
            {
                tickonce      = false;
                serializedObj = new SerializedObject(data);
                list          = new ReorderableList(serializedObj, serializedObj.FindProperty("customScripts"), true, true, true, true);


                list.drawHeaderCallback  = (rect) => EditorGUI.LabelField(rect, "custom Scripts");
                list.drawElementCallback = (Rect rect1, int index, bool isActive, bool isFocused) =>
                {
                    rect1.y     += 2;
                    rect1.height = EditorGUIUtility.singleLineHeight;
                    //EditorGUI.PropertyField(rect1, list.serializedProperty.GetArrayElementAtIndex(index), false);
                    data.customScripts[index] = (GameObject)EditorGUI.ObjectField(rect1, data.customScripts[index], typeof(GameObject), allowSceneObjects: false);
                };
            }

            serializedObj.Update();
            list.DoLayoutList();
            serializedObj.ApplyModifiedProperties();

            if (GUILayout.Button("Save", GUILayout.Width(120)))
            {
                Save(objects[tileData.IndexOf(data.gameObject)], data);
                Refresh();
            }
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();


            GUILayout.EndVertical();
        }
        GUILayout.EndVertical();
    }