12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System;
- using System.Diagnostics;
- using System.Linq;
- using System.Numerics;
- using System.Runtime.InteropServices;
- namespace Veldrid.Common
- {
- public partial class VeldridContent
- {
- private bool ismousedown = false;
- private MousePositon lastposition;
- public void MouseLeftDown(MousePositon positon)
- {
- ismousedown = true;
- lastposition = positon;
- }
- public void MouseRightDown(MousePositon positon)
- {
- }
- public void MouseMiddleDown(MousePositon positon)
- {
- }
- public void MouseLeftUp(MousePositon positon)
- {
- ismousedown = false;
- }
- public void MouseRightUp(MousePositon positon)
- {
- }
- public void MouseMiddleUp(MousePositon positon)
- {
- renders.Where(x => x is IZoomRender zoom && zoom.ZoomEnbled)
- .Cast<IZoomRender>()
- .ToList()
- .ForEach(x =>
- {
- x.VScale = 1;
- x.HScale = 1;
- x.VOffset = 0;
- x.HOffset = 0;
- x.WindowScale = WindowScale;
- });
- Render();
- }
- public void MouseLeave()
- {
- ismousedown = false;
- }
- public void MouseMove(MousePositon positon)
- {
- if (!ismousedown) return;
- renders.Where(x => x is IZoomRender zoom && zoom.ZoomEnbled)
- .Cast<IZoomRender>()
- .ToList()
- .ForEach(x =>
- {
- x.HOffset = x.HOffset + positon.X - lastposition.X;
- x.VOffset = x.VOffset + positon.Y - lastposition.Y;
- x.WindowScale = WindowScale;
- });
- lastposition = positon;
- Render();
- }
- public void MouseWheel(MousePositon positon, int count)
- {
- renders.Where(x => x is IZoomRender zoom && zoom.ZoomEnbled)
- .Cast<IZoomRender>()
- .ToList()
- .ForEach(x =>
- {
- x.VScale = Math.Clamp(x.VScale + count * 0.01f, 0.01f, 10);
- x.HScale = Math.Clamp(x.HScale + count * 0.01f, 0.01f, 10);
- x.WindowScale = WindowScale;
- });
- Render();
- }
- }
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- public struct MousePositon
- {
- public short X;
- public short Y;
- public static Vector2 operator *(MousePositon positon, Vector2 scale) => new Vector2(positon.X * scale.X, positon.Y * scale.Y);
- public static Vector2 operator /(MousePositon positon, Vector2 scale) => new Vector2(positon.X / scale.X, positon.Y / scale.Y);
- }
- }
|