Beispiel #1
0
        private void DemolishNetSegments(NetInfoDemolishAndReplacementModel netInfoReplacementModel)
        {
            var netSegmentIds = this.GetNetSegmentIds(netInfoReplacementModel.SystemNameOriginal);

            foreach (var segmentId in netSegmentIds)
            {
                var segment = netManager.m_segments.m_buffer[segmentId];
                segment.Info.m_netAI.ManualDeactivation(segmentId, ref segment);
                netManager.ReleaseSegment(segmentId, false);
            }
        }
Beispiel #2
0
        private void UpgradeNetSegments(NetInfoDemolishAndReplacementModel netInfoReplacementModel)
        {
            if (!netInfoReplacementModel.HasReplacement)
            {
                return;
            }

            var replacementNetInfo = PrefabCollection <NetInfo> .FindLoaded(netInfoReplacementModel.SystemNameReplacement);

            if (replacementNetInfo == null)
            {
                return;
            }

            var randomizer    = new Randomizer();
            var netSegmentIds = this.GetNetSegmentIds(netInfoReplacementModel.SystemNameOriginal);

            foreach (var netSegmentId in netSegmentIds)
            {
                var segment = netManager.m_segments.m_buffer[netSegmentId];
                segment.Info.m_netAI.ManualDeactivation(netSegmentId, ref segment);
                var direction = segment.GetDirection(netSegmentId);

                //create a new segment over the old segment
                netManager.CreateSegment(
                    out ushort newSegmentId,
                    ref randomizer,
                    replacementNetInfo,
                    segment.m_startNode,
                    segment.m_endNode,
                    segment.m_startDirection,
                    segment.m_endDirection,
                    segment.m_buildIndex,
                    Singleton <SimulationManager> .instance.m_currentBuildIndex,
                    (segment.m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None
                    );

                //demolish the old segment
                segment.Info.m_netAI.ManualDeactivation(netSegmentId, ref segment);
                this.netManager.ReleaseSegment(netSegmentId, false);
            }
        }