internal static bool Prefix(ushort segmentID, ref NetSegment data, int index, ref TerrainModify.Surface surface, ref TerrainModify.Heights heights, ref TerrainModify.Edges edges, ref float left, ref float right, ref float leftStartY, ref float rightStartY, ref float leftEndY, ref float rightEndY, ref bool __result, NetAI __instance) { var net = __instance.m_info.GetMetaData(); if (net is null) { #if DEBUGQUAYROADS Log.Debug("No AR data found for: \n segmentId: " + segmentID + "name: " + data.Info.name); #endif return(true); } ProfileSection[] profile = net.QuayRoadsProfile; if (profile is null) { return(true); } Log.Debug("modifying mask for segment " + segmentID.ToString() + ", section " + index); bool invert = (data.m_flags & NetSegment.Flags.Invert) != 0; return(ModifyMaskCommon.ModifyMask(profile, invert, index, ref surface, ref heights, ref edges, ref left, ref right, ref leftStartY, ref rightStartY, ref leftEndY, ref rightEndY, ref __result)); }
internal static bool Prefix(ushort nodeID, ref NetNode data, ushort segment1, ushort segment2, int index, ref TerrainModify.Surface surface, ref TerrainModify.Heights heights, ref TerrainModify.Edges edges, ref float left, ref float right, ref float leftY, ref float rightY, ref bool __result, NetAI __instance) { var net = __instance.m_info.GetMetaData(); if (net is null) { return(true); } ProfileSection[] profile = net.QuayRoadsProfile; if (profile is null) { return(true); } Log.Debug("modifying mask for node " + nodeID.ToString() + ", section " + index); NetManager netManager = Singleton <NetManager> .instance; bool isStartNode = netManager.m_segments.m_buffer[segment1].m_startNode == nodeID; bool segmentInvert = (netManager.m_segments.m_buffer[segment1].m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None; bool invert = isStartNode ^ segmentInvert; float leftStartY = leftY; float rightStartY = rightY; float leftEndY = leftY; float rightEndY = rightY; bool result = ModifyMaskCommon.ModifyMask(profile, invert, index, ref surface, ref heights, ref edges, ref left, ref right, ref leftStartY, ref rightStartY, ref leftEndY, ref rightEndY, ref __result); if (isStartNode) { leftY = leftStartY; rightY = rightStartY; } else { leftY = leftEndY; rightY = rightEndY; } return(result); }