////////////////////////////////////////////////////////////////////// private void UpdateTravellers() { for (int i = _trackedTravellers.Count - 1; i >= 0; --i) { PortalTraveller traveller = _trackedTravellers[i]; if (traveller.IsInPortal) { Matrix4x4 relativeMat = _linkedPortal.transform.localToWorldMatrix * transform.worldToLocalMatrix * traveller.transform.localToWorldMatrix; if (traveller.HasCrossedPortal(this)) { traveller.Teleport(relativeMat.GetColumn(3), relativeMat.rotation); _linkedPortal.OnTravellerApprochingPortal(traveller); OnTravellerLeavingPortal(traveller); } else { traveller.UpdateClone(relativeMat.GetColumn(3), relativeMat.rotation); } } } }