private void UpdateLoc () { // Update loc! float distBetweenMyNodes = Vector2.Distance(nodePrev.transform.localPosition, nodeNext.transform.localPosition); loc += speed / distBetweenMyNodes * Time.timeScale; // Off the line?? if (loc > 1) { // NO next node?? Go back to the source! if (nodeNext.nextNodes.Count == 0) { OnReachedDeadEnd (); } // YES next node? Go onto it! else { // Determine which next node to go to! PathNode _nodePrev = nodeNext; PathNode _nodeNext = GetProjectedNextNode(); nodePrev = _nodePrev; nodeNext = _nodeNext; nodeNext.OnTravelerEnterMe (this); loc -= 1; } } else if (loc < 0) { PathNode _nodePrev = nodePrev.previousNode; PathNode _nodeNext = nodePrev; nodePrev = _nodePrev; nodeNext = _nodeNext; loc += 1; } }