Add inspection rendering for scene graph
This commit is contained in:
parent
daa4d5c53a
commit
6836abebf3
4 changed files with 90 additions and 42 deletions
|
|
@ -6,6 +6,7 @@ using System.Windows.Forms;
|
|||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.DataConverters3D;
|
||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||
using MatterHackers.MeshVisualizer;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
|
|
@ -22,15 +23,22 @@ namespace MatterHackers.MatterControl
|
|||
private Dictionary<IObject3D, TreeNode> sceneTreeNodes = new Dictionary<IObject3D, TreeNode>();
|
||||
|
||||
private InteractiveScene scene;
|
||||
private View3DWidget view3DWidget;
|
||||
|
||||
public InspectForm(GuiWidget inspectedSystemWindow, InteractiveScene scene)
|
||||
public InspectForm(GuiWidget inspectedSystemWindow, InteractiveScene scene, View3DWidget view3DWidget)
|
||||
: this(inspectedSystemWindow)
|
||||
{
|
||||
this.view3DWidget = view3DWidget;
|
||||
this.scene = scene;
|
||||
this.scene.Children.ItemsModified += Scene_ChildrenModified;
|
||||
sceneTreeView.SuspendLayout();
|
||||
this.AddTree(scene, null, "Scene");
|
||||
sceneTreeView.ResumeLayout();
|
||||
|
||||
if (view3DWidget.ContainsFocus)
|
||||
{
|
||||
tabControl1.SelectedIndex = 1;
|
||||
}
|
||||
}
|
||||
|
||||
private void Scene_ChildrenModified(object sender, EventArgs e)
|
||||
|
|
@ -340,11 +348,13 @@ namespace MatterHackers.MatterControl
|
|||
private void SceneTreeView_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
this.InspectedObject3D = e.Node.Tag as IObject3D;
|
||||
this.scene.DebugItem = this.InspectedObject3D;
|
||||
view3DWidget.PartHasBeenChanged();
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
this.InspectedWidget.Invalidate();
|
||||
this.InspectedWidget?.Invalidate();
|
||||
}
|
||||
|
||||
public void MoveUpTree()
|
||||
|
|
@ -375,7 +385,9 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
private void systemWindow_AfterDraw(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Inspecting && !inspectedSystemWindow.HasBeenClosed)
|
||||
if (this.Inspecting
|
||||
&& !inspectedSystemWindow.HasBeenClosed
|
||||
&& tabControl1.SelectedIndex == 0)
|
||||
{
|
||||
var namedChildren = new List<GuiWidget.WidgetAndPosition>();
|
||||
inspectedSystemWindow.FindNamedChildrenRecursive(
|
||||
|
|
@ -413,6 +425,7 @@ namespace MatterHackers.MatterControl
|
|||
if (scene != null)
|
||||
{
|
||||
scene.Children.ItemsModified -= Scene_ChildrenModified;
|
||||
scene.DebugItem = null;
|
||||
}
|
||||
|
||||
if (mouseUpWidget != null)
|
||||
|
|
@ -461,22 +474,10 @@ namespace MatterHackers.MatterControl
|
|||
var node = e.Node;
|
||||
if (node.IsVisible)
|
||||
{
|
||||
var item = node.Tag as IObject3D;
|
||||
Brush brush;
|
||||
|
||||
if (scene.HasSelection
|
||||
&& (scene.SelectedItem == item
|
||||
|| scene.SelectedItem.Children.Contains(item)))
|
||||
{
|
||||
|
||||
brush = SystemBrushes.Highlight;
|
||||
}
|
||||
else
|
||||
{
|
||||
brush = Brushes.Transparent;
|
||||
}
|
||||
|
||||
e.Graphics.FillRectangle(brush, e.Node.Bounds);
|
||||
//var item = node.Tag as IObject3D;
|
||||
e.Graphics.FillRectangle(
|
||||
(sceneTreeView.SelectedNode == node) ? SystemBrushes.Highlight : Brushes.Transparent,
|
||||
node.Bounds);
|
||||
|
||||
TextRenderer.DrawText(
|
||||
e.Graphics,
|
||||
|
|
@ -487,5 +488,21 @@ namespace MatterHackers.MatterControl
|
|||
Color.Transparent);
|
||||
}
|
||||
}
|
||||
|
||||
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (this.activeTreeNode != null
|
||||
&& tabControl1.SelectedIndex != 0
|
||||
&& this.activeTreeNode.Tag is GuiWidget widget)
|
||||
{
|
||||
widget.DebugShowBounds = false;
|
||||
}
|
||||
|
||||
if (scene.DebugItem != null
|
||||
&& tabControl1.SelectedIndex != 1)
|
||||
{
|
||||
scene.DebugItem = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue