示例#1
0
        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);
        }