Beispiel #1
0
        private void buttonSelectMeshes_Click(object sender, EventArgs e)
        {
            bool selectInvalidMeshes = Control.ModifierKeys == Keys.Control;

            List <DockContent> formXXList;

            if (!Gui.Docking.DockContents.TryGetValue(typeof(FormXX), out formXXList))
            {
                return;
            }
            List <DockContent> formPPList;

            if (!Gui.Docking.DockContents.TryGetValue(typeof(FormPP), out formPPList))
            {
                return;
            }

            try
            {
                List <string> srcParserVarList = new List <string>();
                List <string> srcEditorVarList = new List <string>();
                foreach (FormPP form in formPPList)
                {
                    foreach (ListViewItem item in form.otherSubfilesList.SelectedItems)
                    {
                        if (item.Text.ToLower().EndsWith(".sviex"))
                        {
                            string srcParserVar = Gui.Scripting.GetNextVariable("sviexParser");
                            srcParserVarList.Add(srcParserVar);
                            string parserCommand = srcParserVar + " = OpenSVIEX(parser=" + form.ParserVar + ", name=\"" + item.Text + "\")";
                            Gui.Scripting.RunScript(parserCommand);
                            string srcEditorVar = Gui.Scripting.GetNextVariable("sviexEditor");
                            srcEditorVarList.Add(srcEditorVar);
                            Gui.Scripting.RunScript(srcEditorVar + " = sviexEditor(parser=" + srcParserVar + ")");
                        }
                    }
                }
                foreach (FormXX xxForm in formXXList)
                {
                    while (xxForm.listViewMesh.SelectedItems.Count > 0)
                    {
                        xxForm.listViewMesh.SelectedItems[0].Selected = false;
                    }
                }
                foreach (string srcEditorVar in srcEditorVarList)
                {
                    sviexEditor editor = (sviexEditor)Gui.Scripting.Variables[srcEditorVar];
                    foreach (sviParser svi in editor.Parser.sections)
                    {
                        foreach (FormXX xxForm in formXXList)
                        {
                            if (selectInvalidMeshes)
                            {
                                xxFrame meshFrame = xx.FindFrame(svi.meshName, xxForm.Editor.Parser.Frame);
                                if (meshFrame == null || meshFrame.Mesh == null)
                                {
                                    Report.ReportLog("Mesh " + svi.meshName + "[" + svi.submeshIdx + "] is missing in " + xxForm.Editor.Parser.Name + ".");
                                    continue;
                                }
                                if (svi.submeshIdx >= meshFrame.Mesh.SubmeshList.Count || meshFrame.Mesh.SubmeshList[svi.submeshIdx].VertexList.Count != svi.indices.Length)
                                {
                                    foreach (ListViewItem item in xxForm.listViewMesh.Items)
                                    {
                                        if (item.Text == svi.meshName)
                                        {
                                            item.Selected = true;
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                foreach (ListViewItem item in xxForm.listViewMesh.Items)
                                {
                                    if (!item.Selected)
                                    {
                                        xxFrame meshFrame = xxForm.Editor.Meshes[(int)item.Tag];
                                        if (meshFrame.Name == svi.meshName)
                                        {
                                            item.Selected = true;
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                foreach (string parserVar in srcParserVarList)
                {
                    Gui.Scripting.RunScript(parserVar + "=null");
                }
                foreach (string editorVar in srcEditorVarList)
                {
                    Gui.Scripting.RunScript(editorVar + "=null");
                }
            }
            catch (Exception ex)
            {
                Utility.ReportException(ex);
            }
        }
Beispiel #2
0
        private void buttonCopyToSVIEXes_Click(object sender, EventArgs e)
        {
            List <DockContent> formXXList;

            if (!Gui.Docking.DockContents.TryGetValue(typeof(FormXX), out formXXList))
            {
                return;
            }
            List <DockContent> formPPList;

            if (!Gui.Docking.DockContents.TryGetValue(typeof(FormPP), out formPPList))
            {
                return;
            }

            groupBoxAA2SVIEXJuggler.Enabled = false;
            try
            {
                List <string> srcParserVarList = new List <string>();
                List <string> srcEditorVarList = new List <string>();
                foreach (FormPP form in formPPList)
                {
                    foreach (ListViewItem item in form.otherSubfilesList.SelectedItems)
                    {
                        if (item.Text.ToLower().EndsWith(".sviex"))
                        {
                            string srcParserVar = Gui.Scripting.GetNextVariable("sviexParser");
                            srcParserVarList.Add(srcParserVar);
                            string parserCommand = srcParserVar + " = OpenSVIEX(parser=" + form.ParserVar + ", name=\"" + item.Text + "\")";
                            Gui.Scripting.RunScript(parserCommand);
                            string srcEditorVar = Gui.Scripting.GetNextVariable("sviexEditor");
                            srcEditorVarList.Add(srcEditorVar);
                            Gui.Scripting.RunScript(srcEditorVar + " = sviexEditor(parser=" + srcParserVar + ")");
                        }
                        else if (item.Text.ToLower().EndsWith(".svi"))
                        {
                            string srcParserVar = Gui.Scripting.GetNextVariable("sviParser");
                            srcParserVarList.Add(srcParserVar);
                            string parserCommand = srcParserVar + " = OpenSVI(parser=" + form.ParserVar + ", name=\"" + item.Text + "\")";
                            Gui.Scripting.RunScript(parserCommand);
                            string srcEditorVar = Gui.Scripting.GetNextVariable("sviexEditor");
                            srcEditorVarList.Add(srcEditorVar);
                            Gui.Scripting.RunScript(srcEditorVar + " = sviexEditor(parser=" + srcParserVar + ")");
                        }
                    }
                }
                foreach (string srcEditorVar in srcEditorVarList)
                {
                    sviexEditor editor       = (sviexEditor)Gui.Scripting.Variables[srcEditorVar];
                    bool        sviexChanged = false;
                    for (ushort j = 0; j < editor.Parser.sections.Count; j++)
                    {
                        sviParser submeshSection = editor.Parser.sections[j];
                        foreach (FormXX xxForm in formXXList)
                        {
                            foreach (ListViewItem item in xxForm.listViewMesh.SelectedItems)
                            {
                                xxFrame meshFrame = xxForm.Editor.Meshes[(int)item.Tag];
                                if (submeshSection.meshName == meshFrame.Name)
                                {
                                    for (ushort i = 0; i < meshFrame.Mesh.SubmeshList.Count; i++)
                                    {
                                        if (radioButtonSubmeshesAll.Checked ||
                                            radioButtonSubmeshesSelected.Checked && xxForm.textBoxMeshName.Text == meshFrame.Name &&
                                            i < xxForm.dataGridViewMesh.Rows.Count && xxForm.dataGridViewMesh.Rows[i].Selected)
                                        {
                                            if (submeshSection.submeshIdx == i)
                                            {
                                                bool copied = (bool)Gui.Scripting.RunScript(srcEditorVar + ".CopyIntoSVI(meshFrame=" + xxForm.EditorVar + ".Meshes[" + (int)item.Tag + "], submeshIdx=" + i
                                                                                            + ", positions=" + checkBoxElementsPositions.Checked + ", bones=" + checkBoxElementsBonesWeights.Checked + ", normals=" + checkBoxElementsNormals.Checked + ", uvs=" + checkBoxElementsUVs.Checked
                                                                                            + ", unrestricted=" + checkBoxUnrestricted.Checked + ", nearestBones=" + checkBoxNearestBones.Checked + ", nearestNormals=" + checkBoxNearestNormals.Checked + ", nearestUVs=" + checkBoxNearestUVs.Checked + ")");
                                                if (copied)
                                                {
                                                    sviexChanged = true;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    if (sviexChanged)
                    {
                        foreach (FormPP form in formPPList)
                        {
                            foreach (ListViewItem item in form.otherSubfilesList.SelectedItems)
                            {
                                if (item.Text == editor.Parser.Name)
                                {
                                    int    index        = srcEditorVarList.IndexOf(srcEditorVar);
                                    string srcParserVar = srcParserVarList[index];
                                    Gui.Scripting.RunScript(form.EditorVar + ".ReplaceSubfile(file=" + srcParserVar + ")");

                                    form.Changed = true;
                                    item.Font    = new Font(form.otherSubfilesList.Font, FontStyle.Bold);
                                    break;
                                }
                            }
                        }
                    }
                }

                foreach (string parserVar in srcParserVarList)
                {
                    Gui.Scripting.RunScript(parserVar + "=null");
                }
                foreach (string editorVar in srcEditorVarList)
                {
                    Gui.Scripting.RunScript(editorVar + "=null");
                }
            }
            catch (Exception ex)
            {
                Utility.ReportException(ex);
            }
            groupBoxAA2SVIEXJuggler.Enabled = true;
        }
Beispiel #3
0
        private void buttonRemoveSVIs_Click(object sender, EventArgs e)
        {
            List <DockContent> formXXList;

            if (!Gui.Docking.DockContents.TryGetValue(typeof(FormXX), out formXXList))
            {
                return;
            }
            List <DockContent> formPPList;

            if (!Gui.Docking.DockContents.TryGetValue(typeof(FormPP), out formPPList))
            {
                return;
            }

            groupBoxAA2SVIEXJuggler.Enabled = false;
            try
            {
                List <string> srcParserVarList = new List <string>();
                List <string> srcEditorVarList = new List <string>();
                foreach (FormPP form in formPPList)
                {
                    foreach (ListViewItem item in form.otherSubfilesList.SelectedItems)
                    {
                        if (item.Text.ToLower().EndsWith(".sviex"))
                        {
                            string srcParserVar = Gui.Scripting.GetNextVariable("sviexParser");
                            srcParserVarList.Add(srcParserVar);
                            string parserCommand = srcParserVar + " = OpenSVIEX(parser=" + form.ParserVar + ", name=\"" + item.Text + "\")";
                            Gui.Scripting.RunScript(parserCommand);
                            string srcEditorVar = Gui.Scripting.GetNextVariable("sviexEditor");
                            srcEditorVarList.Add(srcEditorVar);
                            Gui.Scripting.RunScript(srcEditorVar + " = sviexEditor(parser=" + srcParserVar + ")");
                        }
                    }
                }
                foreach (string srcEditorVar in srcEditorVarList)
                {
                    sviexEditor editor       = (sviexEditor)Gui.Scripting.Variables[srcEditorVar];
                    bool        sviexChanged = false;
                    foreach (FormXX xxForm in formXXList)
                    {
                        foreach (ListViewItem item in xxForm.listViewMesh.SelectedItems)
                        {
                            xxFrame meshFrame = xxForm.Editor.Meshes[(int)item.Tag];
                            if (xxForm.textBoxMeshName.Text == meshFrame.Name)
                            {
                                for (int i = 0; i < xxForm.dataGridViewMesh.SelectedRows.Count; i++)
                                {
                                    int submeshIdx = xxForm.dataGridViewMesh.SelectedRows[i].Index;

                                    bool removed = (bool)Gui.Scripting.RunScript(srcEditorVar + ".RemoveSVI(meshFrame=" + xxForm.EditorVar + ".Meshes[" + (int)item.Tag + "], submeshIdx=" + submeshIdx + ")");
                                    if (removed)
                                    {
                                        sviexChanged = true;
                                    }
                                }
                                break;
                            }
                        }
                        if (sviexChanged)
                        {
                            break;
                        }

                        DragSource?frame = null;
                        if (xxForm.treeViewObjectTree.SelectedNode != null)
                        {
                            frame = xxForm.treeViewObjectTree.SelectedNode.Tag as DragSource?;
                            if (frame != null && frame.Value.Type == typeof(xxFrame))
                            {
                                bool removed = (bool)Gui.Scripting.RunScript(srcEditorVar + ".RemoveSVI(meshFrame=" + xxForm.EditorVar + ".Frames[" + (int)frame.Value.Id + "])");
                                if (removed)
                                {
                                    sviexChanged = true;
                                    break;
                                }
                            }
                        }
                    }

                    if (sviexChanged)
                    {
                        foreach (FormPP form in formPPList)
                        {
                            foreach (ListViewItem item in form.otherSubfilesList.SelectedItems)
                            {
                                if (item.Text == editor.Parser.Name)
                                {
                                    int    index        = srcEditorVarList.IndexOf(srcEditorVar);
                                    string srcParserVar = srcParserVarList[index];
                                    Gui.Scripting.RunScript(form.EditorVar + ".ReplaceSubfile(file=" + srcParserVar + ")");

                                    form.Changed = true;
                                    item.Font    = new Font(form.otherSubfilesList.Font, FontStyle.Bold);
                                    break;
                                }
                            }
                        }
                    }
                }

                foreach (string parserVar in srcParserVarList)
                {
                    Gui.Scripting.RunScript(parserVar + "=null");
                }
                foreach (string editorVar in srcEditorVarList)
                {
                    Gui.Scripting.RunScript(editorVar + "=null");
                }
            }
            catch (Exception ex)
            {
                Utility.ReportException(ex);
            }
            groupBoxAA2SVIEXJuggler.Enabled = true;
        }
Beispiel #4
0
        private void buttonApproximateNormals_Click(object sender, EventArgs e)
        {
            try
            {
                ComboBoxItemXX srcItem      = (ComboBoxItemXX)comboBoxCorrectlyLitXX.SelectedItem;
                string         srcMeshes    = String.Empty;
                string         srcSubmeshes = String.Empty;
                foreach (ComboBoxItemMesh meshItem in comboBoxCorrectlyLitMeshes.Items)
                {
                    srcMeshes    += srcItem.xxForm.EditorVar + ".Meshes[" + srcItem.xxForm.Editor.Meshes.IndexOf(meshItem.meshFrame) + "], ";
                    srcSubmeshes += meshItem.submeshes.Split(',').Length + ", " + meshItem.submeshes + ", ";
                }
                srcMeshes    = srcMeshes.Substring(0, srcMeshes.Length - 2);
                srcSubmeshes = srcSubmeshes.Substring(0, srcSubmeshes.Length - 2);

                ComboBoxItemXX dstItem      = (ComboBoxItemXX)comboBoxTargetXX.SelectedItem;
                string         dstMeshes    = String.Empty;
                string         dstSubmeshes = String.Empty;
                foreach (ComboBoxItemMesh meshItem in comboBoxTargetMeshes.Items)
                {
                    dstMeshes += dstItem.xxForm.EditorVar + ".Meshes[" + dstItem.xxForm.Editor.Meshes.IndexOf(meshItem.meshFrame) + "], ";
                    if (meshItem.submeshes.Contains("-1"))
                    {
                        dstSubmeshes += "-1, ";
                    }
                    else
                    {
                        dstSubmeshes += meshItem.submeshes.Split(',').Length + ", " + meshItem.submeshes + ", ";
                    }
                }
                dstMeshes    = dstMeshes.Substring(0, dstMeshes.Length - 2);
                dstSubmeshes = dstSubmeshes.Substring(0, dstSubmeshes.Length - 2);

                string srcParserVar = Gui.Scripting.GetNextVariable("sviexParser");
                string dstParserVar = Gui.Scripting.GetNextVariable("sviexParser");
                string srcEditorVar = Gui.Scripting.GetNextVariable("sviexEditor");
                foreach (IWriteFile srcFile in comboBoxSourceSVIEXunits.Items)
                {
                    comboBoxSourceSVIEXunits.SelectedItem = srcFile;

                    string      parserCommand = srcParserVar + " = OpenSVIEX(parser=" + srcItem.ppForm.ParserVar + ", name=\"" + srcFile.Name + "\")";
                    sviexParser srcParser     = (sviexParser)Gui.Scripting.RunScript(parserCommand);

                    IWriteFile dstFile = (IWriteFile)comboBoxTargetSVIEXunits.Items[comboBoxSourceSVIEXunits.Items.IndexOf(srcFile)];
                    parserCommand = dstParserVar + " = OpenSVIEX(parser=" + dstItem.ppForm.ParserVar + ", name=\"" + dstFile.Name + "\")";
                    Gui.Scripting.RunScript(parserCommand);

                    sviexEditor srcEditor = (sviexEditor)Gui.Scripting.RunScript(srcEditorVar + " = sviexEditor(parser=" + srcParserVar + ")");
                    Gui.Scripting.RunScript(srcEditorVar + ".Reorder()");
                    srcEditor.progressBar = progressBarApproximation;
                    Gui.Scripting.RunScript(srcEditorVar + ".CopyNearestNormals(srcMeshes={ " + srcMeshes + " }, srcSubmeshes={ " + srcSubmeshes + " }, dstMeshes={ " + dstMeshes + " }, dstSubmeshes={ " + dstSubmeshes + " }, dstParser=" + dstParserVar + ", nearVertexThreshold=" + ((float)numericUpDownNearVertexSqDist.Value).ToFloatString() + ", nearestNormal=" + checkBoxNearestNormal.Checked + ", automatic=" + checkBoxAutomatic.Checked + ")");
                    Gui.Scripting.RunScript(dstItem.ppForm.EditorVar + ".ReplaceSubfile(file=" + dstParserVar + ")");

                    comboBoxTargetSVIEXunits.SelectedItem = dstFile;
                }
                dstItem.ppForm.Changed = true;
                Gui.Scripting.Variables.Remove(srcParserVar);
                Gui.Scripting.Variables.Remove(dstParserVar);
                Gui.Scripting.Variables.Remove(srcEditorVar);

                progressBarApproximation.Value   = 0;
                progressBarApproximation.Maximum = 1;
            }
            catch (Exception ex)
            {
                Utility.ReportException(ex);
            }
        }