// 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 }
public static bool CheckConnectGroup(bool flagsMatch, NetInfo.Node node, NetInfo info) { if (flagsMatch) { return(true); } return(DirectConnectUtil.ConnectGroupsMatch( node.GetMetaData()?.ConnectGroupsHash, info.GetMetaData()?.ConnectGroupsHash)); }
public static bool CheckConnectGroup(bool flagsMatch, NetInfo sourceInfo, NetInfo targetInfo) { if (flagsMatch) { return(true); } return(DirectConnectUtil.ConnectGroupsMatch( sourceInfo.GetMetaData()?.NodeConnectGroupsHash, targetInfo.GetMetaData()?.ConnectGroupsHash)); }
/// <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); }