예제 #1
0
    void OnGUI()
    {
        EditorGUI.BeginChangeCheck();
        selected = GUILayout.Toolbar(selected, new string[] { "terra", "object" });
        if (EditorGUI.EndChangeCheck())
        {
            parent.Focus();
        }
        // グリッド線を描画する
        for (int yy = 0; yy < mapSize; yy++)
        {
            for (int xx = 0; xx < mapSize; xx++)
            {
                DrawGridLine(gridRect[yy, xx]);
            }
        }

        // クリックされた位置を探して、その場所に画像データを入れる
        Event e = Event.current;

        if (e.type == EventType.MouseDown)
        {
            Vector2 pos = Event.current.mousePosition;
            int     xx;
            // x位置を先に計算して、計算回数を減らす
            for (xx = 0; xx < mapSize; xx++)
            {
                Rect r = gridRect[0, xx];
                if (r.x <= pos.x && pos.x <= r.x + r.width)
                {
                    break;
                }
            }
            if (xx == mapSize)
            {
                xx--;
            }
            // 後はy位置だけ探す
            for (int yy = 0; yy < mapSize; yy++)
            {
                if (gridRect[yy, xx].Contains(pos))
                {
                    if (selected == 0)
                    {
                        terramap[yy, xx] = parent.SelectedTerra;
                    }
                    else if (selected == 1)
                    {
                        objmap[yy, xx] = parent.SelectedObj;
                    }
                    Repaint();
                    break;
                }
            }
        }

        // 選択した画像を描画する
        for (int yy = 0; yy < mapSize; yy++)
        {
            for (int xx = 0; xx < mapSize; xx++)
            {
                if (parent.terratex[(int)terramap[yy, xx]] != null)
                {
                    GUI.DrawTexture(gridRect[yy, xx], parent.terratex[(int)terramap[yy, xx]]);
                }
            }
        }
        for (int yy = 0; yy < mapSize; yy++)
        {
            for (int xx = 0; xx < mapSize; xx++)
            {
                if (parent.objtex[(int)objmap[yy, xx]] != null)
                {
                    GUI.DrawTexture(gridRect[yy, xx], parent.objtex[(int)objmap[yy, xx]]);
                }
            }
        }

        // 出力ボタン
        Rect rect = new Rect(0, WINDOW_H - 50, 300, 50);

        GUILayout.BeginArea(rect);
        if (GUILayout.Button("output file", GUILayout.MinWidth(300), GUILayout.MinHeight(50)))
        {
            OutputFile();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndArea();
    }