public bool ToggleLaneArrows(uint laneId, bool startNode, LaneArrows flags, out LaneArrowChangeResult res) { if (Flags.toggleLaneArrowFlags(laneId, startNode, flags, out res)) { SubscribeToSegmentGeometry(Singleton <NetManager> .instance.m_lanes.m_buffer[laneId].m_segment); return(true); } return(false); }
public bool ToggleLaneArrows(uint laneId, bool startNode, LaneArrows flags, out LaneArrowChangeResult res) { if (Flags.toggleLaneArrowFlags(laneId, startNode, flags, out res)) { OnLaneChange(laneId); return(true); } return(false); }
public static bool toggleLaneArrowFlags(uint laneId, bool startNode, LaneArrows flags, out LaneArrowChangeResult res) { if (!mayHaveLaneArrows(laneId)) { removeLaneArrowFlags(laneId); res = LaneArrowChangeResult.Invalid; return(false); } if (highwayLaneArrowFlags[laneId] != null) { res = LaneArrowChangeResult.HighwayArrows; return(false); // disallow custom lane arrows in highway rule mode } if (LaneConnectionManager.Instance().HasConnections(laneId, startNode)) // TODO refactor { res = LaneArrowChangeResult.LaneConnection; return(false); // custom lane connection present } LaneArrows?arrows = laneArrowFlags[laneId]; if (arrows == null) { // read currently defined arrows uint laneFlags = (uint)Singleton <NetManager> .instance.m_lanes.m_buffer[laneId].m_flags; laneFlags &= lfr; // filter arrows arrows = (LaneArrows)laneFlags; } arrows ^= flags; laneArrowFlags[laneId] = arrows; applyLaneArrowFlags(laneId, false); res = LaneArrowChangeResult.Success; return(true); }