private bool CheckLaneConnection(uint lane1, uint lane2, ushort nodeID)
{
ushort seg1 = NetManager.instance.m_lanes.m_buffer[lane1].m_segment;
ushort seg2 = NetManager.instance.m_lanes.m_buffer[lane2].m_segment;
Vector3 dir1 = NetManager.instance.m_segments.m_buffer[seg1].GetDirection(nodeID);
Vector3 dir2 = NetManager.instance.m_segments.m_buffer[seg2].GetDirection(nodeID);
NetLane.Flags flags = (NetLane.Flags) NetManager.instance.m_lanes.m_buffer[lane1].m_flags;
if ((flags & NetLane.Flags.LeftForwardRight) == 0 || seg1 == seg2) {
return true;
} else if (Vector3.Angle(dir1, dir2) > 150f) {
return (flags & NetLane.Flags.Forward) == NetLane.Flags.Forward;
} else {
if (Vector3.Dot(Vector3.Cross(dir1, -dir2), Vector3.up) > 0f) {
return (flags & NetLane.Flags.Right) == NetLane.Flags.Right;
} else {
return (flags & NetLane.Flags.Left) == NetLane.Flags.Left;
}
}
}