From 58585e1590abeb324b986c32e53fd3735ec5cf79 Mon Sep 17 00:00:00 2001 From: arkypita Date: Wed, 3 Jul 2024 09:50:33 +0200 Subject: [PATCH] Refresh on LoadingPercentage change --- LaserGRBL/Obj3D/Objects3D.cs | 59 +++++++++++++++++---------- LaserGRBL/UserControls/GrblPanel3D.cs | 8 +++- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/LaserGRBL/Obj3D/Objects3D.cs b/LaserGRBL/Obj3D/Objects3D.cs index 9d1c0e5b..d06a2301 100644 --- a/LaserGRBL/Obj3D/Objects3D.cs +++ b/LaserGRBL/Obj3D/Objects3D.cs @@ -258,27 +258,44 @@ protected override void CallDisplayList(OpenGL gl) } - public class Grbl3D : Object3D - { - public readonly GrblCore Core; - private readonly bool mJustLaserOffMovements; - private Object3DDisplayList mBoundingBoxDisplayList; - public Color Color; - public Color BoundingBoxColor; - public double LoadingPercentage { get; private set; } = 0; - public bool ShowBoundingBox { get; set; } = true; - private const int BOUNDING_RECT_LINE_WIDTH = 1; - private const int BOUNDING_RECT_STIPPLE = 10; - - public Grbl3D(GrblCore core, string name, bool justLaserOffMovements, Color color, Color boundingBoxColor) : base(name, core.PreviewLineSize.Value) - { - Core = core; - mJustLaserOffMovements = justLaserOffMovements; - Color = color; - BoundingBoxColor = boundingBoxColor; - } - - protected override void Draw() + public class Grbl3D : Object3D + { + public readonly GrblCore Core; + private readonly bool mJustLaserOffMovements; + private Object3DDisplayList mBoundingBoxDisplayList; + public Color Color; + public Color BoundingBoxColor; + private double mLoadingPercentage = 0; + public bool ShowBoundingBox { get; set; } = true; + private const int BOUNDING_RECT_LINE_WIDTH = 1; + private const int BOUNDING_RECT_STIPPLE = 10; + + public delegate void OnLoadingPercentageChangeDlg(); + public static event OnLoadingPercentageChangeDlg OnLoadingPercentageChange; + + public Grbl3D(GrblCore core, string name, bool justLaserOffMovements, Color color, Color boundingBoxColor) : base(name, core.PreviewLineSize.Value) + { + Core = core; + mJustLaserOffMovements = justLaserOffMovements; + Color = color; + BoundingBoxColor = boundingBoxColor; + } + + + public double LoadingPercentage + { + get { return mLoadingPercentage; } + private set + { + if (value != mLoadingPercentage) + { + mLoadingPercentage = value; + OnLoadingPercentageChange?.Invoke(); + } + } + } + + protected override void Draw() { NewDisplayList(true, BOUNDING_RECT_LINE_WIDTH, BOUNDING_RECT_STIPPLE); float zPos = 0; diff --git a/LaserGRBL/UserControls/GrblPanel3D.cs b/LaserGRBL/UserControls/GrblPanel3D.cs index a77d3cd7..a73532f3 100644 --- a/LaserGRBL/UserControls/GrblPanel3D.cs +++ b/LaserGRBL/UserControls/GrblPanel3D.cs @@ -141,6 +141,7 @@ public GrblPanel3D() MouseMove += GrblSceneControl_MouseMove; MouseUp += GrblSceneControl_MouseUp; MouseLeave += GrblSceneControl_MouseLeave; + Grbl3D.OnLoadingPercentageChange += Grbl3D_OnLoadingPercentageChange; Resize += GrblPanel3D_Resize; Disposed += GrblPanel3D_Disposed; mCamera.Position = new Vertex(0, 0, 0); @@ -169,7 +170,7 @@ public GrblPanel3D() */ } - private static double GetRulerStep(double n) + private static double GetRulerStep(double n) { int digitCount = Convert.ToInt32(Math.Max(3, Math.Floor(Math.Log10(n) + 1))); int power = Convert.ToInt32(Math.Pow(10, digitCount - 1)); @@ -1118,6 +1119,11 @@ public void TimerUpdate() Invalidate(); } + private void Grbl3D_OnLoadingPercentageChange() + { + Invalidate(); + } + public void OnColorChange() { mBackgroundColor = ColorScheme.PreviewBackColor;