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); } }); } }
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); }