示例#1
0
    void OnGUITileSet()
    {
        if (m_startDragTileX != -1 && m_startDragTileY != -1)
        {
            Rect selRect = new Rect( );
            selRect.width  = (Mathf.Abs(m_dragTileX - m_startDragTileX) + 1) * m_camera2D.Zoom * m_autoTileMap.CellSize.x * AutoTileset.PixelToUnits;
            selRect.height = (Mathf.Abs(m_dragTileY - m_startDragTileY) + 1) * m_camera2D.Zoom * m_autoTileMap.CellSize.y * AutoTileset.PixelToUnits;
            float   worldX  = Mathf.Min(m_startDragTileX, m_dragTileX) * m_autoTileMap.CellSize.x;
            float   worldY  = -Mathf.Min(m_startDragTileY, m_dragTileY) * m_autoTileMap.CellSize.y;
            Vector3 vScreen = m_camera2D.Camera.WorldToScreenPoint(new Vector3(worldX, worldY) + m_autoTileMap.transform.position);

            //NOTE: vScreen will vibrate if the camera has KeepInsideMapBounds enabled and because of the zoom out, the camera area is bigger than camera limit bounds
            selRect.position = new Vector2(vScreen.x, vScreen.y);

            selRect.y = ScreenHeight() - selRect.y;
            UtilsGuiDrawing.DrawRectWithOutline(selRect, new Color(0f, 1f, 0f, 0.2f), new Color(0f, 1f, 0f, 1f));

            //
            float yGui = m_rEditorRect.y + 32f;
            AONGUI.Label(new Rect(m_rEditorRect.x + 4f, yGui + 4f, m_rEditorRect.width - 8f, 32 - 8f), "Map: " + m_autoTileMap.MapIdxSelect);
            yGui += 16f;
            AONGUI.Label(new Rect(m_rEditorRect.x + 4f, yGui + 4f, m_rEditorRect.width - 8f, 32 - 8f), "x: " + m_startDragTileX);
            yGui += 16f;
            AONGUI.Label(new Rect(m_rEditorRect.x + 4f, yGui + 4f, m_rEditorRect.width - 8f, 32 - 8f), "y: " + m_startDragTileY);
            yGui += 32f;
            //
            AONGUI.Button(new Rect(m_rEditorRect.x, yGui, m_rEditorRect.width, 32), "Accept", () => {
                if (OnHadPickMap != null)
                {
                    OnHadPickMap(this, m_startDragTileX, m_startDragTileY);
                }
            });
        }
    }
示例#2
0
    protected override void OnGUIAON()
    {
        if (!m_isInitialized)
        {
            return;
        }
        // int tilesWidth = k_visualTileWidth * m_autoTileMap.Tileset.AutoTilesPerRow;
        // int tilesHeight = k_visualTileHeight * (256 / m_autoTileMap.Tileset.AutoTilesPerRow);

        // var m_rEditorRect = new Rect(0f, 0f, tilesWidth+2*fPad + fScrollBarWidth, ScreenHeight());
        // var m_rMapViewRect = new Rect( m_rEditorRect.x + m_rEditorRect.width, 0f, ScreenWidth() - m_rEditorRect.width, ScreenHeight());
        // float minimapRectW = Mathf.Min(m_rMapViewRect.width * 0.25f, m_autoTileMap.MinimapTexture.width);  // fix to limit the size of minimap for big maps

        float fPad            = 4f;
        float fScrollBarWidth = 16f;
        float tilesWidth      = 32 * 8;
        float minimapRectW    = tilesWidth + 2 * fPad + fScrollBarWidth;
        // float minimapRectW = ScreenWidth() * 0.2f;
        float minimapRectH = m_autoTileMap.MinimapTexture.height * minimapRectW / m_autoTileMap.MinimapTexture.width;
        float fOffset      = 18f;
        var   RectBox      = new Rect(ScreenWidth() - minimapRectW, ScreenHeight() - minimapRectH, minimapRectW, minimapRectH);

        m_rMinimapRect = new Rect(RectBox.x + fOffset, RectBox.y + fOffset * 1.75f, RectBox.width - 2 * fOffset, RectBox.height - 2 * fOffset);

        float minimapScale = m_rMinimapRect.width / m_autoTileMap.MinimapTexture.width;

        //NOTE: the texture is drawn blurred in web player unless default quality is set to Fast in project settings
        // see here for solution http://forum.unity3d.com/threads/webplayer-gui-issue.100256/#post-868451
        // UtilsGuiDrawing.DrawRectWithOutline( m_rMinimapRect, new Color(0, 0, 0, 0), Color.black );
        AONGUI.Box(RectBox, "Mini Map (W,A,S,D to move)");
        AONGUI.DrawTexture(m_rMinimapRect, m_autoTileMap.MinimapTexture);

        // Draw camera region on minimap
        Vector3 vCameraPos  = m_autoTileMap.ViewCamera.ScreenPointToRay(new Vector3(-m_rMinimapRect.width, ScreenHeight() - 1)).origin;
        float   camTileX    = (vCameraPos.x / m_autoTileMap.CellSize.x);
        float   camTileY    = (-vCameraPos.y / m_autoTileMap.CellSize.y);
        Rect    rMinimapCam = new Rect(camTileX, camTileY, minimapScale * ScreenWidth() / (m_camera2D.Zoom * m_autoTileMap.CellSize.x * AutoTileset.PixelToUnits), minimapScale * ScreenHeight() / (m_camera2D.Zoom * m_autoTileMap.CellSize.y * AutoTileset.PixelToUnits));

        rMinimapCam.position *= minimapScale;
        rMinimapCam.position += m_rMinimapRect.position;
        //Clamp rMinimapCam
        if (rMinimapCam.xMin < m_rMinimapRect.x)
        {
            rMinimapCam.xMin = m_rMinimapRect.x;
        }
        if (rMinimapCam.xMax > m_rMinimapRect.xMax)
        {
            rMinimapCam.xMax = m_rMinimapRect.xMax;
        }
        if (rMinimapCam.yMin < m_rMinimapRect.y)
        {
            rMinimapCam.yMin = m_rMinimapRect.y;
        }
        if (rMinimapCam.yMax > m_rMinimapRect.yMax)
        {
            rMinimapCam.yMax = m_rMinimapRect.yMax;
        }
        UtilsGuiDrawing.DrawRectWithOutline(rMinimapCam, new Color(0, 0, 0, 0), Color.white);
    }