コード例 #1
0
ファイル: WaterShore.cs プロジェクト: yamido001/WaterBuilder
    /// <summary>
    /// 把传入的海岸线和当前的相连起来
    /// </summary>
    /// <returns><c>true</c>, if water shore was joined, <c>false</c> otherwise.</returns>
    /// <param name="waterShore">Water shore.</param>
    public bool JoinWaterShore(WaterShore waterShore)
    {
        if (mWaterShoreSegmentList.Count == 0)
        {
            Debug.LogError("Water shore with no segment");
            return(false);
        }
        if (waterShore.mWaterShoreSegmentList.Count == 0)
        {
            Debug.LogError("Input Water shore with no segment");
            return(false);
        }
        bool needExchange = false;

        if (mWaterShoreSegmentList [0].CanJoinAtFront(waterShore.mWaterShoreSegmentList [waterShore.mWaterShoreSegmentList.Count - 1], out needExchange))
        {
            if (!needExchange)
            {
                JoinWaterShoreAtFront(waterShore);
                return(true);
            }
        }

        if (mWaterShoreSegmentList [0].CanJoinAtFront(waterShore.mWaterShoreSegmentList [0], out needExchange))
        {
            if (needExchange)
            {
                waterShore.RevertWaterLines();
                JoinWaterShoreAtFront(waterShore);
                return(true);
            }
        }

        if (mWaterShoreSegmentList [mWaterShoreSegmentList.Count - 1].CanJoinAtEnd(waterShore.mWaterShoreSegmentList [0], out needExchange))
        {
            if (!needExchange)
            {
                JoinWaterShoreAtEnd(waterShore);
                return(true);
            }
        }

        if (mWaterShoreSegmentList [mWaterShoreSegmentList.Count - 1].CanJoinAtEnd(waterShore.mWaterShoreSegmentList [waterShore.mWaterShoreSegmentList.Count - 1], out needExchange))
        {
            if (needExchange)
            {
                waterShore.RevertWaterLines();
                JoinWaterShoreAtEnd(waterShore);
                return(true);
            }
        }
        return(false);
    }