Refactoring for move passing to all object3d controls
This commit is contained in:
parent
f166728aa1
commit
34a63956f9
10 changed files with 34 additions and 30 deletions
|
|
@ -276,7 +276,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
base.OnMouseDown(mouseEvent3D);
|
||||
}
|
||||
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
IObject3D selectedItem = RootSelection;
|
||||
if (selectedItem != null)
|
||||
|
|
@ -414,7 +414,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
}
|
||||
}
|
||||
|
||||
base.OnMouseMove(mouseEvent3D);
|
||||
base.OnMouseMove(mouseEvent3D, mouseIsOver);
|
||||
}
|
||||
|
||||
public override void OnMouseUp(Mouse3DEventArgs mouseEvent3D)
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
base.OnMouseDown(mouseEvent3D);
|
||||
}
|
||||
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
var selectedItem = RootSelection;
|
||||
ActiveSelectedItem = selectedItem;
|
||||
|
|
@ -330,7 +330,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
transformAppliedByThis = selectedItem.Matrix;
|
||||
}
|
||||
|
||||
base.OnMouseMove(mouseEvent3D);
|
||||
base.OnMouseMove(mouseEvent3D, mouseIsOver);
|
||||
}
|
||||
|
||||
public override void OnMouseUp(Mouse3DEventArgs mouseEvent3D)
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
base.OnMouseDown(mouseEvent3D);
|
||||
}
|
||||
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
var selectedItem = RootSelection;
|
||||
|
||||
|
|
@ -284,7 +284,7 @@ namespace MatterHackers.Plugins.EditorTools
|
|||
}
|
||||
}
|
||||
|
||||
base.OnMouseMove(mouseEvent3D);
|
||||
base.OnMouseMove(mouseEvent3D, mouseIsOver);
|
||||
}
|
||||
|
||||
public override void OnMouseUp(Mouse3DEventArgs mouseEvent3D)
|
||||
|
|
|
|||
|
|
@ -72,12 +72,12 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
{
|
||||
return new List<IObject3DControl>
|
||||
{
|
||||
new TracedPositionObject3DControl(object3DControlsLayer, this, Color.Green, () => StartPosition, (position) =>
|
||||
new TracedPositionObject3DControl(object3DControlsLayer, this, () => StartPosition, (position) =>
|
||||
{
|
||||
StartPosition = position;
|
||||
Distance = (StartPosition - EndPosition).Length;
|
||||
}),
|
||||
new TracedPositionObject3DControl(object3DControlsLayer, this, Color.Red, () => EndPosition, (position) =>
|
||||
new TracedPositionObject3DControl(object3DControlsLayer, this, () => EndPosition, (position) =>
|
||||
{
|
||||
EndPosition = position;
|
||||
Distance = (StartPosition - EndPosition).Length;
|
||||
|
|
|
|||
|
|
@ -46,9 +46,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
private readonly double blockSize = 7 * GuiWidget.DeviceScale;
|
||||
|
||||
private ITraceable collisionVolume;
|
||||
|
||||
private Color color;
|
||||
|
||||
private ThemeConfig theme;
|
||||
private IObject3DControlContext context;
|
||||
|
||||
private Func<Vector3> getPosition;
|
||||
|
|
@ -58,13 +56,14 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
private Action<Vector3> setPosition;
|
||||
|
||||
private Mesh shape;
|
||||
private bool mouseOver;
|
||||
|
||||
public TracedPositionObject3DControl(IObject3DControlContext context, IObject3D owner, Color color, Func<Vector3> getPosition, Action<Vector3> setPosition)
|
||||
public TracedPositionObject3DControl(IObject3DControlContext context, IObject3D owner, Func<Vector3> getPosition, Action<Vector3> setPosition)
|
||||
{
|
||||
this.theme = ApplicationController.Instance.Theme;
|
||||
this.context = context;
|
||||
this.getPosition = getPosition;
|
||||
this.setPosition = setPosition;
|
||||
this.color = color;
|
||||
this.shape = PlatonicSolids.CreateCube();
|
||||
this.owner = owner;
|
||||
collisionVolume = shape.CreateBVHData();
|
||||
|
|
@ -86,6 +85,12 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
|
||||
public void Draw(DrawGlContentEventArgs e)
|
||||
{
|
||||
var color = Color.Black;
|
||||
if (mouseOver)
|
||||
{
|
||||
color = theme.PrimaryAccentColor;
|
||||
}
|
||||
|
||||
GLHelper.Render(shape, color, ShapeMatrix(), RenderTypes.Shaded);
|
||||
}
|
||||
|
||||
|
|
@ -109,8 +114,13 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
{
|
||||
}
|
||||
|
||||
public void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
if (mouseOver != mouseIsOver)
|
||||
{
|
||||
mouseOver = mouseIsOver;
|
||||
context.GuiSurface.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMouseUp(Mouse3DEventArgs mouseEvent3D)
|
||||
|
|
|
|||
|
|
@ -216,7 +216,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
base.OnMouseDown(mouseEvent3D);
|
||||
}
|
||||
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public override void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
var selectedItem = RootSelection;
|
||||
ActiveSelectedItem = selectedItem;
|
||||
|
|
@ -260,7 +260,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
}
|
||||
}
|
||||
|
||||
base.OnMouseMove(mouseEvent3D);
|
||||
base.OnMouseMove(mouseEvent3D, mouseIsOver);
|
||||
}
|
||||
|
||||
public override void OnMouseUp(Mouse3DEventArgs mouseEvent3D)
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ namespace MatterHackers.MeshVisualizer
|
|||
|
||||
void OnMouseDown(Mouse3DEventArgs mouseEvent3D);
|
||||
|
||||
void OnMouseMove(Mouse3DEventArgs mouseEvent3D);
|
||||
void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver);
|
||||
|
||||
void OnMouseUp(Mouse3DEventArgs mouseEvent3D);
|
||||
|
||||
|
|
|
|||
|
|
@ -55,8 +55,6 @@ namespace MatterHackers.MeshVisualizer
|
|||
|
||||
protected bool MouseDownOnControl { get; set; }
|
||||
|
||||
public IntersectInfo MouseMoveInfo { get; set; }
|
||||
|
||||
public abstract void Dispose();
|
||||
|
||||
public bool MouseIsOver
|
||||
|
|
@ -125,8 +123,9 @@ namespace MatterHackers.MeshVisualizer
|
|||
}
|
||||
}
|
||||
|
||||
public virtual void OnMouseMove(Mouse3DEventArgs mouseEvent3D)
|
||||
public virtual void OnMouseMove(Mouse3DEventArgs mouseEvent3D, bool mouseIsOver)
|
||||
{
|
||||
this.MouseIsOver = mouseIsOver;
|
||||
}
|
||||
|
||||
public virtual void OnMouseUp(Mouse3DEventArgs mouseEvent3D)
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
if (MouseDownOnObject3DControlVolume && mouseDownObject3DControl != null)
|
||||
{
|
||||
mouseDownObject3DControl.OnMouseMove(mouseEvent3D);
|
||||
mouseDownObject3DControl.OnMouseMove(mouseEvent3D, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -299,22 +299,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
var object3DControls = this.Object3DControls;
|
||||
|
||||
foreach (var object3DControl in object3DControls.OfType<Object3DControl>())
|
||||
foreach (var object3DControl in object3DControls.OfType<IObject3DControl>())
|
||||
{
|
||||
if (hitObject3DControl == object3DControl)
|
||||
{
|
||||
object3DControl.MouseIsOver = true;
|
||||
object3DControl.MouseMoveInfo = info;
|
||||
HoveredObject3DControl = object3DControl;
|
||||
object3DControl.OnMouseMove(mouseEvent3D, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
object3DControl.MouseIsOver = false;
|
||||
object3DControl.MouseMoveInfo = null;
|
||||
object3DControl.OnMouseMove(mouseEvent3D, false);
|
||||
}
|
||||
|
||||
// TODO: Why do non-hit volumes get mouse move?
|
||||
object3DControl.OnMouseMove(mouseEvent3D);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue