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