public override bool IsPassable()
        {
            AutoTileMap autoTileMap = AutoTileMap.Instance;

            if (autoTileMap.IsValidAutoTilePos(TileX, TileY))
            {
                for (int iLayer = autoTileMap.GetLayerCount() - 1; iLayer >= 0; --iLayer)
                {
                    if (autoTileMap.MapLayers[iLayer].LayerType == eLayerType.Ground)
                    {
                        AutoTile           autoTile = autoTileMap.GetAutoTile(TileX, TileY, iLayer);
                        eTileCollisionType collType = autoTile.Id >= 0 ? autoTileMap.Tileset.AutotileCollType[autoTile.Id] : eTileCollisionType.EMPTY;
                        if (IsEmptyTilePassable && collType == eTileCollisionType.EMPTY ||
                            collType == eTileCollisionType.PASSABLE || collType == eTileCollisionType.WALL)
                        {
                            return(true);
                        }
                        else if (collType == eTileCollisionType.BLOCK || collType == eTileCollisionType.FENCE)
                        {
                            return(false);
                        }
                    }
                }
            }
            return(false);
        }
Example #2
0
    public override void Update()
    {
        base.Update();

        if (!m_isInitialized)
        {
            Init();
            return;
        }

        bool isMouseLeft  = Input.GetMouseButton(0);
        bool isMouseRight = Input.GetMouseButton(1);

        Vector3 vGuiMouse = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);

        bool isFocusMiniMap = (m_miniMapAON != null && m_miniMapAON.IsInitialized && (m_miniMapAON.IsFocus || m_miniMapAON.MinimapRect.Contains(vGuiMouse)));

        //+++ Set window with focus
        if (!isMouseLeft)
        {
            if (m_rEditorRect.Contains(vGuiMouse))
            {
                m_focusWindow = eEditorWindow.TOOLS;
            }
            else if (isFocusMiniMap)
            {
                m_focusWindow = eEditorWindow.NONE;
            }
            else
            {
                m_focusWindow = eEditorWindow.MAPVIEW;
            }
        }

        if (isFocusMiniMap)
        {
            //Do NotThing
        }
        else if (m_rEditorRect.Contains(vGuiMouse))
        {
        }
        else if (m_focusWindow == eEditorWindow.MAPVIEW)
        {
            Vector3 vWorldMousePos = m_autoTileMap.ViewCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y));
            // m_autoTileMap.BrushGizmo.UpdateBrushGizmo( vWorldMousePos );

            if (isMouseRight || isMouseLeft)
            {
                var mousePosition = Input.mousePosition;
                mousePosition = m_autoTileMap.ViewCamera.ScreenToWorldPoint(mousePosition);
                int _x = (int)(mousePosition.x / m_autoTileMap.CellSize.x);
                int _y = (int)(-mousePosition.y / m_autoTileMap.CellSize.y);
                if (m_autoTileMap.IsValidAutoTilePos(_x, _y))
                {
                    int tile_x = _x;
                    int tile_y = _y;
                    m_startDragTileX = m_dragTileX = tile_x;
                    m_startDragTileY = m_dragTileY = tile_y;
                    AONGUI_ReDrawAll();
                }
            }
        }
    }