Пример #1
0
        // returns !(ConnectGroup == None && MetaData.ConnectGroups == null)
        // the next instruction is brfalse which aumatically takes a not of the above phrase so at the end it will be
        // (ConnectGroup == None && MetaData.ConnectGroups == null) ||
        public static bool CheckConnectGroup(NetInfo.ConnectGroup cg, NetInfo.Node node)
        {
#if DEBUG
            DirectConnectUtil.AssertNotEmpty(node.GetMetaData()?.ConnectGroupsHash, "connect groups");
#endif
            return(!(cg == 0 && node.GetMetaData()?.ConnectGroupsHash == null));
        }
        public static bool ShouldConnectMedian(
            ushort nodeId,
            int nodeInfoIDX,
            ref RenderManager.Instance data)
        {
            ushort sourceSegmentID  = nodeId.ToNode().GetSegment(data.m_dataInt0 & 7);
            int    targetSegmentIDX = data.m_dataInt0 >> 4;
            ushort targetSegmentID  = nodeId.ToNode().GetSegment(targetSegmentIDX);

            NetInfo.Node nodeInfo = sourceSegmentID.ToSegment().Info.m_nodes[nodeInfoIDX];
            if (!DirectConnectUtil.IsMedian(nodeInfo, nodeId.ToNode().Info))
            {
                Log.Debug($"not a median: node:{nodeId} connect_group:{nodeInfo.m_connectGroup} vehcileTypes:{nodeId.ToNode().Info.m_vehicleTypes}");
                return(true); // ignore.
            }

            return(!DirectConnectUtil.OpenMedian(sourceSegmentID, targetSegmentID));

            if (TMPE_Exists_)
            {
                try {
                    return(!DirectConnectUtil.OpenMedian(sourceSegmentID, targetSegmentID));
                }
                catch {
                    TMPE_Exists_ = false;
                }
            }
            return(true); // ignore
        }
Пример #3
0
 public static bool CheckConnectGroup(bool flagsMatch, NetInfo.Node node, NetInfo info)
 {
     if (flagsMatch)
     {
         return(true);
     }
     return(DirectConnectUtil.ConnectGroupsMatch(
                node.GetMetaData()?.ConnectGroupsHash,
                info.GetMetaData()?.ConnectGroupsHash));
 }
Пример #4
0
 public static bool CheckConnectGroup(bool flagsMatch, NetInfo sourceInfo, NetInfo targetInfo)
 {
     if (flagsMatch)
     {
         return(true);
     }
     return(DirectConnectUtil.ConnectGroupsMatch(
                sourceInfo.GetMetaData()?.NodeConnectGroupsHash,
                targetInfo.GetMetaData()?.ConnectGroupsHash));
 }
Пример #5
0
        /// <summary>
        /// determines if DC node should be rendered modifying it if necessary.
        /// </summary>
        /// <param name="nodeInfo">node to be rendered. some inputs are post modified if necessary</param>
        /// <param name="dataVector0">data vectors. they are reversed if necessary.</param>
        /// <returns>if node should be rendered</returns>
        public static bool ShouldConnectTracks(
            ushort nodeId,
            ref RenderManager.Instance data,
            ref NetInfo.Node nodeInfo,
            ref Vector4 dataVector0)
        {
            ushort sourceSegmentID  = nodeId.ToNode().GetSegment(data.m_dataInt0 & 7);
            int    targetSegmentIDX = data.m_dataInt0 >> 4;
            ushort targetSegmentID  = nodeId.ToNode().GetSegment(targetSegmentIDX);

            if (TMPEUTILS.exists)
            {
                try {
                    bool ret = DirectConnectUtil.DetermineDirectConnect(
                        sourceSegmentID,
                        targetSegmentID,
                        nodeId,
                        ref nodeInfo,
                        out bool flipMesh);

                    if (flipMesh)
                    {
                        dataVector0.x = -dataVector0.x;
                        dataVector0.y = -dataVector0.y;
                    }

                    return(ret);
                }
                catch (Exception e) {
                    Log.Error(e.Message);
                    TMPEUTILS.exists = false;
                    throw;
                }
            }
            return(true);
        }