public static void Prefix(ref global::NetNode __instance, ushort nodeID) { if (__instance.m_flags != 0) { var previousSkin = NetworkSkinManager.NodeSkins[nodeID]; NetworkSkin skinWithHighestPrio = null; var netManager = global::NetManager.instance; float currentPrio = -1E+07f; float currentBuildIndex = 0; for (int i = 0; i < 8; i++) { ushort segment = __instance.GetSegment(i); if (segment != 0) { NetInfo info = netManager.m_segments.m_buffer[segment].Info; float nodeInfoPriority = info.m_netAI.GetNodeInfoPriority(segment, ref netManager.m_segments.m_buffer[segment]); var buildIndex = netManager.m_segments.m_buffer[segment].m_buildIndex; if (nodeInfoPriority > currentPrio || nodeInfoPriority == currentPrio && buildIndex > currentBuildIndex) { skinWithHighestPrio = NetworkSkinManager.SegmentSkins[segment]; currentPrio = nodeInfoPriority; currentBuildIndex = netManager.m_segments.m_buffer[segment].m_buildIndex; } } } if (previousSkin != skinWithHighestPrio) { NetworkSkinManager.instance.UpdateNodeSkin(nodeID, skinWithHighestPrio); } } }
public static void GetActiveNodeBuilding(NetAI netAI, ushort nodeID, ref global::NetNode data, out BuildingInfo building, out float heightOffset) { var patcherState = Apply(netAI.m_info, NetworkSkinManager.instance.GetActiveSkin(netAI.m_info)); netAI.GetNodeBuilding(nodeID, ref data, out building, out heightOffset); Revert(netAI.m_info, patcherState); }
public static Color GetNodeColor(NetAI netAI, ushort nodeID, ref global::NetNode data, InfoManager.InfoMode infoMode) { var patcherState = Apply(netAI.m_info, NetworkSkinManager.NodeSkins[nodeID]); var segmentColor = netAI.GetColor(nodeID, ref data, infoMode); Revert(netAI.m_info, patcherState); return(segmentColor); }
public static void Postfix(ref global::NetNode __instance, TerrainSurfacePatcherState __state) { TerrainSurfacePatcher.Revert(__instance.Info, __state); }
public static void Prefix(ref global::NetNode __instance, ushort nodeID, out TerrainSurfacePatcherState __state) { // Apply the ground texture patch to the NetInfo of the node // This is important for loose road ends without junctions __state = TerrainSurfacePatcher.Apply(__instance.Info, NetworkSkinManager.NodeSkins[nodeID]); }