public override void Render() { if (Active) { var color = Color.FromArgb(255, 0x00, 0x77, 0xcc); if (_selectionbox != DoubleRect.Empty) { GameRenderer.RenderRoundedRectangle(_selectionbox, color, 2f / game.Track.Zoom); RenderCorner(_selectionbox, true, true); RenderCorner(_selectionbox, false, false); RenderCorner(_selectionbox, true, false); RenderCorner(_selectionbox, false, true); if (_hoverscale) { RenderFilledCorner(_selectionbox, _nodetop, _nodeleft); } } if (_drawbox != DoubleRect.Empty) { GameRenderer.RenderRoundedRectangle(_drawbox, color, 2f / game.Track.Zoom); } if (_hoverline != null) { GameRenderer.RenderRoundedLine(_hoverline.Position, _hoverline.Position2, Color.FromArgb(127, Constants.DefaultKnobColor), (_hoverline.Width * 2 * 0.8f)); GameRenderer.DrawKnob(_hoverline.Position, _snapknob1, false, _hoverline.Width, _snapknob1 && !_snapknob2 ? 1 : 0); GameRenderer.DrawKnob(_hoverline.Position2, _snapknob2, false, _hoverline.Width, _snapknob2 && !_snapknob1 ? 1 : 0); } } base.Render(); }
private void DrawHover(GameLine line, bool knob1, bool knob2, bool selected = false) { var start = line.Position; var end = line.Position2; var width = line.Width; var elapsed = _hovertime.ElapsedMilliseconds; int animtime = 250; if (_hovertime.IsRunning) { if (elapsed > animtime * 2) { if (_hoverclick) { _hovertime.Stop(); } else { _hovertime.Stop(); } } game.Track.Invalidate(); } float hoverratio; if (_hoverclick) { animtime = 75; elapsed += 75 / 4; hoverratio = Math.Min(animtime, elapsed) / (float)animtime; } else { hoverratio = Math.Min((Math.Min(animtime, elapsed) / (float)animtime), 0.5f); } var both = knob1 == knob2 == true; var linealpha = both ? 64 : 48; if (selected && both) { linealpha += 16; } GameRenderer.RenderRoundedLine( start, end, Color.FromArgb(linealpha, Color.FromArgb(127, 127, 127)), (width * 2)); bool canlifelock = CanLifelock && line.Type != LineType.Scenery; GameRenderer.DrawKnob(start, knob1, canlifelock, width, hoverratio); GameRenderer.DrawKnob(end, knob2, canlifelock, width, hoverratio); }