public static void Revert(NetInfo info, TerrainSurfacePatcherState state)
        {
            if (info == null || (state & TerrainSurfacePatcherState.Modified) == TerrainSurfacePatcherState.None)
            {
                return;
            }

            info.m_createPavement = (state & TerrainSurfacePatcherState.Pavement) != TerrainSurfacePatcherState.None;
            info.m_createGravel   = (state & TerrainSurfacePatcherState.Gravel) != TerrainSurfacePatcherState.None;
            info.m_createRuining  = (state & TerrainSurfacePatcherState.Ruined) != TerrainSurfacePatcherState.None;
            info.m_clipTerrain    = (state & TerrainSurfacePatcherState.ClipTerrain) != TerrainSurfacePatcherState.None;
        }
 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]);
 }
 public static void Postfix(ref global::NetNode __instance, TerrainSurfacePatcherState __state)
 {
     TerrainSurfacePatcher.Revert(__instance.Info, __state);
 }
 public static void Prefix(ref global::NetSegment __instance, ushort segmentID, out TerrainSurfacePatcherState __state)
 {
     __state = TerrainSurfacePatcher.Apply(__instance.Info, NetworkSkinManager.SegmentSkins[segmentID]);
 }