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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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]);
 }