public void LoadWorld(Drome.World world) { World = world; SceneTreeView.BeginUpdate(); foreach (Drome.Object o in world.Objects) { TreeNode node = new TreeNode(o.InstanceName); SceneTreeView.Nodes.Add(node); // HACK: should use Reflection with an Attribute instead of this hard-coded list. if (o.Header.ClassName == "cGeneralStatic") { SceneNodes.GeneralStaticSceneNode n = new SceneNodes.GeneralStaticSceneNode(Screen, o as Drome.Objects.GeneralStatic); Screen.Nodes.Add(n); } else if (o.Header.ClassName == "cWeaponPickup") { SceneNodes.WeaponPickupSceneNode n = new SceneNodes.WeaponPickupSceneNode(Screen, o as Drome.Objects.WeaponPickup); Screen.Nodes.Add(n); } else if (o.Header.ClassName == "cOctreeModel") { SceneNodes.OctreeModelSceneNode n = new SceneNodes.OctreeModelSceneNode(Screen, o as Drome.Objects.OctreeModel); Screen.Nodes.Add(n); } } SceneTreeView.EndUpdate(); }
private void SceneTreeView_GiveFeedback(object sender, GiveFeedbackEventArgs e) { // update the position of the visual feedback item Win32Point w32Mouse = new Win32Point(); GetCursorPos(ref w32Mouse); var pfs = SceneTreeView.PointFromScreen(new Point(w32Mouse.X, w32Mouse.Y)); var tb = SceneTreeView.InputHitTest(pfs) as TextBlock; if (tb != null) { if (tb != old_tb) { if (old_tb != start_tb) { old_tb.Background = null; } if (tb != start_tb) { tb.Background = System.Windows.Media.Brushes.DarkGray; var s1 = System.Windows.Media.VisualTreeHelper.GetParent(tb); StackPanel s2 = (StackPanel)System.Windows.Media.VisualTreeHelper.GetParent(s1); target_drag = (Model)s2.DataContext; //Set current target drag //Console.WriteLine("Cursor Over " + target_drag.Name); } old_tb = tb; } } }
private void SceneTreeView_Drop(object sender, DragEventArgs e) { var tv = sender as TreeView; IInputElement target = SceneTreeView.InputHitTest(e.GetPosition(SceneTreeView)); if (old_tb != start_tb) { old_tb.Background = null; } TextBlock tb = (TextBlock)target; if (tb == null || target_drag == null) { return; } if (init_drag != target_drag) { //Remove child from parent model node ThreadRequest req = new ThreadRequest(); req.type = THREAD_REQUEST_TYPE.CHANGE_MODEL_PARENT_REQUEST; req.arguments.Add(init_drag); req.arguments.Add(target_drag); glControl.engine.issueRenderingRequest(ref req); /* * lock (init_drag) * { * if (init_drag.parent != null) * { * lock (init_drag.parent.Children) * { * init_drag.parent.Children.Remove(init_drag); * } * } * * //Add to target node * init_drag.parent = target_drag; * } * * lock (target_drag.Children) * { * target_drag.Children.Add(init_drag); * } */ init_drag = null; target_drag = null; e.Handled = true; } }
public MainWindow() { InitializeComponent(); //override_assemblies(); //Override Window Title Title += " " + Util.getVersion(); //Add request timer handler requestHandler.Interval = 10; requestHandler.Elapsed += queryRequests; requestHandler.Start(); workDispatcher.Start(); //Setup Logger Util.loggingSr = new StreamWriter("log.out"); //SETUP THE CALLBACKS OF MVCORE CallBacks.updateStatus = Util.setStatus; CallBacks.openAnim = Util.loadAnimationFile; CallBacks.Log = Util.Log; CallBacks.issueRequestToGLControl = Util.sendRequest; //Toggle waiting to attach renderdoc //System.Threading.Thread.Sleep(10000); //Initialize Resource Manager RenderState.activeResMgr = new ResourceManager(); //Generate CGLControl glControl = new CGLControl(); Host.Child = glControl; //Improve performance on Treeview SceneTreeView.SetValue(VirtualizingStackPanel.IsVirtualizingProperty, true); SceneTreeView.SetValue(VirtualizingStackPanel.VirtualizationModeProperty, VirtualizationMode.Recycling); System.Diagnostics.PresentationTraceSources.DataBindingSource.Switch.Level = System.Diagnostics.SourceLevels.Error; System.Diagnostics.PresentationTraceSources.DataBindingSource.Listeners.Add(new BindingErrorTraceListener()); }