Esempio n. 1
0
        private void OnToolLeftClick_Select()
        {
            if (HoveredNodeId == 0 || HoveredSegmentId == 0)
            {
                return;
            }

            // Clicked on something which was hovered
            NetNode.Flags netFlags =
                Singleton <NetManager> .instance.m_nodes.m_buffer[HoveredNodeId].m_flags;

            // Not interested in clicking anything other than a junction
            if ((netFlags & NetNode.Flags.Junction) == NetNode.Flags.None)
            {
                return;
            }

            // Not interested in segments which don't start at the hovered node
            NetSegment[] segmentsBuffer = Singleton <NetManager> .instance.m_segments.m_buffer;

            if (segmentsBuffer[HoveredSegmentId].m_startNode != HoveredNodeId &&
                segmentsBuffer[HoveredSegmentId].m_endNode != HoveredNodeId)
            {
                return;
            }

            if (Time.frameCount - framesSeparateTurningLanesModeActivated > 80)
            {
                // the mode resets after 2 seconds.
                alternativeMode_ = DEFAULT_ALT_MODE;
            }

            if (SeparateSegmentLanesModifierIsPressed)
            {
                SeparateTurningLanesUtil.SeparateSegmentLanes(
                    HoveredSegmentId, HoveredNodeId, out var res, alternativeMode: alternativeMode_);
                InformUserAboutPossibleFailure(res);
            }
            else if (SeparateNodeLanesModifierIsPressed)
            {
                SeparateTurningLanesUtil.SeparateNode(HoveredNodeId, out var res, alternativeMode: alternativeMode_);
                InformUserAboutPossibleFailure(res);
            }
            else if (HasHoverLaneArrows())
            {
                SelectedSegmentId = HoveredSegmentId;
                SelectedNodeId    = HoveredNodeId;
                alternativeMode_  = DEFAULT_ALT_MODE;
                fsm_.SendTrigger(Trigger.SegmentClick);
            }

            if (SeparateSegmentLanesModifierIsPressed || SeparateNodeLanesModifierIsPressed)
            {
                framesSeparateTurningLanesModeActivated = Time.frameCount;
                alternativeMode_ = !alternativeMode_;
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Apply default Lane arrows according to policy.
 /// </summary>
 private static void BuiltIn(ushort segmentId)
 {
     SeparateTurningLanesUtil.SeparateSegmentLanesBuiltIn(
         segmentId: segmentId,
         nodeId: segmentId.ToSegment().m_startNode);
     SeparateTurningLanesUtil.SeparateSegmentLanesBuiltIn(
         segmentId: segmentId,
         nodeId: segmentId.ToSegment().m_endNode);
 }