Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 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();
             }
         }
     }
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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();
        }