Ejemplo n.º 1
0
        private void ModelChanged(MDL0Node model)
        {
            //if (_externalNode != null)
            //{
            //    _externalNode.Dispose();
            //    _externalNode = null;
            //}

            if (_targetModel != null)
            {
                modelPanel1.RemoveTarget(_targetModel);
            }

            if ((_targetModel = model) != null)
            {
                modelPanel1.AddTarget(_targetModel);
            }

            modelPanel1.ResetCamera();

            //modelPanel1.TargetModel = _targetModel;

            pnlOptions.TargetModel = _targetModel;
            pnlAnim.TargetModel    = _targetModel;
            pnlAssets.Attach(_targetModel);

            //UpdateReferences();

            //_animFrame = -1;
            SetFrame(0);
        }
Ejemplo n.º 2
0
        private void ModelChanged(MDL0Node model)
        {
            if (model != null && !_targetModels.Contains(model))
            {
                _targetModels.Add(model);
            }

            if (_targetModel != null)
            {
                _targetModel._isTargetModel = false;
            }

            if (model == null)
            {
                ModelPanel.RemoveTarget(_targetModel);
            }

            if ((_targetModel = model) != null)
            {
                ModelPanel.AddTarget(_targetModel);
                leftPanel.VIS0Indices       = _targetModel.VIS0Indices;
                _targetModel._isTargetModel = true;
                ResetVertexColors();
            }
            else
            {
                models.SelectedIndex = 0;
            }

            if (_resetCamera)
            {
                ModelPanel.ResetCamera();
                SetFrame(0);
            }
            else
            {
                _resetCamera = true;
            }

            leftPanel.Reset();
            rightPanel.Reset();

            if (TargetModelChanged != null)
            {
                TargetModelChanged(this, null);
            }

            _updating = true;
            if (_targetModel != null && !_editingAll)
            {
                models.SelectedItem = _targetModel;
            }
            _updating = false;

            if (_targetModel != null)
            {
                RenderBones = _targetModel._renderBones;
            }
        }
Ejemplo n.º 3
0
 private bool HotkeyResetCamera()
 {
     if (Ctrl)
     {
         ModelPanel.ResetCamera();
         return(true);
     }
     return(false);
 }
Ejemplo n.º 4
0
        protected virtual void ModelChanged(IModel newModel)
        {
            if (newModel != null && !_targetModels.Contains(newModel))
            {
                _targetModels.Add(newModel);
            }

            if (_targetModel != null)
            {
                _targetModel.IsTargetModel = false;
            }

            if ((_targetModel = newModel) != null)
            {
                ModelPanel.AddTarget(_targetModel);
                _targetModel.IsTargetModel = true;
                ClearSelectedVertices();
            }
            else
            {
                EditingAll = true; //No target model so all is the only option
            }
            if (_resetCamera)
            {
                ModelPanel.ResetCamera();
                SetFrame(0);
            }
            else
            {
                _resetCamera = true;
            }

            OnModelChanged();

            if (TargetModelChanged != null)
            {
                TargetModelChanged(this, null);
            }
        }
Ejemplo n.º 5
0
        protected override bool ProcessKeyPreview(ref Message m)
        {
            if (m.Msg == 0x100)
            {
                bool focused = ModelPanel.ContainsFocus;

                Keys key = (Keys)m.WParam;
                if (key == Keys.PageUp)
                {
                    if (Ctrl)
                    {
                        pnlPlayback.btnLast_Click(this, null);
                    }
                    else
                    {
                        pnlPlayback.btnNextFrame_Click(this, null);
                    }
                    return(true);
                }
                else if (key == Keys.PageDown)
                {
                    if (Ctrl)
                    {
                        pnlPlayback.btnFirst_Click(this, null);
                    }
                    else
                    {
                        pnlPlayback.btnPrevFrame_Click(this, null);
                    }
                    return(true);
                }
                else if (key == Keys.U)
                {
                    if (Ctrl)
                    {
                        ModelPanel.ResetCamera();
                        return(true);
                    }
                }
                else if (key == Keys.A)
                {
                    if (Ctrl)
                    {
                        ResetVertexColors();
                        if (_targetModels != null)
                        {
                            foreach (MDL0Node mdl in _targetModels)
                            {
                                if (mdl._objList != null)
                                {
                                    if (mdl._polyIndex != -1 && mdl._polyIndex >= 0 && mdl._polyIndex < mdl._objList.Count)
                                    {
                                        foreach (Vertex3 v in ((MDL0ObjectNode)mdl._objList[mdl._polyIndex])._manager._vertices)
                                        {
                                            _selectedVertices.Add(v);
                                            v._selected       = true;
                                            v._highlightColor = Color.Orange;
                                        }
                                    }
                                    else
                                    {
                                        foreach (MDL0ObjectNode o in mdl._objList)
                                        {
                                            foreach (Vertex3 v in o._manager._vertices)
                                            {
                                                _selectedVertices.Add(v);
                                                v._selected       = true;
                                                v._highlightColor = Color.Orange;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        weightEditor.TargetVertices = _selectedVertices;
                        vertexEditor.TargetVertices = _selectedVertices;
                        ModelPanel.Invalidate();
                    }
                    else if (focused)
                    {
                        btnLeftToggle_Click(null, null);
                        return(true);
                    }
                }
                else if (key == Keys.D)
                {
                    if (focused)
                    {
                        if (Control.ModifierKeys == (Keys.Control | Keys.Alt))
                        {
                            if (leftPanel.Visible || rightPanel.Visible || animEditors.Visible || controlPanel.Visible)
                            {
                                showBottom.Checked = showRight.Checked = showLeft.Checked = showTop.Checked = false;
                            }
                            else
                            {
                                showBottom.Checked = showRight.Checked = showLeft.Checked = showTop.Checked = true;
                            }
                        }
                        else
                        {
                            btnRightToggle_Click(null, null);
                        }
                        return(true);
                    }
                }
                else if (key == Keys.W)
                {
                    if (focused)
                    {
                        btnTopToggle_Click(null, null);
                        return(true);
                    }
                }
                else if (key == Keys.S)
                {
                    btnBottomToggle_Click(null, null);
                    return(true);
                }
                else if (key == Keys.E)
                {
                    if (focused)
                    {
                        scaleToolStripMenuItem.PerformClick();
                        return(true);
                    }
                }
                else if (key == Keys.R)
                {
                    if (focused)
                    {
                        rotationToolStripMenuItem.PerformClick();
                        return(true);
                    }
                }
                else if (key == Keys.G)
                {
                    if (focused)
                    {
                        ModelPanel.RefreshReferences();
                        return(true);
                    }
                }
                else if (key == Keys.T)
                {
                    if (focused)
                    {
                        translationToolStripMenuItem.PerformClick();
                        return(true);
                    }
                }
                else if (key == Keys.C)
                {
                    if (focused)
                    {
                        //Copy frame
                        if (Ctrl)
                        {
                            if ((ModifierKeys & Keys.Shift) == Keys.Shift)
                            {
                                //We're copying the whole frame
                                if (_currentControl is CHR0Editor)
                                {
                                    chr0Editor.btnCopyAll.PerformClick();
                                    return(true);
                                }
                            }
                            else
                            {
                                //We're copying the entry frame
                                if (_currentControl is CHR0Editor)
                                {
                                    chr0Editor.btnCopy.PerformClick();
                                    return(true);
                                }
                            }
                        }
                    }
                }
                else if (key == Keys.V)
                {
                    if (focused)
                    {
                        //Paste frame
                        if (Ctrl)
                        {
                            if (Shift)
                            {
                                if (Alt)
                                {
                                    //We're pasting only keyframes of the whole frame
                                    if (_currentControl is CHR0Editor)
                                    {
                                        chr0Editor._onlyKeys = true;
                                        chr0Editor.btnPasteAll.PerformClick();
                                        return(true);
                                    }
                                }
                                else
                                {
                                    //We're pasting the whole frame
                                    if (_currentControl is CHR0Editor)
                                    {
                                        chr0Editor._onlyKeys = false;
                                        chr0Editor.btnPasteAll.PerformClick();
                                        return(true);
                                    }
                                }
                            }
                            else
                            if (Alt)
                            {
                                //We're pasting only keyframes of the entry frame
                                if (_currentControl is CHR0Editor)
                                {
                                    chr0Editor._onlyKeys = true;
                                    chr0Editor.btnPaste.PerformClick();
                                    return(true);
                                }
                            }
                            else
                            {
                                //We're pasting the entry frame
                                if (_currentControl is CHR0Editor)
                                {
                                    chr0Editor._onlyKeys = false;
                                    chr0Editor.btnPaste.PerformClick();
                                    return(true);
                                }
                            }
                        }
                        else
                        {
                            chkVertices.PerformClick();
                            return(true);
                        }
                    }
                }
                else if (key == Keys.Back)
                {
                    if (focused)
                    {
                        if (Ctrl)
                        {
                            //Clear all keyframes from frame
                            if ((ModifierKeys & Keys.Shift) == Keys.Shift)
                            {
                                //We're removing the whole frame
                                if (_currentControl is CHR0Editor)
                                {
                                    chr0Editor.btnClearAll.PerformClick();
                                    return(true);
                                }
                            }
                            else
                            {
                                //We're removing the entry frame
                                if (_currentControl is CHR0Editor)
                                {
                                    chr0Editor.ClearEntry();
                                    return(true);
                                }
                            }
                        }
                        else if (ModifierKeys == Keys.Shift)
                        {
                            //Delete frame
                            if (_currentControl is CHR0Editor)
                            {
                                chr0Editor.btnDelete.PerformClick();
                                return(true);
                            }
                        }
                    }
                }
                else if (key == Keys.P)
                {
                    if (focused)
                    {
                        chkPolygons.PerformClick();
                        return(true);
                    }
                }
                else if (key == Keys.B)
                {
                    if (focused)
                    {
                        chkBones.PerformClick();
                        return(true);
                    }
                }
                else if (key == Keys.F)
                {
                    if (focused)
                    {
                        chkFloor.PerformClick();
                        return(true);
                    }
                }
                else if (key == Keys.I)
                {
                    if ((ModifierKeys & (Keys.Alt | Keys.Control)) == (Keys.Alt | Keys.Control))
                    {
                        btnExportToImgWithTransparency_Click(null, null);
                        return(true);
                    }
                    else if ((ModifierKeys & (Keys.Shift | Keys.Control)) == (Keys.Shift | Keys.Control))
                    {
                        btnExportToImgNoTransparency_Click(null, null);
                        return(true);
                    }
                }
                if (key == Keys.Z)
                {
                    if (Ctrl)
                    {
                        if (btnUndo.Enabled)
                        {
                            btnUndo_Click(null, null);
                        }

                        return(true);
                    }
                }
                else if (key == Keys.Y)
                {
                    if (Ctrl)
                    {
                        if (btnRedo.Enabled)
                        {
                            btnRedo_Click(null, null);
                        }

                        return(true);
                    }
                }
                else if (key == Keys.Escape)
                {
                    //Undo transformations, make sure to reset keyframes
                    if (_rotating)
                    {
                        _rotating = false;
                        chr0Editor.numRotX.Value = _oldAngles._x;
                        chr0Editor.numRotY.Value = _oldAngles._y;
                        chr0Editor.numRotZ.Value = _oldAngles._z;
                        chr0Editor.BoxChanged(chr0Editor.numRotX, null);
                        chr0Editor.BoxChanged(chr0Editor.numRotY, null);
                        chr0Editor.BoxChanged(chr0Editor.numRotZ, null);
                        ModelPanel._forceNoSelection = false;
                    }
                    if (_translating)
                    {
                        _translating = false;
                        chr0Editor.numTransX.Value = _oldPosition._x;
                        chr0Editor.numTransY.Value = _oldPosition._y;
                        chr0Editor.numTransZ.Value = _oldPosition._z;
                        chr0Editor.BoxChanged(chr0Editor.numTransX, null);
                        chr0Editor.BoxChanged(chr0Editor.numTransY, null);
                        chr0Editor.BoxChanged(chr0Editor.numTransZ, null);
                        ModelPanel._forceNoSelection = false;
                    }
                    if (_scaling)
                    {
                        _scaling = false;
                        chr0Editor.numScaleX.Value = _oldScale._x;
                        chr0Editor.numScaleY.Value = _oldScale._y;
                        chr0Editor.numScaleZ.Value = _oldScale._z;
                        chr0Editor.BoxChanged(chr0Editor.numScaleX, null);
                        chr0Editor.BoxChanged(chr0Editor.numScaleY, null);
                        chr0Editor.BoxChanged(chr0Editor.numScaleZ, null);
                        ModelPanel._forceNoSelection = false;
                    }
                }
                else if (key == Keys.Space)
                {
                    if (focused)
                    {
                        btnPlay_Click(null, null);
                        return(true);
                    }
                }
                //Weight editor has been disabled due to the necessity of re-encoding objects
                //after making influence changes. Each primitive must be regrouped if their influences have
                //changed, and this will get confusing with tristrips and other types of primitives.
                //else if (key == Keys.H)
                //{
                //    ToggleWeightEditor();
                //    return true;
                //}
                else if (key == Keys.J)
                {
                    if (focused)
                    {
                        ToggleVertexEditor();
                        return(true);
                    }
                }
            }
            return(base.ProcessKeyPreview(ref m));
        }
Ejemplo n.º 6
0
 private void resetCameraToolStripMenuItem_Click_1(object sender, EventArgs e)
 {
     ModelPanel.ResetCamera();
 }