TrafficManager_ImprovedAI.CustomPathFind.CheckLaneConnection C# (CSharp) Method

CheckLaneConnection() private method

private CheckLaneConnection ( uint lane1, uint lane2, ushort nodeID ) : bool
lane1 uint
lane2 uint
nodeID ushort
return bool
        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;
                }
            }
        }