public void AddTarget(IRenderedObject target) { if (_renderList.Contains(target)) { return; } _renderList.Add(target); target.DrawCallsChanged += target_DrawCallsChanged; target.Attach(); foreach (DrawCallBase call in target.DrawCalls) { call.Bind(); } _drawCalls.AddRange(target.DrawCalls); _drawCalls.Sort(DrawCallSort); if (target is ResourceNode) { _resourceList.Add(target as ResourceNode); } Invalidate(); }
public static void InvalidateModelPanels(IRenderedObject obj) { if (_boundContexts != null) { foreach (TKContext x in _boundContexts) { if (x._window is ModelPanel /* && ((ModelPanel)x._window)._renderList.Contains(obj)*/) { x._window.Invalidate(); } } } }
public void RemoveTarget(IRenderedObject target) { if (!_settings._renderList.Contains(target)) { return; } target.Detach(); if (target is ResourceNode) { RemoveReference(target as ResourceNode); } _settings._renderList.Remove(target); }
public void RemoveTarget(IRenderedObject target) { if (!_renderList.Contains(target)) { return; } _context.Capture(); target.Detach(_context); if (target is ResourceNode) { RemoveReference(target as ResourceNode); } _renderList.Remove(target); }
public void AddTarget(IRenderedObject target) { if (_settings._renderList.Contains(target)) { return; } _settings._renderList.Add(target); if (target is ResourceNode) { _settings._resourceList.Add(target as ResourceNode); } target.Attach(_ctx); Invalidate(); }
public void AddTarget(IRenderedObject target) { if (_renderList.Contains(target)) { return; } _renderList.Add(target); if (target is ResourceNode) { _resourceList.Add(target as ResourceNode); } _context.Capture(); target.Attach(_context); Invalidate(); }
public void RemoveTarget(IRenderedObject target, bool refreshReferences = true) { if (!_renderList.Contains(target)) { return; } _renderList.Remove(target); target.Detach(); if (target is ResourceNode) { RemoveReference(target as ResourceNode, refreshReferences); } target.DrawCallsChanged -= target_DrawCallsChanged; _drawCalls = _renderList.SelectMany(x => x.DrawCalls).ToList(); _drawCalls.Sort(DrawCallSort); }
public unsafe void resourceTree_SelectionChanged(object sender, EventArgs e) { audioPlaybackPanel1.TargetSource = null; animEditControl.TargetSequence = null; texAnimEditControl.TargetSequence = null; shpAnimEditControl.TargetSequence = null; msBinEditor1.CurrentNode = null; //soundPackControl1.TargetNode = null; clrControl.ColorSource = null; visEditor.TargetNode = null; scN0CameraEditControl1.TargetSequence = null; scN0LightEditControl1.TargetSequence = null; scN0FogEditControl1.TargetSequence = null; texCoordControl1.TargetNode = null; ppcDisassembler1.SetTarget(null, 0, null); modelPanel1.ClearAll(); mdL0ObjectControl1.SetTarget(null); if (hexBox1.ByteProvider != null) { ((Be.Windows.Forms.DynamicFileByteProvider)hexBox1.ByteProvider).Dispose(); } Control newControl = null; Control newControl2 = null; BaseWrapper w; ResourceNode node = null; bool disable2nd = false; if ((resourceTree.SelectedNode is BaseWrapper) && ((node = (w = resourceTree.SelectedNode as BaseWrapper).Resource) != null)) { Action setScrollOffset = null; foreach (Control c in propertyGrid1.Controls) { if (c.GetType().Name == "PropertyGridView") { object scrollOffset = c.GetType().GetMethod("GetScrollOffset").Invoke(c, null); setScrollOffset = () => c.GetType().GetMethod("SetScrollOffset").Invoke(c, new object[] { scrollOffset }); break; } } propertyGrid1.SelectedObject = node; propertyGrid1.ExpandAllGridItems(); setScrollOffset?.Invoke(); #if DEBUG if (node is IBufferNode) { IBufferNode d = node as IBufferNode; if (d.IsValid()) { hexBox1.ByteProvider = new Be.Windows.Forms.DynamicFileByteProvider(new UnmanagedMemoryStream( (byte *)d.GetAddress(), d.GetLength(), d.GetLength(), FileAccess.ReadWrite)) { _supportsInsDel = false }; newControl = hexBox1; } } else #endif if (node is RSARGroupNode) { rsarGroupEditor.LoadGroup(node as RSARGroupNode); newControl = rsarGroupEditor; } else if (node is RELMethodNode) { ppcDisassembler1.SetTarget((RELMethodNode)node); newControl = ppcDisassembler1; } else if (node is IVideo) { videoPlaybackPanel1.TargetSource = node as IVideo; newControl = videoPlaybackPanel1; } else if (node is MDL0MaterialRefNode) { newControl = texCoordControl1; } else if (node is MDL0ObjectNode) { newControl = mdL0ObjectControl1; } else if (node is MSBinNode) { msBinEditor1.CurrentNode = node as MSBinNode; newControl = msBinEditor1; } else if (node is CHR0EntryNode) { animEditControl.TargetSequence = node as CHR0EntryNode; newControl = animEditControl; } else if (node is SRT0TextureNode) { texAnimEditControl.TargetSequence = node as SRT0TextureNode; newControl = texAnimEditControl; } else if (node is SHP0VertexSetNode) { shpAnimEditControl.TargetSequence = node as SHP0VertexSetNode; newControl = shpAnimEditControl; } else if (node is RSARNode) { soundPackControl1.TargetNode = node as RSARNode; newControl = soundPackControl1; } else if (node is VIS0EntryNode) { visEditor.TargetNode = node as VIS0EntryNode; newControl = visEditor; } else if (node is SCN0CameraNode) { scN0CameraEditControl1.TargetSequence = node as SCN0CameraNode; newControl = scN0CameraEditControl1; } else if (node is SCN0LightNode) { scN0LightEditControl1.TargetSequence = node as SCN0LightNode; newControl = scN0LightEditControl1; disable2nd = true; } else if (node is SCN0FogNode) { scN0FogEditControl1.TargetSequence = node as SCN0FogNode; newControl = scN0FogEditControl1; disable2nd = true; } else if (node is IAudioSource) { audioPlaybackPanel1.TargetSource = node as IAudioSource; IAudioStream[] sources = audioPlaybackPanel1.TargetSource.CreateStreams(); if (sources != null && sources.Length > 0 && sources[0] != null) { newControl = audioPlaybackPanel1; } } else if (node is IImageSource) { previewPanel2.RenderingTarget = ((IImageSource)node); newControl = previewPanel2; } else if (node is IRenderedObject) { newControl = modelPanel1; } else if (node is STDTNode) { STDTNode stdt = (STDTNode)node; attributeGrid1.Clear(); attributeGrid1.AddRange(stdt.GetPossibleInterpretations()); attributeGrid1.TargetNode = stdt; newControl = attributeGrid1; } if (node is IColorSource && !disable2nd) { clrControl.ColorSource = node as IColorSource; if (((IColorSource)node).ColorCount(0) > 0) { if (newControl != null) { newControl2 = clrControl; } else { newControl = clrControl; } } } if ((editToolStripMenuItem.DropDown = w.ContextMenuStrip) != null) { editToolStripMenuItem.Enabled = true; } else { editToolStripMenuItem.Enabled = false; } } else { propertyGrid1.SelectedObject = null; try { editToolStripMenuItem.DropDown = null; } catch { } editToolStripMenuItem.Enabled = false; } if (_secondaryControl != newControl2) { if (_secondaryControl != null) { _secondaryControl.Dock = DockStyle.Fill; _secondaryControl.Visible = false; } _secondaryControl = newControl2; if (_secondaryControl != null) { _secondaryControl.Dock = DockStyle.Right; _secondaryControl.Visible = true; _secondaryControl.Width = 340; } } if (_currentControl != newControl) { if (_currentControl != null) { _currentControl.Visible = false; } _currentControl = newControl; if (_currentControl != null) { _currentControl.Visible = true; } } else if (_currentControl != null && !_currentControl.Visible) { _currentControl.Visible = true; } if (_currentControl != null) { if (_secondaryControl != null) { _currentControl.Width = splitContainer2.Panel2.Width - _secondaryControl.Width; } _currentControl.Dock = DockStyle.Fill; } //Model panel has to be loaded first to display model correctly if (_currentControl is ModelPanel) { if (node._children == null) { node.Populate(0); } if (node is IModel && ModelEditControl.Instances.Count == 0) { IModel m = node as IModel; m.ResetToBindState(); } IRenderedObject o = node as IRenderedObject; modelPanel1.AddTarget(o); modelPanel1.SetCamWithBox(o.GetBox()); } else if (_currentControl is MDL0ObjectControl) { mdL0ObjectControl1.SetTarget(node as MDL0ObjectNode); } else if (_currentControl is TexCoordControl) { texCoordControl1.TargetNode = ((MDL0MaterialRefNode)node); } }
public void RemoveTarget(IRenderedObject target) { if (!_settings._renderList.Contains(target)) return; target.Detach(); if (target is ResourceNode) RemoveReference(target as ResourceNode); _settings._renderList.Remove(target); }
public void AddTarget(IRenderedObject target) { if (_settings._renderList.Contains(target)) return; _settings._renderList.Add(target); if (target is ResourceNode) _settings._resourceList.Add(target as ResourceNode); target.Attach(_ctx); Invalidate(); }