예제 #1
0
    bool TryLink()
    {
        mPrePoint = FindNearestIsolatePoint(mLinkPoint.position);

        if (mPrePoint == null)
        {
            BreakLink();
            return(false);
        }

        m_LinkPos1 = mLinkPoint.position;
        m_LinkPos2 = mPrePoint.GetLinkPosition();
        Transform preTran = mPrePoint.GetTrans();

        //if can't link move higher
        bool getPos = false;

        for (int i = 0; i < MaxStepTime; ++i)
        {
            if (Railway.Manager.CheckLinkState(m_LinkPos1, m_LinkPos2, transform, preTran))
            {
                getPos = true;
                EstablishSubLink(mLinkPoint.position, m_LinkPos2);
                transform.position += i * StepHeight * Vector3.up;
                EstablishLink(m_LinkPos1, m_LinkPos2);
                break;
            }
            m_LinkPos1 += StepHeight * Vector3.up;
        }

        if (!getPos)
        {
            BreakLink();

            mPrePoint = null;

            return(false);
        }
        return(true);
    }
예제 #2
0
        public static bool CheckLinkState(Point point1, Point point2)
        {
            if (point1 == null || point2 == null)
            {
                return(false);
            }

            return(CheckLinkState(point1.GetLinkPosition(), point2.GetLinkPosition(), point1.GetTrans(), point2.GetTrans()));
        }