public override void Render(float delta, float mouseX, float mouseY) { if (EditorWindow.Instance.GuiScreen is GuiScreenMenu menu) { Color1 = new int[] { 255, 255, 255 }; Color2 = new int[] { 50, 50, 50 }; } else { Color1 = EditorWindow.Instance.Color1; Color2 = EditorWindow.Instance.Color2; } if (MaxValue > 0) { var rect = ClientRectangle; IsMouseOver = rect.Contains(mouseX, mouseY); var lineSize = _vertical ? rect.Height - rect.Width : rect.Width - rect.Height; var step = lineSize / MaxValue; var pos = Snap ? step * Value : Progress * lineSize; var lineRect = new RectangleF(rect.X + (_vertical ? rect.Width / 2 - 1 : rect.Height / 2), rect.Y + (_vertical ? rect.Width / 2 : rect.Height / 2 - 1), _vertical ? 2 : lineSize, _vertical ? lineSize : 2); var cursorPos = new PointF(rect.X + (_vertical ? rect.Width / 2 : rect.Height / 2 + pos), _vertical ? rect.Bottom - rect.Width / 2 - pos : rect.Y + rect.Height / 2); var mouseClose = Dragging || Math.Sqrt(Math.Pow(mouseX - cursorPos.X, 2) + Math.Pow(mouseY - cursorPos.Y, 2)) <= 12; _alpha = MathHelper.Clamp(_alpha + (mouseClose ? 10 : -10) * delta, 0, 1); RenderTimeline(lineRect); //cursor GL.Translate(cursorPos.X, cursorPos.Y, 0); GL.Rotate(_alpha * 90, 0, 0, 1); if (_alpha > 0) { GL.PolygonMode(MaterialFace.Front, PolygonMode.Line); GL.Color4(Color.FromArgb(Color1[0], Color1[1], Color1[2])); Glu.RenderCircle(0, 0, 12 * _alpha); } GL.Rotate(-_alpha * 90, 0, 0, 1); GL.Translate(-cursorPos.X, -cursorPos.Y, 0); GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill); GL.Color4(Color.FromArgb(Color1[0], Color1[1], Color1[2])); Glu.RenderCircle(cursorPos.X, cursorPos.Y, 4, 16); //GL.LineWidth(1); } }
public override void Render(float delta, float mouseX, float mouseY) { var rect = ClientRectangle; IsMouseOver = rect.Contains(mouseX, mouseY); var lineSize = _vertical ? rect.Height - rect.Width : rect.Width - rect.Height; var step = lineSize / MaxValue; var pos = Snap ? step * Value : Progress * lineSize; var lineRect = new RectangleF(rect.X + (_vertical ? rect.Width / 2 - 1 : rect.Height / 2), rect.Y + (_vertical ? rect.Width / 2 : rect.Height / 2 - 1), _vertical ? 2 : lineSize, _vertical ? lineSize : 2); var cursorPos = new PointF(rect.X + (_vertical ? rect.Width / 2 : rect.Height / 2 + pos), _vertical ? rect.Bottom - rect.Width / 2 - pos : rect.Y + rect.Height / 2); var mouseClose = Dragging || Math.Sqrt(Math.Pow(mouseX - cursorPos.X, 2) + Math.Pow(mouseY - cursorPos.Y, 2)) <= 12; _alpha = MathHelper.Clamp(_alpha + (mouseClose ? 10 : -10) * delta, 0, 1); RenderTimeline(lineRect); //cursor GL.Translate(cursorPos.X, cursorPos.Y, 0); GL.Rotate(_alpha * 90, 0, 0, 1); if (_alpha > 0) { GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill); GL.Color4(0, 1, 200 / 255f, 0.2f * _alpha); Glu.RenderCircle(0, 0, 12 * _alpha); GL.PolygonMode(MaterialFace.Front, PolygonMode.Line); GL.Color4(0, 1, 200 / 255f, 1f * _alpha); Glu.RenderCircle(0, 0, 12 * _alpha); } GL.Rotate(-_alpha * 90, 0, 0, 1); GL.Translate(-cursorPos.X, -cursorPos.Y, 0); GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill); GL.Color4(0, 1, 200 / 255f, 1f); Glu.RenderCircle(cursorPos.X, cursorPos.Y, 4, 16); //GL.LineWidth(1); }
public void Render(float delta) { if (IsDead) { return; } var speedMult = Math.Max(0.001f, (MaxAge - Age) / MaxAge); if (speedMult <= 0.001f) { IsDead = true; } var squareMult = (float)Math.Pow(speedMult, 2); X += Mx * squareMult; Y += My * squareMult; Age += delta; Angle += delta * RotationOrientation * 360 * speedMult; var size = Size * speedMult; var alpha = (int)(255 * squareMult); GL.Color4(RotationOrientation == 1 ? Color.FromArgb((int)(alpha * 0.2f), 255, 0, 255) : Color.FromArgb((int)(alpha * 0.2f), 0, 255, 200)); GL.Translate(X, Y, 0); GL.Rotate(Angle, 0, 0, 1); GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill); //Glu.RenderQuad(-size / 2, -size / 2, size, size); Glu.RenderCircle(0, 0, size / 2, _vertices); GL.Color4(RotationOrientation == 1 ? Color.FromArgb(alpha, 255, 0, 255) : Color.FromArgb(alpha, 0, 255, 200)); GL.PolygonMode(MaterialFace.Front, PolygonMode.Line); Glu.RenderCircle(0, 0, size / 2, _vertices); //Glu.RenderOutline(-size / 2, -size / 2, size, size); GL.Rotate(-Angle, 0, 0, 1); GL.Translate(-X, -Y, 0); GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill); }