Themes Established

This commit is contained in:
skylumz 2018-03-13 22:00:06 -04:00
parent 8b72fc1220
commit e71c88ed77
29 changed files with 3230 additions and 5809 deletions

8
AboutForm.Designer.cs generated
View File

@ -37,7 +37,7 @@
// OkButton // OkButton
// //
this.OkButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.OkButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.OkButton.Location = new System.Drawing.Point(305, 147); this.OkButton.Location = new System.Drawing.Point(317, 173);
this.OkButton.Name = "OkButton"; this.OkButton.Name = "OkButton";
this.OkButton.Size = new System.Drawing.Size(75, 23); this.OkButton.Size = new System.Drawing.Size(75, 23);
this.OkButton.TabIndex = 0; this.OkButton.TabIndex = 0;
@ -52,7 +52,7 @@
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.label1.Location = new System.Drawing.Point(12, 35); this.label1.Location = new System.Drawing.Point(12, 35);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(368, 138); this.label1.Size = new System.Drawing.Size(380, 164);
this.label1.TabIndex = 1; this.label1.TabIndex = 1;
this.label1.Text = resources.GetString("label1.Text"); this.label1.Text = resources.GetString("label1.Text");
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
@ -64,7 +64,7 @@
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(12, 9); this.label2.Location = new System.Drawing.Point(12, 9);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(368, 26); this.label2.Size = new System.Drawing.Size(380, 26);
this.label2.TabIndex = 2; this.label2.TabIndex = 2;
this.label2.Text = "CodeWalker by dexyfex"; this.label2.Text = "CodeWalker by dexyfex";
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
@ -73,7 +73,7 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(392, 182); this.ClientSize = new System.Drawing.Size(404, 208);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.OkButton); this.Controls.Add(this.OkButton);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);

View File

@ -41,11 +41,9 @@
this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
this.MainTabControl = new System.Windows.Forms.TabControl(); this.MainTabControl = new System.Windows.Forms.TabControl();
this.SearchRPFTabPage = new System.Windows.Forms.TabPage(); this.SearchRPFTabPage = new System.Windows.Forms.TabPage();
this.SearchFileSystemTab = new System.Windows.Forms.TabPage();
this.MainStatusStrip = new System.Windows.Forms.StatusStrip();
this.StatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.FileSearchPanel = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.RpfSearchOnlyTextBox = new System.Windows.Forms.TextBox();
this.RpfSearchOnlyCheckBox = new System.Windows.Forms.CheckBox();
this.RpfSearchSaveResultsButton = new System.Windows.Forms.Button(); this.RpfSearchSaveResultsButton = new System.Windows.Forms.Button();
this.RpfSearchIgnoreTextBox = new System.Windows.Forms.TextBox(); this.RpfSearchIgnoreTextBox = new System.Windows.Forms.TextBox();
this.RpfSearchIgnoreCheckBox = new System.Windows.Forms.CheckBox(); this.RpfSearchIgnoreCheckBox = new System.Windows.Forms.CheckBox();
@ -60,26 +58,28 @@
this.RpfSearchButton = new System.Windows.Forms.Button(); this.RpfSearchButton = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.RpfSearchTextBox = new System.Windows.Forms.TextBox(); this.RpfSearchTextBox = new System.Windows.Forms.TextBox();
this.RpfSearchOnlyTextBox = new System.Windows.Forms.TextBox(); this.ExportCompressCheckBox = new System.Windows.Forms.CheckBox();
this.RpfSearchOnlyCheckBox = new System.Windows.Forms.CheckBox(); this.ExportButton = new System.Windows.Forms.Button();
this.FileInfoLabel = new System.Windows.Forms.Label();
this.ShowLargeFileContentsCheckBox = new System.Windows.Forms.CheckBox(); this.ShowLargeFileContentsCheckBox = new System.Windows.Forms.CheckBox();
this.DataHexLineCombo = new System.Windows.Forms.ComboBox(); this.DataHexLineCombo = new System.Windows.Forms.ComboBox();
this.DataTextRadio = new System.Windows.Forms.RadioButton(); this.DataTextRadio = new System.Windows.Forms.RadioButton();
this.DataHexRadio = new System.Windows.Forms.RadioButton(); this.DataHexRadio = new System.Windows.Forms.RadioButton();
this.DataTextBox = new System.Windows.Forms.TextBox(); this.DataTextBox = new System.Windows.Forms.TextBox();
this.FileInfoLabel = new System.Windows.Forms.Label(); this.SearchFileSystemTab = new System.Windows.Forms.TabPage();
this.FileSearchPanel = new System.Windows.Forms.Panel();
this.MainStatusStrip = new System.Windows.Forms.StatusStrip();
this.StatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog(); this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog();
this.ExportCompressCheckBox = new System.Windows.Forms.CheckBox();
this.ExportButton = new System.Windows.Forms.Button();
this.MainTabControl.SuspendLayout(); this.MainTabControl.SuspendLayout();
this.SearchRPFTabPage.SuspendLayout(); this.SearchRPFTabPage.SuspendLayout();
this.SearchFileSystemTab.SuspendLayout();
this.MainStatusStrip.SuspendLayout();
this.FileSearchPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout(); this.splitContainer1.SuspendLayout();
this.SearchFileSystemTab.SuspendLayout();
this.FileSearchPanel.SuspendLayout();
this.MainStatusStrip.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// FileSearchTextRadio // FileSearchTextRadio
@ -87,7 +87,7 @@
this.FileSearchTextRadio.AutoSize = true; this.FileSearchTextRadio.AutoSize = true;
this.FileSearchTextRadio.Location = new System.Drawing.Point(162, 30); this.FileSearchTextRadio.Location = new System.Drawing.Point(162, 30);
this.FileSearchTextRadio.Name = "FileSearchTextRadio"; this.FileSearchTextRadio.Name = "FileSearchTextRadio";
this.FileSearchTextRadio.Size = new System.Drawing.Size(46, 17); this.FileSearchTextRadio.Size = new System.Drawing.Size(48, 19);
this.FileSearchTextRadio.TabIndex = 45; this.FileSearchTextRadio.TabIndex = 45;
this.FileSearchTextRadio.Text = "Text"; this.FileSearchTextRadio.Text = "Text";
this.FileSearchTextRadio.UseVisualStyleBackColor = true; this.FileSearchTextRadio.UseVisualStyleBackColor = true;
@ -98,7 +98,7 @@
this.FileSearchHexRadio.Checked = true; this.FileSearchHexRadio.Checked = true;
this.FileSearchHexRadio.Location = new System.Drawing.Point(112, 30); this.FileSearchHexRadio.Location = new System.Drawing.Point(112, 30);
this.FileSearchHexRadio.Name = "FileSearchHexRadio"; this.FileSearchHexRadio.Name = "FileSearchHexRadio";
this.FileSearchHexRadio.Size = new System.Drawing.Size(44, 17); this.FileSearchHexRadio.Size = new System.Drawing.Size(47, 19);
this.FileSearchHexRadio.TabIndex = 44; this.FileSearchHexRadio.TabIndex = 44;
this.FileSearchHexRadio.TabStop = true; this.FileSearchHexRadio.TabStop = true;
this.FileSearchHexRadio.Text = "Hex"; this.FileSearchHexRadio.Text = "Hex";
@ -160,7 +160,7 @@
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(3, 6); this.label2.Location = new System.Drawing.Point(3, 6);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(73, 13); this.label2.Size = new System.Drawing.Size(83, 15);
this.label2.TabIndex = 38; this.label2.TabIndex = 38;
this.label2.Text = "Search folder:"; this.label2.Text = "Search folder:";
// //
@ -196,51 +196,6 @@
this.SearchRPFTabPage.Text = "Search RPF contents"; this.SearchRPFTabPage.Text = "Search RPF contents";
this.SearchRPFTabPage.UseVisualStyleBackColor = true; this.SearchRPFTabPage.UseVisualStyleBackColor = true;
// //
// SearchFileSystemTab
//
this.SearchFileSystemTab.Controls.Add(this.FileSearchPanel);
this.SearchFileSystemTab.Controls.Add(this.FileSearchResultsTextBox);
this.SearchFileSystemTab.Location = new System.Drawing.Point(4, 22);
this.SearchFileSystemTab.Name = "SearchFileSystemTab";
this.SearchFileSystemTab.Padding = new System.Windows.Forms.Padding(3);
this.SearchFileSystemTab.Size = new System.Drawing.Size(849, 499);
this.SearchFileSystemTab.TabIndex = 1;
this.SearchFileSystemTab.Text = "Search file system";
this.SearchFileSystemTab.UseVisualStyleBackColor = true;
//
// MainStatusStrip
//
this.MainStatusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.StatusLabel});
this.MainStatusStrip.Location = new System.Drawing.Point(0, 533);
this.MainStatusStrip.Name = "MainStatusStrip";
this.MainStatusStrip.Size = new System.Drawing.Size(852, 22);
this.MainStatusStrip.TabIndex = 47;
this.MainStatusStrip.Text = "statusStrip1";
//
// StatusLabel
//
this.StatusLabel.Name = "StatusLabel";
this.StatusLabel.Size = new System.Drawing.Size(837, 17);
this.StatusLabel.Spring = true;
this.StatusLabel.Text = "Initialising...";
this.StatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FileSearchPanel
//
this.FileSearchPanel.Controls.Add(this.FileSearchFolderTextBox);
this.FileSearchPanel.Controls.Add(this.FileSearchFolderBrowseButton);
this.FileSearchPanel.Controls.Add(this.FileSearchTextRadio);
this.FileSearchPanel.Controls.Add(this.FileSearchTextBox);
this.FileSearchPanel.Controls.Add(this.FileSearchButton);
this.FileSearchPanel.Controls.Add(this.FileSearchHexRadio);
this.FileSearchPanel.Controls.Add(this.FileSearchAbortButton);
this.FileSearchPanel.Controls.Add(this.label2);
this.FileSearchPanel.Location = new System.Drawing.Point(3, 6);
this.FileSearchPanel.Name = "FileSearchPanel";
this.FileSearchPanel.Size = new System.Drawing.Size(536, 66);
this.FileSearchPanel.TabIndex = 46;
//
// splitContainer1 // splitContainer1
// //
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
@ -279,6 +234,28 @@
this.splitContainer1.SplitterDistance = 270; this.splitContainer1.SplitterDistance = 270;
this.splitContainer1.TabIndex = 1; this.splitContainer1.TabIndex = 1;
// //
// RpfSearchOnlyTextBox
//
this.RpfSearchOnlyTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.RpfSearchOnlyTextBox.Enabled = false;
this.RpfSearchOnlyTextBox.Location = new System.Drawing.Point(68, 92);
this.RpfSearchOnlyTextBox.Name = "RpfSearchOnlyTextBox";
this.RpfSearchOnlyTextBox.Size = new System.Drawing.Size(198, 20);
this.RpfSearchOnlyTextBox.TabIndex = 66;
this.RpfSearchOnlyTextBox.Text = ".ysc, .rel";
//
// RpfSearchOnlyCheckBox
//
this.RpfSearchOnlyCheckBox.AutoSize = true;
this.RpfSearchOnlyCheckBox.Location = new System.Drawing.Point(9, 94);
this.RpfSearchOnlyCheckBox.Name = "RpfSearchOnlyCheckBox";
this.RpfSearchOnlyCheckBox.Size = new System.Drawing.Size(53, 19);
this.RpfSearchOnlyCheckBox.TabIndex = 65;
this.RpfSearchOnlyCheckBox.Text = "Only:";
this.RpfSearchOnlyCheckBox.UseVisualStyleBackColor = true;
this.RpfSearchOnlyCheckBox.CheckedChanged += new System.EventHandler(this.RpfSearchOnlyCheckBox_CheckedChanged);
//
// RpfSearchSaveResultsButton // RpfSearchSaveResultsButton
// //
this.RpfSearchSaveResultsButton.Enabled = false; this.RpfSearchSaveResultsButton.Enabled = false;
@ -307,7 +284,7 @@
this.RpfSearchIgnoreCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; this.RpfSearchIgnoreCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.RpfSearchIgnoreCheckBox.Location = new System.Drawing.Point(9, 70); this.RpfSearchIgnoreCheckBox.Location = new System.Drawing.Point(9, 70);
this.RpfSearchIgnoreCheckBox.Name = "RpfSearchIgnoreCheckBox"; this.RpfSearchIgnoreCheckBox.Name = "RpfSearchIgnoreCheckBox";
this.RpfSearchIgnoreCheckBox.Size = new System.Drawing.Size(59, 17); this.RpfSearchIgnoreCheckBox.Size = new System.Drawing.Size(64, 19);
this.RpfSearchIgnoreCheckBox.TabIndex = 58; this.RpfSearchIgnoreCheckBox.TabIndex = 58;
this.RpfSearchIgnoreCheckBox.Text = "Ignore:"; this.RpfSearchIgnoreCheckBox.Text = "Ignore:";
this.RpfSearchIgnoreCheckBox.UseVisualStyleBackColor = true; this.RpfSearchIgnoreCheckBox.UseVisualStyleBackColor = true;
@ -320,7 +297,7 @@
this.RpfSearchBothDirectionsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; this.RpfSearchBothDirectionsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.RpfSearchBothDirectionsCheckBox.Location = new System.Drawing.Point(109, 48); this.RpfSearchBothDirectionsCheckBox.Location = new System.Drawing.Point(109, 48);
this.RpfSearchBothDirectionsCheckBox.Name = "RpfSearchBothDirectionsCheckBox"; this.RpfSearchBothDirectionsCheckBox.Name = "RpfSearchBothDirectionsCheckBox";
this.RpfSearchBothDirectionsCheckBox.Size = new System.Drawing.Size(96, 17); this.RpfSearchBothDirectionsCheckBox.Size = new System.Drawing.Size(107, 19);
this.RpfSearchBothDirectionsCheckBox.TabIndex = 57; this.RpfSearchBothDirectionsCheckBox.TabIndex = 57;
this.RpfSearchBothDirectionsCheckBox.Text = "Both directions"; this.RpfSearchBothDirectionsCheckBox.Text = "Both directions";
this.RpfSearchBothDirectionsCheckBox.UseVisualStyleBackColor = true; this.RpfSearchBothDirectionsCheckBox.UseVisualStyleBackColor = true;
@ -330,7 +307,7 @@
this.RpfSearchCaseSensitiveCheckBox.AutoSize = true; this.RpfSearchCaseSensitiveCheckBox.AutoSize = true;
this.RpfSearchCaseSensitiveCheckBox.Location = new System.Drawing.Point(9, 48); this.RpfSearchCaseSensitiveCheckBox.Location = new System.Drawing.Point(9, 48);
this.RpfSearchCaseSensitiveCheckBox.Name = "RpfSearchCaseSensitiveCheckBox"; this.RpfSearchCaseSensitiveCheckBox.Name = "RpfSearchCaseSensitiveCheckBox";
this.RpfSearchCaseSensitiveCheckBox.Size = new System.Drawing.Size(94, 17); this.RpfSearchCaseSensitiveCheckBox.Size = new System.Drawing.Size(105, 19);
this.RpfSearchCaseSensitiveCheckBox.TabIndex = 56; this.RpfSearchCaseSensitiveCheckBox.TabIndex = 56;
this.RpfSearchCaseSensitiveCheckBox.Text = "Case-sensitive"; this.RpfSearchCaseSensitiveCheckBox.Text = "Case-sensitive";
this.RpfSearchCaseSensitiveCheckBox.UseVisualStyleBackColor = true; this.RpfSearchCaseSensitiveCheckBox.UseVisualStyleBackColor = true;
@ -340,7 +317,7 @@
this.RpfSearchHexRadioButton.AutoSize = true; this.RpfSearchHexRadioButton.AutoSize = true;
this.RpfSearchHexRadioButton.Location = new System.Drawing.Point(158, 5); this.RpfSearchHexRadioButton.Location = new System.Drawing.Point(158, 5);
this.RpfSearchHexRadioButton.Name = "RpfSearchHexRadioButton"; this.RpfSearchHexRadioButton.Name = "RpfSearchHexRadioButton";
this.RpfSearchHexRadioButton.Size = new System.Drawing.Size(44, 17); this.RpfSearchHexRadioButton.Size = new System.Drawing.Size(47, 19);
this.RpfSearchHexRadioButton.TabIndex = 55; this.RpfSearchHexRadioButton.TabIndex = 55;
this.RpfSearchHexRadioButton.Text = "Hex"; this.RpfSearchHexRadioButton.Text = "Hex";
this.RpfSearchHexRadioButton.UseVisualStyleBackColor = true; this.RpfSearchHexRadioButton.UseVisualStyleBackColor = true;
@ -351,7 +328,7 @@
this.RpfSearchTextRadioButton.Checked = true; this.RpfSearchTextRadioButton.Checked = true;
this.RpfSearchTextRadioButton.Location = new System.Drawing.Point(106, 5); this.RpfSearchTextRadioButton.Location = new System.Drawing.Point(106, 5);
this.RpfSearchTextRadioButton.Name = "RpfSearchTextRadioButton"; this.RpfSearchTextRadioButton.Name = "RpfSearchTextRadioButton";
this.RpfSearchTextRadioButton.Size = new System.Drawing.Size(46, 17); this.RpfSearchTextRadioButton.Size = new System.Drawing.Size(48, 19);
this.RpfSearchTextRadioButton.TabIndex = 54; this.RpfSearchTextRadioButton.TabIndex = 54;
this.RpfSearchTextRadioButton.TabStop = true; this.RpfSearchTextRadioButton.TabStop = true;
this.RpfSearchTextRadioButton.Text = "Text"; this.RpfSearchTextRadioButton.Text = "Text";
@ -413,7 +390,7 @@
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(7, 7); this.label3.Location = new System.Drawing.Point(7, 7);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(91, 13); this.label3.Size = new System.Drawing.Size(104, 15);
this.label3.TabIndex = 64; this.label3.TabIndex = 64;
this.label3.Text = "Search in files for:"; this.label3.Text = "Search in files for:";
// //
@ -426,34 +403,43 @@
this.RpfSearchTextBox.Size = new System.Drawing.Size(263, 20); this.RpfSearchTextBox.Size = new System.Drawing.Size(263, 20);
this.RpfSearchTextBox.TabIndex = 53; this.RpfSearchTextBox.TabIndex = 53;
// //
// RpfSearchOnlyTextBox // ExportCompressCheckBox
// //
this.RpfSearchOnlyTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.ExportCompressCheckBox.AutoSize = true;
this.ExportCompressCheckBox.Location = new System.Drawing.Point(87, 35);
this.ExportCompressCheckBox.Name = "ExportCompressCheckBox";
this.ExportCompressCheckBox.Size = new System.Drawing.Size(119, 19);
this.ExportCompressCheckBox.TabIndex = 112;
this.ExportCompressCheckBox.Text = "Compress export";
this.ExportCompressCheckBox.UseVisualStyleBackColor = true;
//
// ExportButton
//
this.ExportButton.Location = new System.Drawing.Point(6, 31);
this.ExportButton.Name = "ExportButton";
this.ExportButton.Size = new System.Drawing.Size(75, 23);
this.ExportButton.TabIndex = 111;
this.ExportButton.Text = "Export...";
this.ExportButton.UseVisualStyleBackColor = true;
this.ExportButton.Click += new System.EventHandler(this.ExportButton_Click);
//
// FileInfoLabel
//
this.FileInfoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.RpfSearchOnlyTextBox.Enabled = false; this.FileInfoLabel.AutoEllipsis = true;
this.RpfSearchOnlyTextBox.Location = new System.Drawing.Point(68, 92); this.FileInfoLabel.Location = new System.Drawing.Point(3, 7);
this.RpfSearchOnlyTextBox.Name = "RpfSearchOnlyTextBox"; this.FileInfoLabel.Name = "FileInfoLabel";
this.RpfSearchOnlyTextBox.Size = new System.Drawing.Size(198, 20); this.FileInfoLabel.Size = new System.Drawing.Size(549, 16);
this.RpfSearchOnlyTextBox.TabIndex = 66; this.FileInfoLabel.TabIndex = 110;
this.RpfSearchOnlyTextBox.Text = ".ysc, .rel"; this.FileInfoLabel.Text = "[Nothing selected]";
//
// RpfSearchOnlyCheckBox
//
this.RpfSearchOnlyCheckBox.AutoSize = true;
this.RpfSearchOnlyCheckBox.Location = new System.Drawing.Point(9, 94);
this.RpfSearchOnlyCheckBox.Name = "RpfSearchOnlyCheckBox";
this.RpfSearchOnlyCheckBox.Size = new System.Drawing.Size(50, 17);
this.RpfSearchOnlyCheckBox.TabIndex = 65;
this.RpfSearchOnlyCheckBox.Text = "Only:";
this.RpfSearchOnlyCheckBox.UseVisualStyleBackColor = true;
this.RpfSearchOnlyCheckBox.CheckedChanged += new System.EventHandler(this.RpfSearchOnlyCheckBox_CheckedChanged);
// //
// ShowLargeFileContentsCheckBox // ShowLargeFileContentsCheckBox
// //
this.ShowLargeFileContentsCheckBox.AutoSize = true; this.ShowLargeFileContentsCheckBox.AutoSize = true;
this.ShowLargeFileContentsCheckBox.Location = new System.Drawing.Point(392, 62); this.ShowLargeFileContentsCheckBox.Location = new System.Drawing.Point(392, 62);
this.ShowLargeFileContentsCheckBox.Name = "ShowLargeFileContentsCheckBox"; this.ShowLargeFileContentsCheckBox.Name = "ShowLargeFileContentsCheckBox";
this.ShowLargeFileContentsCheckBox.Size = new System.Drawing.Size(139, 17); this.ShowLargeFileContentsCheckBox.Size = new System.Drawing.Size(156, 19);
this.ShowLargeFileContentsCheckBox.TabIndex = 109; this.ShowLargeFileContentsCheckBox.TabIndex = 109;
this.ShowLargeFileContentsCheckBox.Text = "Show large file contents"; this.ShowLargeFileContentsCheckBox.Text = "Show large file contents";
this.ShowLargeFileContentsCheckBox.UseVisualStyleBackColor = true; this.ShowLargeFileContentsCheckBox.UseVisualStyleBackColor = true;
@ -478,7 +464,7 @@
this.DataTextRadio.AutoSize = true; this.DataTextRadio.AutoSize = true;
this.DataTextRadio.Location = new System.Drawing.Point(135, 61); this.DataTextRadio.Location = new System.Drawing.Point(135, 61);
this.DataTextRadio.Name = "DataTextRadio"; this.DataTextRadio.Name = "DataTextRadio";
this.DataTextRadio.Size = new System.Drawing.Size(46, 17); this.DataTextRadio.Size = new System.Drawing.Size(48, 19);
this.DataTextRadio.TabIndex = 107; this.DataTextRadio.TabIndex = 107;
this.DataTextRadio.Text = "Text"; this.DataTextRadio.Text = "Text";
this.DataTextRadio.UseVisualStyleBackColor = true; this.DataTextRadio.UseVisualStyleBackColor = true;
@ -489,7 +475,7 @@
this.DataHexRadio.Checked = true; this.DataHexRadio.Checked = true;
this.DataHexRadio.Location = new System.Drawing.Point(6, 61); this.DataHexRadio.Location = new System.Drawing.Point(6, 61);
this.DataHexRadio.Name = "DataHexRadio"; this.DataHexRadio.Name = "DataHexRadio";
this.DataHexRadio.Size = new System.Drawing.Size(44, 17); this.DataHexRadio.Size = new System.Drawing.Size(47, 19);
this.DataHexRadio.TabIndex = 105; this.DataHexRadio.TabIndex = 105;
this.DataHexRadio.TabStop = true; this.DataHexRadio.TabStop = true;
this.DataHexRadio.Text = "Hex"; this.DataHexRadio.Text = "Hex";
@ -512,41 +498,55 @@
this.DataTextBox.Text = "[Please select a search result]"; this.DataTextBox.Text = "[Please select a search result]";
this.DataTextBox.WordWrap = false; this.DataTextBox.WordWrap = false;
// //
// FileInfoLabel // SearchFileSystemTab
// //
this.FileInfoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.SearchFileSystemTab.Controls.Add(this.FileSearchPanel);
| System.Windows.Forms.AnchorStyles.Right))); this.SearchFileSystemTab.Controls.Add(this.FileSearchResultsTextBox);
this.FileInfoLabel.AutoEllipsis = true; this.SearchFileSystemTab.Location = new System.Drawing.Point(4, 22);
this.FileInfoLabel.Location = new System.Drawing.Point(3, 7); this.SearchFileSystemTab.Name = "SearchFileSystemTab";
this.FileInfoLabel.Name = "FileInfoLabel"; this.SearchFileSystemTab.Padding = new System.Windows.Forms.Padding(3);
this.FileInfoLabel.Size = new System.Drawing.Size(549, 16); this.SearchFileSystemTab.Size = new System.Drawing.Size(838, 499);
this.FileInfoLabel.TabIndex = 110; this.SearchFileSystemTab.TabIndex = 1;
this.FileInfoLabel.Text = "[Nothing selected]"; this.SearchFileSystemTab.Text = "Search file system";
this.SearchFileSystemTab.UseVisualStyleBackColor = true;
//
// FileSearchPanel
//
this.FileSearchPanel.Controls.Add(this.FileSearchFolderTextBox);
this.FileSearchPanel.Controls.Add(this.FileSearchFolderBrowseButton);
this.FileSearchPanel.Controls.Add(this.FileSearchTextRadio);
this.FileSearchPanel.Controls.Add(this.FileSearchTextBox);
this.FileSearchPanel.Controls.Add(this.FileSearchButton);
this.FileSearchPanel.Controls.Add(this.FileSearchHexRadio);
this.FileSearchPanel.Controls.Add(this.FileSearchAbortButton);
this.FileSearchPanel.Controls.Add(this.label2);
this.FileSearchPanel.Location = new System.Drawing.Point(3, 6);
this.FileSearchPanel.Name = "FileSearchPanel";
this.FileSearchPanel.Size = new System.Drawing.Size(536, 66);
this.FileSearchPanel.TabIndex = 46;
//
// MainStatusStrip
//
this.MainStatusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.StatusLabel});
this.MainStatusStrip.Location = new System.Drawing.Point(0, 533);
this.MainStatusStrip.Name = "MainStatusStrip";
this.MainStatusStrip.Size = new System.Drawing.Size(852, 22);
this.MainStatusStrip.TabIndex = 47;
this.MainStatusStrip.Text = "statusStrip1";
//
// StatusLabel
//
this.StatusLabel.Name = "StatusLabel";
this.StatusLabel.Size = new System.Drawing.Size(806, 17);
this.StatusLabel.Spring = true;
this.StatusLabel.Text = "Initialising...";
this.StatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// SaveFileDialog // SaveFileDialog
// //
this.SaveFileDialog.AddExtension = false; this.SaveFileDialog.AddExtension = false;
// //
// ExportCompressCheckBox
//
this.ExportCompressCheckBox.AutoSize = true;
this.ExportCompressCheckBox.Location = new System.Drawing.Point(87, 35);
this.ExportCompressCheckBox.Name = "ExportCompressCheckBox";
this.ExportCompressCheckBox.Size = new System.Drawing.Size(104, 17);
this.ExportCompressCheckBox.TabIndex = 112;
this.ExportCompressCheckBox.Text = "Compress export";
this.ExportCompressCheckBox.UseVisualStyleBackColor = true;
//
// ExportButton
//
this.ExportButton.Location = new System.Drawing.Point(6, 31);
this.ExportButton.Name = "ExportButton";
this.ExportButton.Size = new System.Drawing.Size(75, 23);
this.ExportButton.TabIndex = 111;
this.ExportButton.Text = "Export...";
this.ExportButton.UseVisualStyleBackColor = true;
this.ExportButton.Click += new System.EventHandler(this.ExportButton_Click);
//
// BinarySearchForm // BinarySearchForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -560,18 +560,18 @@
this.Load += new System.EventHandler(this.BinarySearchForm_Load); this.Load += new System.EventHandler(this.BinarySearchForm_Load);
this.MainTabControl.ResumeLayout(false); this.MainTabControl.ResumeLayout(false);
this.SearchRPFTabPage.ResumeLayout(false); this.SearchRPFTabPage.ResumeLayout(false);
this.SearchFileSystemTab.ResumeLayout(false);
this.SearchFileSystemTab.PerformLayout();
this.MainStatusStrip.ResumeLayout(false);
this.MainStatusStrip.PerformLayout();
this.FileSearchPanel.ResumeLayout(false);
this.FileSearchPanel.PerformLayout();
this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout(); this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false); this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout(); this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false); this.splitContainer1.ResumeLayout(false);
this.SearchFileSystemTab.ResumeLayout(false);
this.SearchFileSystemTab.PerformLayout();
this.FileSearchPanel.ResumeLayout(false);
this.FileSearchPanel.PerformLayout();
this.MainStatusStrip.ResumeLayout(false);
this.MainStatusStrip.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -592,7 +592,6 @@
private System.Windows.Forms.TabControl MainTabControl; private System.Windows.Forms.TabControl MainTabControl;
private System.Windows.Forms.TabPage SearchRPFTabPage; private System.Windows.Forms.TabPage SearchRPFTabPage;
private System.Windows.Forms.TabPage SearchFileSystemTab; private System.Windows.Forms.TabPage SearchFileSystemTab;
private System.Windows.Forms.StatusStrip MainStatusStrip;
private System.Windows.Forms.ToolStripStatusLabel StatusLabel; private System.Windows.Forms.ToolStripStatusLabel StatusLabel;
private System.Windows.Forms.Panel FileSearchPanel; private System.Windows.Forms.Panel FileSearchPanel;
private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.SplitContainer splitContainer1;
@ -621,5 +620,6 @@
private System.Windows.Forms.SaveFileDialog SaveFileDialog; private System.Windows.Forms.SaveFileDialog SaveFileDialog;
private System.Windows.Forms.CheckBox ExportCompressCheckBox; private System.Windows.Forms.CheckBox ExportCompressCheckBox;
private System.Windows.Forms.Button ExportButton; private System.Windows.Forms.Button ExportButton;
public System.Windows.Forms.StatusStrip MainStatusStrip;
} }
} }

View File

@ -53,10 +53,6 @@ namespace CodeWalker
} }
} }
private void UpdateStatus(string text) private void UpdateStatus(string text)
{ {
try try

View File

@ -116,14 +116,6 @@ namespace CodeWalker.GameFiles
poly.Index = i; poly.Index = i;
poly.CalculatePosition(); //calc poly center for display purposes.. poly.CalculatePosition(); //calc poly center for display purposes..
Polys.Add(poly); Polys.Add(poly);
if (poly.PortalType > 0)
{
if (poly.PortalType != 2) //seems to be what portal links need to understand..
{ }
}
} }
} }
if (Nav.Portals != null) if (Nav.Portals != null)
@ -135,8 +127,8 @@ namespace CodeWalker.GameFiles
YnvPortal portal = new YnvPortal(); YnvPortal portal = new YnvPortal();
portal.Init(this, portals[i]); portal.Init(this, portals[i]);
portal.Index = i; portal.Index = i;
portal.PositionFrom = posoffset + portal._RawData.PositionFrom.ToVector3() * aabbsize; portal.Position1 = posoffset + portal._RawData.Position1.ToVector3() * aabbsize;
portal.PositionTo = posoffset + portal._RawData.PositionTo.ToVector3() * aabbsize; portal.Position2 = posoffset + portal._RawData.Position2.ToVector3() * aabbsize;
Portals.Add(portal); Portals.Add(portal);
} }
} }
@ -202,7 +194,7 @@ namespace CodeWalker.GameFiles
return data; return data;
} }
private void BuildStructs() public void BuildStructs()
{ {
Vector3 posoffset = Nav.SectorTree?.AABBMin.XYZ() ?? Vector3.Zero; Vector3 posoffset = Nav.SectorTree?.AABBMin.XYZ() ?? Vector3.Zero;
Vector3 aabbsize = Nav.AABBSize; Vector3 aabbsize = Nav.AABBSize;
@ -221,32 +213,9 @@ namespace CodeWalker.GameFiles
{ {
for (int i = 0; i < Polys.Count; i++) for (int i = 0; i < Polys.Count; i++)
{ {
Polys[i].Index = i;
polylist.Add(Polys[i].RawData); polylist.Add(Polys[i].RawData);
} }
} }
var portallist = new List<NavMeshPortal>();
if (Portals != null)
{
for (int i = 0; i < Portals.Count; i++)
{
var portal = Portals[i];
var pdata = portal.RawData;
pdata.PositionFrom = NavMeshVertex.Create((portal.PositionFrom - posoffset) * aabbsizeinv);
pdata.PositionTo = NavMeshVertex.Create((portal.PositionTo - posoffset) * aabbsizeinv);
portallist.Add(pdata);
}
}
if (Points != null)
{
for (int i = 0; i < Points.Count; i++)
{
var point = Points[i];
var pdata = point.RawData;
pdata.Position = point.Position;
}
}
if (Nav.Vertices == null) if (Nav.Vertices == null)
@ -279,9 +248,6 @@ namespace CodeWalker.GameFiles
Nav.Polys.RebuildList(polylist); Nav.Polys.RebuildList(polylist);
Nav.Portals = (portallist.Count > 0) ? portallist.ToArray() : null;
Nav.PortalsCount = (uint)(Nav.Portals?.Length ?? 0);
//TODO: update portal links data.....
for (int i = 0; i < Nav.Polys.ListParts.Count; i++) //reassign part id's on all the polys... for (int i = 0; i < Nav.Polys.ListParts.Count; i++) //reassign part id's on all the polys...
@ -296,126 +262,16 @@ namespace CodeWalker.GameFiles
} }
} }
//Build Sector Tree
int depth = 0;
if ((Nav.ContentFlags & NavMeshFlags.Vehicle) == 0) depth = 2;
//vehicle navmesh has a single level, static has 3..
NavMeshSector orig = Nav.SectorTree;
NavMeshSector root = new NavMeshSector();
root.SetAABBs(orig.AABBMin.XYZ(), orig.AABBMax.XYZ());
uint pointindex = 0;
BuildSectorTree(root, depth, ref pointindex);
Nav.SectorTree = root;
} }
private void BuildSectorTree(NavMeshSector node, int depth, ref uint pointindex)
{
Vector3 min = node.AABBMin.XYZ();
Vector3 max = node.AABBMax.XYZ();
Vector3 cen = (min + max) * 0.5f;
if (depth <= 0)
{
//go through polys and points and create new lists for this node
NavMeshSectorData data = new NavMeshSectorData();
node.Data = data;
data.PointsStartID = pointindex;
if (Polys != null)
{
List<ushort> polyids = new List<ushort>();
for (int i = 0; i < Polys.Count; i++)
{
var poly = Polys[i];
var b = poly._RawData.CellAABB;
if (BoxOverlaps(b, node.CellAABB))
{
polyids.Add((ushort)poly.Index);
}
}
if (polyids.Count > 0)
{
data.PolyIDs = polyids.ToArray();
}
}
if (Points != null)
{
List<NavMeshPoint> points = new List<NavMeshPoint>();
for (int i = 0; i < Points.Count; i++)
{
var point = Points[i];
if (IsInBox(point.Position, min, max))
{
points.Add(point.RawData);
}
}
if (points.Count > 0)
{
data.Points = points.ToArray();
pointindex += (uint)points.Count;
}
}
}
else
{
//recurse quadtree... clockwise from +XY (top right)
int cdepth = depth - 1;
node.SubTree1 = new NavMeshSector();
node.SubTree2 = new NavMeshSector();
node.SubTree3 = new NavMeshSector();
node.SubTree4 = new NavMeshSector();
node.SubTree1.SetAABBs(new Vector3(cen.X, cen.Y, cen.Z), new Vector3(max.X, max.Y, max.Z)); //for some reason Z values seem to get arranged like this...
node.SubTree2.SetAABBs(new Vector3(cen.X, min.Y, 0.0f), new Vector3(max.X, cen.Y, 0.0f));
node.SubTree3.SetAABBs(new Vector3(min.X, min.Y, min.Z), new Vector3(cen.X, cen.Y, cen.Z));
node.SubTree4.SetAABBs(new Vector3(min.X, cen.Y, 0.0f), new Vector3(cen.X, max.Y, 0.0f));
BuildSectorTree(node.SubTree1, cdepth, ref pointindex);
BuildSectorTree(node.SubTree2, cdepth, ref pointindex);
BuildSectorTree(node.SubTree3, cdepth, ref pointindex);
BuildSectorTree(node.SubTree4, cdepth, ref pointindex);
}
}
private bool IsInBox(Vector3 p, Vector3 min, Vector3 max)
{
return (p.X >= min.X) && (p.X < max.X) &&
(p.Y >= min.Y) && (p.Y < max.Y);// &&
//(p.Z >= min.Z) && (p.Z < max.Z);
}
private bool BoxOverlaps(Vector3 bmin, Vector3 bmax, Vector3 min, Vector3 max)
{
return (bmax.X >= min.X) && (bmin.X <= max.X) &&
(bmax.Y >= min.Y) && (bmin.Y <= max.Y);// &&
//(bmax.Z >= min.Z) && (bmin.Z <= max.Z);
}
private bool BoxOverlaps(NavMeshAABB a, NavMeshAABB b)
{
return (a.MaxX >= b.MinX) && (a.MinX <= b.MaxX) &&
(a.MaxY >= b.MinY) && (a.MinY <= b.MaxY);
}
public bool RemovePoly(YnvPoly poly) public bool RemovePoly(YnvPoly poly)
{ {
return false; return false;
} }
public bool RemovePoint(YnvPoint point)
{
return false;
}
public bool RemovePortal(YnvPortal portal)
{
return false;
}
@ -442,9 +298,9 @@ namespace CodeWalker.GameFiles
for (int i = 0; i < cnt; i++) for (int i = 0; i < cnt; i++)
{ {
var portal = Portals[i]; var portal = Portals[i];
nv.Add(new Vector4(portal.PositionFrom, 1.0f)); nv.Add(new Vector4(portal.Position1, 1.0f));
v.Position = portal.PositionFrom; lv.Add(v); v.Position = portal.Position1; lv.Add(v);
v.Position = portal.PositionTo; lv.Add(v); v.Position = portal.Position2; lv.Add(v);
} }
} }
@ -578,8 +434,8 @@ namespace CodeWalker.GameFiles
public ushort AreaID { get { return _RawData.AreaID; } set { _RawData.AreaID = value; } } public ushort AreaID { get { return _RawData.AreaID; } set { _RawData.AreaID = value; } }
public ushort PartID { get { return _RawData.PartID; } set { _RawData.PartID = value; } } public ushort PartID { get { return _RawData.PartID; } set { _RawData.PartID = value; } }
public ushort PortalLinkID { get { return _RawData.PortalLinkID; } set { _RawData.PortalLinkID = value; } } public ushort PortalID { get { return _RawData.PortalID; } set { _RawData.PortalID = value; } }
public byte PortalType { get { return _RawData.PortalType; } set { _RawData.PortalType = value; } } public byte PortalUnk { get { return _RawData.PortalUnk; } set { _RawData.PortalUnk = value; } }
public byte Flags1 { get { return (byte)(_RawData.Unknown_00h & 0xFF); } set { _RawData.Unknown_00h = (ushort)((_RawData.Unknown_00h & 0xFF00) | (value & 0xFF)); } } public byte Flags1 { get { return (byte)(_RawData.Unknown_00h & 0xFF); } set { _RawData.Unknown_00h = (ushort)((_RawData.Unknown_00h & 0xFF00) | (value & 0xFF)); } }
public byte Flags2 { get { return (byte)((_RawData.Unknown_24h.Value >> 0) & 0xFF); } set { _RawData.Unknown_24h = ((_RawData.Unknown_24h.Value & 0xFFFFFF00u) | ((value & 0xFFu) << 0)); } } public byte Flags2 { get { return (byte)((_RawData.Unknown_24h.Value >> 0) & 0xFF); } set { _RawData.Unknown_24h = ((_RawData.Unknown_24h.Value & 0xFFFFFF00u) | ((value & 0xFFu) << 0)); } }
public byte Flags3 { get { return (byte)((_RawData.Unknown_24h.Value >> 9) & 0xFF); } set { _RawData.Unknown_24h = ((_RawData.Unknown_24h.Value & 0xFFFE01FFu) | ((value & 0xFFu) << 9)); } } public byte Flags3 { get { return (byte)((_RawData.Unknown_24h.Value >> 9) & 0xFF); } set { _RawData.Unknown_24h = ((_RawData.Unknown_24h.Value & 0xFFFE01FFu) | ((value & 0xFFu) << 9)); } }
@ -617,6 +473,10 @@ namespace CodeWalker.GameFiles
public bool B30_SlopeNorthWest { get { return (_RawData.Unknown_28h.Value & 2097152) > 0; } set { _RawData.Unknown_28h = BitUtil.UpdateBit(_RawData.Unknown_28h.Value, 21, value); } } public bool B30_SlopeNorthWest { get { return (_RawData.Unknown_28h.Value & 2097152) > 0; } set { _RawData.Unknown_28h = BitUtil.UpdateBit(_RawData.Unknown_28h.Value, 21, value); } }
public bool B31_SlopeWest { get { return (_RawData.Unknown_28h.Value & 4194304) > 0; } set { _RawData.Unknown_28h = BitUtil.UpdateBit(_RawData.Unknown_28h.Value, 22, value); } } public bool B31_SlopeWest { get { return (_RawData.Unknown_28h.Value & 4194304) > 0; } set { _RawData.Unknown_28h = BitUtil.UpdateBit(_RawData.Unknown_28h.Value, 22, value); } }
public bool B32_SlopeSouthWest { get { return (_RawData.Unknown_28h.Value & 8388608) > 0; } set { _RawData.Unknown_28h = BitUtil.UpdateBit(_RawData.Unknown_28h.Value, 23, value); } } public bool B32_SlopeSouthWest { get { return (_RawData.Unknown_28h.Value & 8388608) > 0; } set { _RawData.Unknown_28h = BitUtil.UpdateBit(_RawData.Unknown_28h.Value, 23, value); } }
//public bool B33_PortalUnk1 { get { return (_RawData.PortalUnk & 1) > 0; } }
//public bool B34_PortalUnk2 { get { return (_RawData.PortalUnk & 2) > 0; } }
//public bool B35_PortalUnk3 { get { return (_RawData.PortalUnk & 4) > 0; } }
//public bool B36_PortalUnk4 { get { return (_RawData.PortalUnk & 8) > 0; } }
public byte UnkX { get { return _RawData.Unknown_28h_8a; } set { _RawData.Unknown_28h_8a = value; } } public byte UnkX { get { return _RawData.Unknown_28h_8a; } set { _RawData.Unknown_28h_8a = value; } }
public byte UnkY { get { return _RawData.Unknown_28h_8b; } set { _RawData.Unknown_28h_8b = value; } } public byte UnkY { get { return _RawData.Unknown_28h_8b; } set { _RawData.Unknown_28h_8b = value; } }
@ -687,17 +547,13 @@ namespace CodeWalker.GameFiles
//if ((u5 & 8388608) > 0) colour.Red += 1.0f; //slope facing -X,-Y (southwest) //if ((u5 & 8388608) > 0) colour.Red += 1.0f; //slope facing -X,-Y (southwest)
//if (u5 >= 16777216) { } //other bits unused //if (u5 >= 16777216) { } //other bits unused
var u1 = _RawData.PortalType; var u1 = _RawData.PortalUnk;
//if ((u1 & 1) > 0) colour.Red += 1.0f; //portal - don't interact? //if ((u1 & 1) > 0) colour.Red += 1.0f; //portal - don't interact?
//if ((u1 & 2) > 0) colour.Green += 1.0f; //portal - ladder/fence interaction? //if ((u1 & 2) > 0) colour.Green += 1.0f; //portal - ladder/fence interaction?
//if ((u1 & 4) > 0) colour.Blue += 1.0f; //portal - fence interaction / go away from? //if ((u1 & 4) > 0) colour.Blue += 1.0f; //portal - fence interaction / go away from?
//if ((u1 & 8) > 0) colour.Red += 1.0f;//something file-specific? portal index related? //if ((u1 & 8) > 0) colour.Red += 1.0f;//something file-specific? portal index related?
//colour.Red = (PortalID) / 65535.0f; //portal ID testing... portalID only valid when portalType > 0!
//colour.Green = (PortalID%5)/4.0f;
//colour.Blue = ((PortalID/5)%5)/4.0f;
colour.Alpha = 0.75f; colour.Alpha = 0.75f;
@ -750,43 +606,10 @@ namespace CodeWalker.GameFiles
public YnvFile Ynv { get; set; } public YnvFile Ynv { get; set; }
public NavMeshPortal RawData { get { return _RawData; } set { _RawData = value; } } public NavMeshPortal RawData { get { return _RawData; } set { _RawData = value; } }
public Vector3 Position { get { return PositionFrom; } set { PositionFrom = value; } } public Vector3 Position { get { return Position1; } set { Position1 = value; } }
public Vector3 PositionFrom { get; set; } public Vector3 Position1 { get; set; }
public Vector3 PositionTo { get; set; } public Vector3 Position2 { get; set; }
public byte Angle { get { return _RawData.Angle; } set { _RawData.Angle = value; } }
public float Direction
{
get
{
return (float)Math.PI * 2.0f * Angle / 255.0f;
}
set
{
Angle = (byte)(value * 255.0f / ((float)Math.PI * 2.0f));
}
}
public Quaternion Orientation
{
get { return Quaternion.RotationAxis(Vector3.UnitZ, Direction); }
set
{
Vector3 dir = value.Multiply(Vector3.UnitX);
float dira = (float)Math.Atan2(dir.Y, dir.X);
Direction = dira;
}
}
public int Index { get; set; } public int Index { get; set; }
public byte Type { get { return _RawData.Type; } set { _RawData.Type = value; } }
public ushort AreaIDFrom { get { return _RawData.AreaIDFrom; } set { _RawData.AreaIDFrom = value; } }
public ushort AreaIDTo { get { return _RawData.AreaIDTo; } set { _RawData.AreaIDTo = value; } }
public ushort PolyIDFrom1 { get { return _RawData.PolyIDFrom1; } set { _RawData.PolyIDFrom1 = value; } }
public ushort PolyIDFrom2 { get { return _RawData.PolyIDFrom2; } set { _RawData.PolyIDFrom2 = value; } }
public ushort PolyIDTo1 { get { return _RawData.PolyIDTo1; } set { _RawData.PolyIDTo1 = value; } }
public ushort PolyIDTo2 { get { return _RawData.PolyIDTo2; } set { _RawData.PolyIDTo2 = value; } }
public ushort Unk1 { get { return _RawData.FlagsUnk; } set { _RawData.FlagsUnk = value; } }
public byte Unk2 { get { return _RawData.AreaUnk; } set { _RawData.AreaUnk = value; } }
public void Init(YnvFile ynv, NavMeshPortal portal) public void Init(YnvFile ynv, NavMeshPortal portal)
@ -797,15 +620,9 @@ namespace CodeWalker.GameFiles
public void SetPosition(Vector3 pos) public void SetPosition(Vector3 pos)
{ {
var delta = pos - PositionFrom; Position = pos;
PositionFrom = pos;
PositionTo += delta;
//TODO: update _RawData positions! //TODO: update _RawData positions!
} }
public void SetOrientation(Quaternion orientation)
{
Orientation = orientation;
}
public override string ToString() public override string ToString()
{ {
@ -821,16 +638,15 @@ namespace CodeWalker.GameFiles
public NavMeshPoint RawData { get { return _RawData; } set { _RawData = value; } } public NavMeshPoint RawData { get { return _RawData; } set { _RawData = value; } }
public Vector3 Position { get; set; } public Vector3 Position { get; set; }
public byte Angle { get { return _RawData.Angle; } set { _RawData.Angle = value; } }
public float Direction public float Direction
{ {
get get
{ {
return (float)Math.PI * 2.0f * Angle / 255.0f; return (float)Math.PI * 2.0f * _RawData.Angle / 255.0f;
} }
set set
{ {
Angle = (byte)(value * 255.0f / ((float)Math.PI * 2.0f)); _RawData.Angle = (byte)(value * 255.0f / ((float)Math.PI * 2.0f));
} }
} }
public Quaternion Orientation public Quaternion Orientation
@ -845,7 +661,7 @@ namespace CodeWalker.GameFiles
} }
public int Index { get; set; } public int Index { get; set; }
public byte Type { get { return _RawData.Type; } set { _RawData.Type = value; } } public byte Flags { get { return _RawData.Flags; } set { _RawData.Flags = value; } }
public void Init(YnvFile ynv, NavMeshPoint point) public void Init(YnvFile ynv, NavMeshPoint point)
{ {
@ -865,7 +681,7 @@ namespace CodeWalker.GameFiles
public override string ToString() public override string ToString()
{ {
return Index.ToString() + ": " + Type.ToString(); return Index.ToString() + ": " + Flags.ToString();
} }
} }

View File

@ -1834,8 +1834,6 @@ namespace CodeWalker.GameFiles
var mloa = arch as MloArchetype; var mloa = arch as MloArchetype;
if (mloa != null) if (mloa != null)
{ {
Vector3 mlobbmin = Vector3.Zero;
Vector3 mlobbmax = Vector3.Zero;
Vector3[] c = new Vector3[8]; Vector3[] c = new Vector3[8];
var rooms = mloa.rooms; var rooms = mloa.rooms;
if (rooms != null) if (rooms != null)
@ -1878,12 +1876,8 @@ namespace CodeWalker.GameFiles
} }
room.BBMin_CW = min; room.BBMin_CW = min;
room.BBMax_CW = max; room.BBMax_CW = max;
mlobbmin = Vector3.Min(mlobbmin, min);
mlobbmax = Vector3.Max(mlobbmax, max);
} }
} }
mloa.BBMin = mlobbmin;
mloa.BBMax = mlobbmax;
} }
} }
} }

View File

@ -65,7 +65,7 @@ namespace CodeWalker.GameFiles
public uint PolysCount { get; set; } public uint PolysCount { get; set; }
public uint AreaID { get; set; } // X + Y*100 public uint AreaID { get; set; } // X + Y*100
public uint TotalBytes { get; set; } public uint TotalBytes { get; set; }
public uint PointsCount { get; set; } public uint SectorUnkCount { get; set; }
public uint PortalsCount { get; set; } public uint PortalsCount { get; set; }
public uint PortalLinksCount { get; set; } public uint PortalLinksCount { get; set; }
public uint Unused_154h { get; set; } // 0x00000000 public uint Unused_154h { get; set; } // 0x00000000
@ -120,7 +120,7 @@ namespace CodeWalker.GameFiles
PolysCount = reader.ReadUInt32(); PolysCount = reader.ReadUInt32();
AreaID = reader.ReadUInt32(); AreaID = reader.ReadUInt32();
TotalBytes = reader.ReadUInt32(); TotalBytes = reader.ReadUInt32();
PointsCount = reader.ReadUInt32(); SectorUnkCount = reader.ReadUInt32();
PortalsCount = reader.ReadUInt32(); PortalsCount = reader.ReadUInt32();
PortalLinksCount = reader.ReadUInt32(); PortalLinksCount = reader.ReadUInt32();
Unused_154h = reader.ReadUInt32(); Unused_154h = reader.ReadUInt32();
@ -180,7 +180,7 @@ namespace CodeWalker.GameFiles
writer.Write(PolysCount); writer.Write(PolysCount);
writer.Write(AreaID); writer.Write(AreaID);
writer.Write(TotalBytes); writer.Write(TotalBytes);
writer.Write(PointsCount); writer.Write(SectorUnkCount);
writer.Write(PortalsCount); writer.Write(PortalsCount);
writer.Write(PortalLinksCount); writer.Write(PortalLinksCount);
writer.Write(Unused_154h); writer.Write(Unused_154h);
@ -570,16 +570,8 @@ namespace CodeWalker.GameFiles
public short MinZ { get; set; } public short MinZ { get; set; }
public short MaxZ { get; set; } public short MaxZ { get; set; }
public Vector3 Min public Vector3 Min { get { return new Vector3(MinX / 4.0f, MinY / 4.0f, MinZ / 4.0f); } }
{ public Vector3 Max { get { return new Vector3(MaxX / 4.0f, MaxY / 4.0f, MaxZ / 4.0f); } }
get { return new Vector3(MinX / 4.0f, MinY / 4.0f, MinZ / 4.0f); }
set { var v = value * 4.0f; MinX = (short)v.X; MinY = (short)v.Y; MinZ = (short)v.Z; }
}
public Vector3 Max
{
get { return new Vector3(MaxX / 4.0f, MaxY / 4.0f, MaxZ / 4.0f); }
set { var v = value * 4.0f; MaxX = (short)v.X; MaxY = (short)v.Y; MaxZ = (short)v.Z; }
}
public override string ToString() public override string ToString()
{ {
@ -643,7 +635,7 @@ namespace CodeWalker.GameFiles
public FlagsUint Unknown_24h { get; set; } public FlagsUint Unknown_24h { get; set; }
public FlagsUint Unknown_28h { get; set; } public FlagsUint Unknown_28h { get; set; }
public ushort PartFlags { get; set; } public ushort PartFlags { get; set; }
public ushort PortalLinkID { get; set; } public ushort PortalID { get; set; }
//public int IndexUnk { get { return (IndexFlags >> 0) & 31; } } //always 0 //public int IndexUnk { get { return (IndexFlags >> 0) & 31; } } //always 0
@ -651,7 +643,7 @@ namespace CodeWalker.GameFiles
//public int PartUnk1 { get { return (PartFlags >> 0) & 0xF; } } //always 0 //public int PartUnk1 { get { return (PartFlags >> 0) & 0xF; } } //always 0
public ushort PartID { get { return (ushort)((PartFlags >> 4) & 0xFF); } set { PartFlags = (ushort)((PartFlags & 0xF00F) | ((value & 0xFF) << 4)); } } public ushort PartID { get { return (ushort)((PartFlags >> 4) & 0xFF); } set { PartFlags = (ushort)((PartFlags & 0xF00F) | ((value & 0xFF) << 4)); } }
public byte PortalType { get { return (byte)((PartFlags >> 12) & 0xF); } set { PartFlags = (ushort)((PartFlags & 0x0FFF) | ((value & 0xF) << 12)); } } public byte PortalUnk { get { return (byte)((PartFlags >> 12) & 0xF); } set { PartFlags = (ushort)((PartFlags & 0x0FFF) | ((value & 0xF) << 12)); } }
public ushort Unknown_28h_16 { get { return (ushort)((Unknown_28h.Value & 0xFFFF)); } set { Unknown_28h = (Unknown_28h.Value & 0xFFFF0000) | (value & 0xFFFFu); } } public ushort Unknown_28h_16 { get { return (ushort)((Unknown_28h.Value & 0xFFFF)); } set { Unknown_28h = (Unknown_28h.Value & 0xFFFF0000) | (value & 0xFFFFu); } }
@ -672,8 +664,8 @@ namespace CodeWalker.GameFiles
Unknown_28h.Hex + ", " + Unknown_28h.Hex + ", " +
//PartFlags.ToString() + ", " + //PartUnk1.ToString() + ", " + //PartFlags.ToString() + ", " + //PartUnk1.ToString() + ", " +
PartID.ToString() + ", " + PartID.ToString() + ", " +
PortalType.ToString() + ", " + PortalUnk.ToString() + ", " +
PortalLinkID.ToString(); PortalID.ToString();
} }
} }
@ -758,14 +750,6 @@ namespace CodeWalker.GameFiles
} }
public void SetAABBs(Vector3 min, Vector3 max)
{
AABBMin = new Vector4(min, float.NaN);
AABBMax = new Vector4(max, float.NaN);
CellAABB = new NavMeshAABB() { Min = min, Max = max };
}
public override string ToString() public override string ToString()
{ {
return "[Min: "+AABBMin.ToString() + "], [Max:" + AABBMax.ToString() + "]"; return "[Min: "+AABBMin.ToString() + "], [Max:" + AABBMax.ToString() + "]";
@ -779,7 +763,7 @@ namespace CodeWalker.GameFiles
get { return 32; } get { return 32; }
} }
public uint PointsStartID { get; set; } public uint UnkDataStartID { get; set; }
public uint Unused_04h { get; set; } // 0x00000000 public uint Unused_04h { get; set; } // 0x00000000
public ulong PolyIDsPointer { get; set; } public ulong PolyIDsPointer { get; set; }
public ulong PointsPointer { get; set; } public ulong PointsPointer { get; set; }
@ -795,7 +779,7 @@ namespace CodeWalker.GameFiles
public override void Read(ResourceDataReader reader, params object[] parameters) public override void Read(ResourceDataReader reader, params object[] parameters)
{ {
PointsStartID = reader.ReadUInt32(); UnkDataStartID = reader.ReadUInt32();
Unused_04h = reader.ReadUInt32(); Unused_04h = reader.ReadUInt32();
PolyIDsPointer = reader.ReadUInt64(); PolyIDsPointer = reader.ReadUInt64();
PointsPointer = reader.ReadUInt64(); PointsPointer = reader.ReadUInt64();
@ -816,7 +800,7 @@ namespace CodeWalker.GameFiles
PointsCount = (ushort)(Points?.Length ?? 0); PointsCount = (ushort)(Points?.Length ?? 0);
writer.Write(PointsStartID); writer.Write(UnkDataStartID);
writer.Write(Unused_04h); writer.Write(Unused_04h);
writer.Write(PolyIDsPointer); writer.Write(PolyIDsPointer);
writer.Write(PointsPointer); writer.Write(PointsPointer);
@ -846,7 +830,7 @@ namespace CodeWalker.GameFiles
public override string ToString() public override string ToString()
{ {
return "(Polys: " + PolyIDsCount.ToString() + ", PointsCount: " + PointsCount.ToString() + ", PointsStartID: " + PointsStartID.ToString() + ")"; return "(Polys: " + PolyIDsCount.ToString() + ", UnkOffset: " + UnkDataStartID.ToString() + ", UnkCount: " + PointsCount.ToString() + ")";
} }
} }
@ -856,28 +840,20 @@ namespace CodeWalker.GameFiles
public ushort Y { get; set; } public ushort Y { get; set; }
public ushort Z { get; set; } public ushort Z { get; set; }
public byte Angle { get; set; } public byte Angle { get; set; }
public byte Type { get; set; } public byte Flags { get; set; }
public Vector3 Position public Vector3 Position { get { return ToVector3(); } }
public Vector3 ToVector3()
{ {
get const float usmax = ushort.MaxValue;
{ return new Vector3(X / usmax, Y / usmax, Z / usmax);
const float usmax = ushort.MaxValue;
return new Vector3(X / usmax, Y / usmax, Z / usmax);
}
set
{
const float usmax = ushort.MaxValue;
X = (ushort)(value.X * usmax);
Y = (ushort)(value.Y * usmax);
Z = (ushort)(value.Z * usmax);
}
} }
public override string ToString() public override string ToString()
{ {
return Type.ToString() + ": " + Angle.ToString() + ", " + Position.ToString(); return Flags.ToString() + ": " + Angle.ToString() + ", " + Position.ToString();
} }
@ -887,28 +863,31 @@ namespace CodeWalker.GameFiles
[TypeConverter(typeof(ExpandableObjectConverter))] public struct NavMeshPortal [TypeConverter(typeof(ExpandableObjectConverter))] public struct NavMeshPortal
{ {
public byte Type { get; set; } public uint TypeFlags { get; set; }
public byte Angle { get; set; } public NavMeshVertex Position1 { get; set; }
public ushort FlagsUnk { get; set; } public NavMeshVertex Position2 { get; set; }
public NavMeshVertex PositionFrom { get; set; } public ushort PolyID1a { get; set; }
public NavMeshVertex PositionTo { get; set; } public ushort PolyID1b { get; set; }
public ushort PolyIDFrom1 { get; set; } public ushort PolyID2a { get; set; }
public ushort PolyIDFrom2 { get; set; } public ushort PolyID2b { get; set; }
public ushort PolyIDTo1 { get; set; }
public ushort PolyIDTo2 { get; set; }
public uint AreaFlags { get; set; } public uint AreaFlags { get; set; }
public ushort AreaIDFrom { get { return (ushort)(AreaFlags & 0x3FFF); } set { AreaFlags = (AreaFlags & 0xFFFFC000) | (value & 0x3FFFu); } } public uint Type1 { get { return TypeFlags & 0xFF; } }
public ushort AreaIDTo { get { return (ushort)((AreaFlags >> 14) & 0x3FFF); } set { AreaFlags = (AreaFlags & 0xF0003FFF) | ((value & 0x3FFFu) << 14); } } public uint Type2 { get { return (TypeFlags >> 8) & 0xF; } }
public byte AreaUnk { get { return (byte)((AreaFlags >> 28) & 0xF); } set { AreaFlags = (AreaFlags & 0x0FFFFFFF) | ((value & 0xFu) << 28); } } public uint Type3 { get { return (TypeFlags >> 12) & 0xF; } }
public uint Type4 { get { return (TypeFlags >> 16) & 0xFFFF; } }
public ushort AreaID1 { get { return (ushort)(AreaFlags & 0x3FFF); } }
public ushort AreaID2 { get { return (ushort)((AreaFlags >> 14) & 0x3FFF); } }
public byte AreaUnk { get { return (byte)((AreaFlags >> 28) & 0xF); } }
public override string ToString() public override string ToString()
{ {
return AreaIDFrom.ToString() + ", " + AreaIDTo.ToString() + ", " + AreaUnk.ToString() + ", " + return AreaID1.ToString() + ", " + AreaID2.ToString() + ", " + AreaUnk.ToString() + ", " +
PolyIDFrom1.ToString() + ", " + PolyIDFrom2.ToString() + ", " + PolyID1a.ToString() + ", " + PolyID1b.ToString() + ", " +
PolyIDTo1.ToString() + ", " + PolyIDTo2.ToString() + ", " + PolyID2a.ToString() + ", " + PolyID2b.ToString() + ", " +
Type.ToString() + ", " + Angle.ToString() + ", " + FlagsUnk.ToString() + ", " + Type1.ToString() + ", " + Type2.ToString() + ", " + Type3.ToString() + ", " + Type4.ToString() + ", " +
"(" + PositionFrom.ToString() + " | " + PositionTo.ToString() + ")"; "(" + Position1.ToString() + " | " + Position2.ToString() + ")";
} }
} }

View File

@ -1,4 +1,5 @@
using System; using CodeWalker.WinForms;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
@ -233,7 +234,7 @@ namespace CodeWalker
public static class Prompt public static class Prompt
{ {
//handy utility to get a string from the user... //handy utility to get a string from the user...
public static string ShowDialog(IWin32Window owner, string text, string caption, string defaultvalue = "") public static string ShowDialog(IWin32Window owner, string text, string caption, ThemeBase theme, string defaultvalue = "")
{ {
Form prompt = new Form() Form prompt = new Form()
{ {
@ -243,8 +244,9 @@ namespace CodeWalker
Text = caption, Text = caption,
StartPosition = FormStartPosition.CenterParent, StartPosition = FormStartPosition.CenterParent,
MaximizeBox = false, MaximizeBox = false,
MinimizeBox = false MinimizeBox = false
}; };
FormTheme.SetTheme(prompt, theme);
var textLabel = new Label() { Left = 30, Top = 20, Width = 370, Height = 20, Text = text, }; var textLabel = new Label() { Left = 30, Top = 20, Width = 370, Height = 20, Text = text, };
var textBox = new TextBox() { Left = 30, Top = 40, Width = 370, Text = defaultvalue }; var textBox = new TextBox() { Left = 30, Top = 40, Width = 370, Text = defaultvalue };
var cancel = new Button() { Text = "Cancel", Left = 230, Width = 80, Top = 70, DialogResult = DialogResult.Cancel }; var cancel = new Button() { Text = "Cancel", Left = 230, Width = 80, Top = 70, DialogResult = DialogResult.Cancel };
@ -275,6 +277,10 @@ namespace CodeWalker
var disback = SystemColors.Control; var disback = SystemColors.Control;
var disfore = form.ForeColor; var disfore = form.ForeColor;
var btnback = Color.Transparent; var btnback = Color.Transparent;
var fStyle = FlatStyle.System;
var panelC = SystemColors.Control;
var dropdwn = SystemColors.Control;
var dropdwntxt = form.ForeColor;
if (theme is VS2015DarkTheme) if (theme is VS2015DarkTheme)
{ {
@ -285,6 +291,17 @@ namespace CodeWalker
disback = form.BackColor;// Color.FromArgb(32,32,32); disback = form.BackColor;// Color.FromArgb(32,32,32);
disfore = Color.DarkGray; disfore = Color.DarkGray;
btnback = form.BackColor; btnback = form.BackColor;
fStyle = FlatStyle.Flat;
panelC = form.BackColor;
dropdwn = form.BackColor;
dropdwntxt = form.ForeColor;
}
if (theme is VS2015BlueTheme)
{
panelC = theme.ColorPalette.MainWindowActive.Background;
dropdwn = panelC;
dropdwntxt = Color.White;
} }
var allcontrols = new List<Control>(); var allcontrols = new List<Control>();
@ -316,7 +333,7 @@ namespace CodeWalker
else if ((c is Button) || (c is GroupBox)) else if ((c is Button) || (c is GroupBox))
{ {
c.ForeColor = form.ForeColor; c.ForeColor = form.ForeColor;
c.BackColor = btnback; c.BackColor = btnback;
} }
else if (c is TreeView) else if (c is TreeView)
{ {
@ -324,7 +341,67 @@ namespace CodeWalker
c.BackColor = wndback; c.BackColor = wndback;
(c as TreeView).LineColor = form.ForeColor; (c as TreeView).LineColor = form.ForeColor;
} }
else if (c is Panel)
{
c.BackColor = panelC;
}
else if (c is TrackBar)
{
c.BackColor = form.BackColor;
}
else if (c is ReadOnlyPropertyGrid)
{
var rpd = (ReadOnlyPropertyGrid)c;
rpd.ViewBackColor = txtback;
rpd.ViewForeColor = form.ForeColor;
}
else if (c is PropertyGridFix)
{
var rpd = (PropertyGridFix)c;
rpd.ViewBackColor = form.BackColor;
rpd.ViewForeColor = form.ForeColor;
}
else if (c is ComboBox)
{
var cb = (ComboBox)c;
cb.BackColor = dropdwn;
cb.FlatStyle = fStyle;
cb.ForeColor = dropdwntxt;
}
else if (c is ContextMenuStrip)
{
c.BackColor = form.BackColor;
c.ForeColor = form.ForeColor;
}
else if (c is StatusStrip)
{
var ss = (StatusStrip)c;
VisualStudioToolStripExtender ve = new VisualStudioToolStripExtender();
var version = VisualStudioToolStripExtender.VsVersion.Vs2015;
ve.SetStyle(ss, version, theme);
}
else if (c is MenuStrip)
{
var ms = (MenuStrip)c;
VisualStudioToolStripExtender ve = new VisualStudioToolStripExtender();
var version = VisualStudioToolStripExtender.VsVersion.Vs2015;
ve.SetStyle(ms, version, theme);
}
else if (c is ToolStrip)
{
var ts = (ToolStrip)c;
VisualStudioToolStripExtender ve = new VisualStudioToolStripExtender();
var version = VisualStudioToolStripExtender.VsVersion.Vs2015;
ve.SetStyle(ts, version, theme);
}
else if (c is ToolStripFix)
{
var tsf = (ToolStripFix)c;
VisualStudioToolStripExtender ve = new VisualStudioToolStripExtender();
var version = VisualStudioToolStripExtender.VsVersion.Vs2015;
ve.SetStyle(tsf, version, theme);
}
} }
} }

View File

@ -364,24 +364,12 @@
<Compile Include="Project\Panels\EditYnvPanel.Designer.cs"> <Compile Include="Project\Panels\EditYnvPanel.Designer.cs">
<DependentUpon>EditYnvPanel.cs</DependentUpon> <DependentUpon>EditYnvPanel.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Project\Panels\EditYnvPointPanel.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Project\Panels\EditYnvPointPanel.Designer.cs">
<DependentUpon>EditYnvPointPanel.cs</DependentUpon>
</Compile>
<Compile Include="Project\Panels\EditYnvPolyPanel.cs"> <Compile Include="Project\Panels\EditYnvPolyPanel.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Project\Panels\EditYnvPolyPanel.Designer.cs"> <Compile Include="Project\Panels\EditYnvPolyPanel.Designer.cs">
<DependentUpon>EditYnvPolyPanel.cs</DependentUpon> <DependentUpon>EditYnvPolyPanel.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Project\Panels\EditYnvPortalPanel.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Project\Panels\EditYnvPortalPanel.Designer.cs">
<DependentUpon>EditYnvPortalPanel.cs</DependentUpon>
</Compile>
<Compile Include="Project\Panels\EditYtypPanel.cs"> <Compile Include="Project\Panels\EditYtypPanel.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -614,15 +602,9 @@
<EmbeddedResource Include="Project\Panels\EditYnvPanel.resx"> <EmbeddedResource Include="Project\Panels\EditYnvPanel.resx">
<DependentUpon>EditYnvPanel.cs</DependentUpon> <DependentUpon>EditYnvPanel.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Project\Panels\EditYnvPointPanel.resx">
<DependentUpon>EditYnvPointPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Project\Panels\EditYnvPolyPanel.resx"> <EmbeddedResource Include="Project\Panels\EditYnvPolyPanel.resx">
<DependentUpon>EditYnvPolyPanel.cs</DependentUpon> <DependentUpon>EditYnvPolyPanel.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Project\Panels\EditYnvPortalPanel.resx">
<DependentUpon>EditYnvPortalPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Project\Panels\EditYtypPanel.resx"> <EmbeddedResource Include="Project\Panels\EditYtypPanel.resx">
<DependentUpon>EditYtypPanel.cs</DependentUpon> <DependentUpon>EditYtypPanel.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

View File

@ -70,7 +70,6 @@ namespace CodeWalker
} }
Theme = null; Theme = null;
var version = VisualStudioToolStripExtender.VsVersion.Vs2015;
switch (themestr) switch (themestr)
{ {
@ -78,7 +77,7 @@ namespace CodeWalker
case "Windows": case "Windows":
//Theme = new VS2005Theme(); //Theme = new VS2005Theme();
ViewThemeWindowsMenu.Checked = true; ViewThemeWindowsMenu.Checked = true;
version = VisualStudioToolStripExtender.VsVersion.Unknown; var version = VisualStudioToolStripExtender.VsVersion.Unknown;
if (changing) if (changing)
{ {
MessageBox.Show("Please reopen RPF Explorer to change back to Windows theme."); MessageBox.Show("Please reopen RPF Explorer to change back to Windows theme.");
@ -110,10 +109,6 @@ namespace CodeWalker
if (Theme != null) if (Theme != null)
{ {
VSExtender.SetStyle(MainMenu, version, Theme);
VSExtender.SetStyle(MainToolbar, version, Theme);
VSExtender.SetStyle(MainStatusBar, version, Theme);
FormTheme.SetTheme(this, Theme); FormTheme.SetTheme(this, Theme);
MainSplitContainer.BackColor = Theme.ColorPalette.MainWindowActive.Background; MainSplitContainer.BackColor = Theme.ColorPalette.MainWindowActive.Background;
@ -2071,7 +2066,7 @@ namespace CodeWalker
if (CurrentFolder == null) return;//shouldn't happen if (CurrentFolder == null) return;//shouldn't happen
if (CurrentFolder?.IsSearchResults ?? false) return; if (CurrentFolder?.IsSearchResults ?? false) return;
string fname = Prompt.ShowDialog(this, "Enter a name for the new folder:", "Create folder", "folder"); string fname = Prompt.ShowDialog(this, "Enter a name for the new folder:", "Create folder", Theme, "folder");
if (string.IsNullOrEmpty(fname)) if (string.IsNullOrEmpty(fname))
{ {
return;//no name was provided. return;//no name was provided.
@ -2128,7 +2123,7 @@ namespace CodeWalker
if (CurrentFolder == null) return;//shouldn't happen if (CurrentFolder == null) return;//shouldn't happen
if (CurrentFolder?.IsSearchResults ?? false) return; if (CurrentFolder?.IsSearchResults ?? false) return;
string fname = Prompt.ShowDialog(this, "Enter a name for the new archive:", "Create RPF7 archive", "new"); string fname = Prompt.ShowDialog(this, "Enter a name for the new archive:", "Create RPF7 archive", Theme, "new");
if (string.IsNullOrEmpty(fname)) if (string.IsNullOrEmpty(fname))
{ {
return;//no name was provided. return;//no name was provided.
@ -2466,7 +2461,7 @@ namespace CodeWalker
if ((CurrentFiles != null) && (CurrentFiles.Count > idx)) if ((CurrentFiles != null) && (CurrentFiles.Count > idx))
{ {
var item = CurrentFiles[idx]; var item = CurrentFiles[idx];
string newname = Prompt.ShowDialog(this, "Enter the new name for this item:", "Rename item", item.Name); string newname = Prompt.ShowDialog(this, "Enter the new name for this item:", "Rename item", Theme, item.Name);
if (!string.IsNullOrEmpty(newname)) if (!string.IsNullOrEmpty(newname))
{ {
RenameItem(item, newname); RenameItem(item, newname);

View File

@ -41,13 +41,13 @@
this.YnvPolyCountLabel = new System.Windows.Forms.Label(); this.YnvPolyCountLabel = new System.Windows.Forms.Label();
this.YnvPortalCountLabel = new System.Windows.Forms.Label(); this.YnvPortalCountLabel = new System.Windows.Forms.Label();
this.YnvPortalLinkCountLabel = new System.Windows.Forms.Label(); this.YnvPortalLinkCountLabel = new System.Windows.Forms.Label();
this.YnvPointCountLabel = new System.Windows.Forms.Label(); this.YnvSectorUnkCountLabel = new System.Windows.Forms.Label();
this.YnvByteCountLabel = new System.Windows.Forms.Label(); this.YnvByteCountLabel = new System.Windows.Forms.Label();
this.YnvFlagsGroupBox = new System.Windows.Forms.GroupBox(); this.YnvFlagsGroupBox = new System.Windows.Forms.GroupBox();
this.YnvFlagsUnknownCheckBox = new System.Windows.Forms.CheckBox();
this.YnvFlagsVehicleCheckBox = new System.Windows.Forms.CheckBox();
this.YnvFlagsPortalsCheckBox = new System.Windows.Forms.CheckBox();
this.YnvFlagsVerticesCheckBox = new System.Windows.Forms.CheckBox(); this.YnvFlagsVerticesCheckBox = new System.Windows.Forms.CheckBox();
this.YnvFlagsPortalsCheckBox = new System.Windows.Forms.CheckBox();
this.YnvFlagsVehicleCheckBox = new System.Windows.Forms.CheckBox();
this.YnvFlagsUnknownCheckBox = new System.Windows.Forms.CheckBox();
this.YnvVersionUnkHashTextBox = new System.Windows.Forms.TextBox(); this.YnvVersionUnkHashTextBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
@ -177,14 +177,14 @@
this.YnvPortalLinkCountLabel.TabIndex = 42; this.YnvPortalLinkCountLabel.TabIndex = 42;
this.YnvPortalLinkCountLabel.Text = "Portal link count: 0"; this.YnvPortalLinkCountLabel.Text = "Portal link count: 0";
// //
// YnvPointCountLabel // YnvSectorUnkCountLabel
// //
this.YnvPointCountLabel.AutoSize = true; this.YnvSectorUnkCountLabel.AutoSize = true;
this.YnvPointCountLabel.Location = new System.Drawing.Point(358, 127); this.YnvSectorUnkCountLabel.Location = new System.Drawing.Point(358, 127);
this.YnvPointCountLabel.Name = "YnvPointCountLabel"; this.YnvSectorUnkCountLabel.Name = "YnvSectorUnkCountLabel";
this.YnvPointCountLabel.Size = new System.Drawing.Size(73, 13); this.YnvSectorUnkCountLabel.Size = new System.Drawing.Size(101, 13);
this.YnvPointCountLabel.TabIndex = 43; this.YnvSectorUnkCountLabel.TabIndex = 43;
this.YnvPointCountLabel.Text = "Point count: 0"; this.YnvSectorUnkCountLabel.Text = "Sector unk count: 0";
// //
// YnvByteCountLabel // YnvByteCountLabel
// //
@ -208,27 +208,16 @@
this.YnvFlagsGroupBox.TabStop = false; this.YnvFlagsGroupBox.TabStop = false;
this.YnvFlagsGroupBox.Text = "Content flags"; this.YnvFlagsGroupBox.Text = "Content flags";
// //
// YnvFlagsUnknownCheckBox // YnvFlagsVerticesCheckBox
// //
this.YnvFlagsUnknownCheckBox.AutoSize = true; this.YnvFlagsVerticesCheckBox.AutoSize = true;
this.YnvFlagsUnknownCheckBox.Location = new System.Drawing.Point(12, 88); this.YnvFlagsVerticesCheckBox.Location = new System.Drawing.Point(12, 19);
this.YnvFlagsUnknownCheckBox.Name = "YnvFlagsUnknownCheckBox"; this.YnvFlagsVerticesCheckBox.Name = "YnvFlagsVerticesCheckBox";
this.YnvFlagsUnknownCheckBox.Size = new System.Drawing.Size(78, 17); this.YnvFlagsVerticesCheckBox.Size = new System.Drawing.Size(64, 17);
this.YnvFlagsUnknownCheckBox.TabIndex = 3; this.YnvFlagsVerticesCheckBox.TabIndex = 0;
this.YnvFlagsUnknownCheckBox.Text = "[Unknown]"; this.YnvFlagsVerticesCheckBox.Text = "Vertices";
this.YnvFlagsUnknownCheckBox.UseVisualStyleBackColor = true; this.YnvFlagsVerticesCheckBox.UseVisualStyleBackColor = true;
this.YnvFlagsUnknownCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsUnknownCheckBox_CheckedChanged); this.YnvFlagsVerticesCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsVerticesCheckBox_CheckedChanged);
//
// YnvFlagsVehicleCheckBox
//
this.YnvFlagsVehicleCheckBox.AutoSize = true;
this.YnvFlagsVehicleCheckBox.Location = new System.Drawing.Point(12, 65);
this.YnvFlagsVehicleCheckBox.Name = "YnvFlagsVehicleCheckBox";
this.YnvFlagsVehicleCheckBox.Size = new System.Drawing.Size(61, 17);
this.YnvFlagsVehicleCheckBox.TabIndex = 2;
this.YnvFlagsVehicleCheckBox.Text = "Vehicle";
this.YnvFlagsVehicleCheckBox.UseVisualStyleBackColor = true;
this.YnvFlagsVehicleCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsVehicleCheckBox_CheckedChanged);
// //
// YnvFlagsPortalsCheckBox // YnvFlagsPortalsCheckBox
// //
@ -241,16 +230,27 @@
this.YnvFlagsPortalsCheckBox.UseVisualStyleBackColor = true; this.YnvFlagsPortalsCheckBox.UseVisualStyleBackColor = true;
this.YnvFlagsPortalsCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsPortalsCheckBox_CheckedChanged); this.YnvFlagsPortalsCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsPortalsCheckBox_CheckedChanged);
// //
// YnvFlagsVerticesCheckBox // YnvFlagsVehicleCheckBox
// //
this.YnvFlagsVerticesCheckBox.AutoSize = true; this.YnvFlagsVehicleCheckBox.AutoSize = true;
this.YnvFlagsVerticesCheckBox.Location = new System.Drawing.Point(12, 19); this.YnvFlagsVehicleCheckBox.Location = new System.Drawing.Point(12, 65);
this.YnvFlagsVerticesCheckBox.Name = "YnvFlagsVerticesCheckBox"; this.YnvFlagsVehicleCheckBox.Name = "YnvFlagsVehicleCheckBox";
this.YnvFlagsVerticesCheckBox.Size = new System.Drawing.Size(64, 17); this.YnvFlagsVehicleCheckBox.Size = new System.Drawing.Size(61, 17);
this.YnvFlagsVerticesCheckBox.TabIndex = 0; this.YnvFlagsVehicleCheckBox.TabIndex = 2;
this.YnvFlagsVerticesCheckBox.Text = "Vertices"; this.YnvFlagsVehicleCheckBox.Text = "Vehicle";
this.YnvFlagsVerticesCheckBox.UseVisualStyleBackColor = true; this.YnvFlagsVehicleCheckBox.UseVisualStyleBackColor = true;
this.YnvFlagsVerticesCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsVerticesCheckBox_CheckedChanged); this.YnvFlagsVehicleCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsVehicleCheckBox_CheckedChanged);
//
// YnvFlagsUnknownCheckBox
//
this.YnvFlagsUnknownCheckBox.AutoSize = true;
this.YnvFlagsUnknownCheckBox.Location = new System.Drawing.Point(12, 88);
this.YnvFlagsUnknownCheckBox.Name = "YnvFlagsUnknownCheckBox";
this.YnvFlagsUnknownCheckBox.Size = new System.Drawing.Size(78, 17);
this.YnvFlagsUnknownCheckBox.TabIndex = 3;
this.YnvFlagsUnknownCheckBox.Text = "[Unknown]";
this.YnvFlagsUnknownCheckBox.UseVisualStyleBackColor = true;
this.YnvFlagsUnknownCheckBox.CheckedChanged += new System.EventHandler(this.YnvFlagsUnknownCheckBox_CheckedChanged);
// //
// YnvVersionUnkHashTextBox // YnvVersionUnkHashTextBox
// //
@ -357,7 +357,7 @@
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.YnvFlagsGroupBox); this.Controls.Add(this.YnvFlagsGroupBox);
this.Controls.Add(this.YnvByteCountLabel); this.Controls.Add(this.YnvByteCountLabel);
this.Controls.Add(this.YnvPointCountLabel); this.Controls.Add(this.YnvSectorUnkCountLabel);
this.Controls.Add(this.YnvPortalLinkCountLabel); this.Controls.Add(this.YnvPortalLinkCountLabel);
this.Controls.Add(this.YnvPortalCountLabel); this.Controls.Add(this.YnvPortalCountLabel);
this.Controls.Add(this.YnvPolyCountLabel); this.Controls.Add(this.YnvPolyCountLabel);
@ -396,7 +396,7 @@
private System.Windows.Forms.Label YnvPolyCountLabel; private System.Windows.Forms.Label YnvPolyCountLabel;
private System.Windows.Forms.Label YnvPortalCountLabel; private System.Windows.Forms.Label YnvPortalCountLabel;
private System.Windows.Forms.Label YnvPortalLinkCountLabel; private System.Windows.Forms.Label YnvPortalLinkCountLabel;
private System.Windows.Forms.Label YnvPointCountLabel; private System.Windows.Forms.Label YnvSectorUnkCountLabel;
private System.Windows.Forms.Label YnvByteCountLabel; private System.Windows.Forms.Label YnvByteCountLabel;
private System.Windows.Forms.GroupBox YnvFlagsGroupBox; private System.Windows.Forms.GroupBox YnvFlagsGroupBox;
private System.Windows.Forms.CheckBox YnvFlagsUnknownCheckBox; private System.Windows.Forms.CheckBox YnvFlagsUnknownCheckBox;

View File

@ -72,7 +72,7 @@ namespace CodeWalker.Project.Panels
YnvPolyCountLabel.Text = "Poly count: -"; YnvPolyCountLabel.Text = "Poly count: -";
YnvPortalCountLabel.Text = "Portal count: -"; YnvPortalCountLabel.Text = "Portal count: -";
YnvPortalLinkCountLabel.Text = "Portal link count: -"; YnvPortalLinkCountLabel.Text = "Portal link count: -";
YnvPointCountLabel.Text = "Sector unk count: -"; YnvSectorUnkCountLabel.Text = "Sector unk count: -";
YnvByteCountLabel.Text = "Byte count: -"; YnvByteCountLabel.Text = "Byte count: -";
YnvVersionUnkHashTextBox.Text = string.Empty; YnvVersionUnkHashTextBox.Text = string.Empty;
} }
@ -95,7 +95,7 @@ namespace CodeWalker.Project.Panels
YnvPolyCountLabel.Text = "Poly count: " + nv.PolysCount.ToString(); YnvPolyCountLabel.Text = "Poly count: " + nv.PolysCount.ToString();
YnvPortalCountLabel.Text = "Portal count: " + nv.PortalsCount.ToString(); YnvPortalCountLabel.Text = "Portal count: " + nv.PortalsCount.ToString();
YnvPortalLinkCountLabel.Text = "Portal link count: " + nv.PortalLinksCount.ToString(); YnvPortalLinkCountLabel.Text = "Portal link count: " + nv.PortalLinksCount.ToString();
YnvPointCountLabel.Text = "Point count: " + nv.PointsCount.ToString(); YnvSectorUnkCountLabel.Text = "Sector unk count: " + nv.SectorUnkCount.ToString();
YnvByteCountLabel.Text = "Byte count: " + nv.TotalBytes.ToString(); YnvByteCountLabel.Text = "Byte count: " + nv.TotalBytes.ToString();
YnvVersionUnkHashTextBox.Text = nv.VersionUnk2.ToString(); YnvVersionUnkHashTextBox.Text = nv.VersionUnk2.ToString();
YnvAdjAreaIDsTextBox.Text = GetAdjAreaIDsString(nv.AdjAreaIDs.Values); YnvAdjAreaIDsTextBox.Text = GetAdjAreaIDsString(nv.AdjAreaIDs.Values);

View File

@ -1,174 +0,0 @@
namespace CodeWalker.Project.Panels
{
partial class EditYnvPointPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditYnvPointPanel));
this.DeletePointButton = new System.Windows.Forms.Button();
this.AddToProjectButton = new System.Windows.Forms.Button();
this.YnvPointGoToButton = new System.Windows.Forms.Button();
this.YnvPointPositionTextBox = new System.Windows.Forms.TextBox();
this.label55 = new System.Windows.Forms.Label();
this.YnvPointTypeUpDown = new System.Windows.Forms.NumericUpDown();
this.label49 = new System.Windows.Forms.Label();
this.YnvPointAngleUpDown = new System.Windows.Forms.NumericUpDown();
this.label1 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.YnvPointTypeUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.YnvPointAngleUpDown)).BeginInit();
this.SuspendLayout();
//
// DeletePointButton
//
this.DeletePointButton.Enabled = false;
this.DeletePointButton.Location = new System.Drawing.Point(120, 119);
this.DeletePointButton.Name = "DeletePointButton";
this.DeletePointButton.Size = new System.Drawing.Size(90, 23);
this.DeletePointButton.TabIndex = 8;
this.DeletePointButton.Text = "Delete Point";
this.DeletePointButton.UseVisualStyleBackColor = true;
this.DeletePointButton.Click += new System.EventHandler(this.DeletePointButton_Click);
//
// AddToProjectButton
//
this.AddToProjectButton.Enabled = false;
this.AddToProjectButton.Location = new System.Drawing.Point(24, 119);
this.AddToProjectButton.Name = "AddToProjectButton";
this.AddToProjectButton.Size = new System.Drawing.Size(90, 23);
this.AddToProjectButton.TabIndex = 7;
this.AddToProjectButton.Text = "Add to Project";
this.AddToProjectButton.UseVisualStyleBackColor = true;
this.AddToProjectButton.Click += new System.EventHandler(this.AddToProjectButton_Click);
//
// YnvPointGoToButton
//
this.YnvPointGoToButton.Location = new System.Drawing.Point(280, 10);
this.YnvPointGoToButton.Name = "YnvPointGoToButton";
this.YnvPointGoToButton.Size = new System.Drawing.Size(68, 23);
this.YnvPointGoToButton.TabIndex = 2;
this.YnvPointGoToButton.Text = "Go to";
this.YnvPointGoToButton.UseVisualStyleBackColor = true;
this.YnvPointGoToButton.Click += new System.EventHandler(this.YnvPointGoToButton_Click);
//
// YnvPointPositionTextBox
//
this.YnvPointPositionTextBox.Location = new System.Drawing.Point(74, 12);
this.YnvPointPositionTextBox.Name = "YnvPointPositionTextBox";
this.YnvPointPositionTextBox.Size = new System.Drawing.Size(200, 20);
this.YnvPointPositionTextBox.TabIndex = 1;
this.YnvPointPositionTextBox.TextChanged += new System.EventHandler(this.YnvPointPositionTextBox_TextChanged);
//
// label55
//
this.label55.AutoSize = true;
this.label55.Location = new System.Drawing.Point(21, 15);
this.label55.Name = "label55";
this.label55.Size = new System.Drawing.Size(47, 13);
this.label55.TabIndex = 0;
this.label55.Text = "Position:";
//
// YnvPointTypeUpDown
//
this.YnvPointTypeUpDown.Location = new System.Drawing.Point(74, 64);
this.YnvPointTypeUpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.YnvPointTypeUpDown.Name = "YnvPointTypeUpDown";
this.YnvPointTypeUpDown.Size = new System.Drawing.Size(74, 20);
this.YnvPointTypeUpDown.TabIndex = 6;
this.YnvPointTypeUpDown.ValueChanged += new System.EventHandler(this.YnvPointTypeUpDown_ValueChanged);
//
// label49
//
this.label49.AutoSize = true;
this.label49.Location = new System.Drawing.Point(34, 66);
this.label49.Name = "label49";
this.label49.Size = new System.Drawing.Size(34, 13);
this.label49.TabIndex = 5;
this.label49.Text = "Type:";
//
// YnvPointAngleUpDown
//
this.YnvPointAngleUpDown.Location = new System.Drawing.Point(74, 38);
this.YnvPointAngleUpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.YnvPointAngleUpDown.Name = "YnvPointAngleUpDown";
this.YnvPointAngleUpDown.Size = new System.Drawing.Size(74, 20);
this.YnvPointAngleUpDown.TabIndex = 4;
this.YnvPointAngleUpDown.ValueChanged += new System.EventHandler(this.YnvPointAngleUpDown_ValueChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(18, 40);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(50, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Rotation:";
//
// EditYnvPointPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(434, 243);
this.Controls.Add(this.YnvPointAngleUpDown);
this.Controls.Add(this.label1);
this.Controls.Add(this.YnvPointTypeUpDown);
this.Controls.Add(this.label49);
this.Controls.Add(this.DeletePointButton);
this.Controls.Add(this.AddToProjectButton);
this.Controls.Add(this.YnvPointGoToButton);
this.Controls.Add(this.YnvPointPositionTextBox);
this.Controls.Add(this.label55);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "EditYnvPointPanel";
this.Text = "Edit Ynv Point";
((System.ComponentModel.ISupportInitialize)(this.YnvPointTypeUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.YnvPointAngleUpDown)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button DeletePointButton;
private System.Windows.Forms.Button AddToProjectButton;
private System.Windows.Forms.Button YnvPointGoToButton;
private System.Windows.Forms.TextBox YnvPointPositionTextBox;
private System.Windows.Forms.Label label55;
private System.Windows.Forms.NumericUpDown YnvPointTypeUpDown;
private System.Windows.Forms.Label label49;
private System.Windows.Forms.NumericUpDown YnvPointAngleUpDown;
private System.Windows.Forms.Label label1;
}
}

View File

@ -1,150 +0,0 @@
using CodeWalker.GameFiles;
using SharpDX;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CodeWalker.Project.Panels
{
public partial class EditYnvPointPanel : ProjectPanel
{
public ProjectForm ProjectForm;
public YnvPoint YnvPoint { get; set; }
private bool populatingui = false;
public EditYnvPointPanel(ProjectForm projectForm)
{
ProjectForm = projectForm;
InitializeComponent();
}
public void SetYnvPoint(YnvPoint ynvPoint)
{
YnvPoint = ynvPoint;
Tag = ynvPoint;
UpdateFormTitle();
UpdateYnvPointUI();
}
private void UpdateFormTitle()
{
Text = "Nav Point " + YnvPoint.Index.ToString();
}
public void UpdateYnvPointUI()
{
if (YnvPoint == null)
{
////YnvPointPanel.Enabled = false;
DeletePointButton.Enabled = false;
AddToProjectButton.Enabled = false;
YnvPointPositionTextBox.Text = string.Empty;
YnvPointAngleUpDown.Value = 0;
YnvPointTypeUpDown.Value = 0;
}
else
{
populatingui = true;
////YnvPortalPanel.Enabled = true;
DeletePointButton.Enabled = ProjectForm.YnvExistsInProject(YnvPoint.Ynv);
AddToProjectButton.Enabled = !DeletePointButton.Enabled;
YnvPointPositionTextBox.Text = FloatUtil.GetVector3String(YnvPoint.Position);
YnvPointAngleUpDown.Value = YnvPoint.Angle;
YnvPointTypeUpDown.Value = YnvPoint.Type;
populatingui = false;
}
}
private void YnvPointPositionTextBox_TextChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPoint == null) return;
Vector3 v = FloatUtil.ParseVector3String(YnvPointPositionTextBox.Text);
bool change = false;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPoint.Position != v)
{
YnvPoint.SetPosition(v);
ProjectForm.SetYnvHasChanged(true);
change = true;
}
}
if (change)
{
if (ProjectForm.WorldForm != null)
{
ProjectForm.WorldForm.SetWidgetPosition(YnvPoint.Position);
ProjectForm.WorldForm.UpdateNavPointGraphics(YnvPoint, false);
}
}
}
private void YnvPointAngleUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPoint == null) return;
byte ang = (byte)YnvPointAngleUpDown.Value;
bool change = false;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPoint.Angle != ang)
{
YnvPoint.Angle = ang;
ProjectForm.SetYnvHasChanged(true);
change = true;
}
}
if (change)
{
if (ProjectForm.WorldForm != null)
{
ProjectForm.WorldForm.SetWidgetRotation(YnvPoint.Orientation);
//ProjectForm.WorldForm.UpdateNavPointGraphics(YnvPoint, false);
}
}
}
private void YnvPointTypeUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPoint == null) return;
byte typ = (byte)YnvPointTypeUpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPoint.Type != typ)
{
YnvPoint.Type = typ;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void YnvPointGoToButton_Click(object sender, EventArgs e)
{
if (YnvPoint == null) return;
if (ProjectForm.WorldForm == null) return;
ProjectForm.WorldForm.GoToPosition(YnvPoint.Position);
}
private void AddToProjectButton_Click(object sender, EventArgs e)
{
if (YnvPoint == null) return;
ProjectForm.SetProjectItem(YnvPoint);
ProjectForm.AddYnvToProject(YnvPoint.Ynv);
}
private void DeletePointButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Delete Point TODO!");
}
}
}

View File

@ -1,409 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6P///ysvjWVqtP///////wAAAAAAAAAAAP////D0/0hPpsDG6////////6y02d7k8////3qAx+/z/f//
/wAAAAAAAAAAAAAAAAAAAP///////////////8zT8V5ns1Rcrdzh9f///////////wAAAAAAAAAAAAAA
AAAAAP////////7+/6ix3nmBxFthtmdwu09WqbC54/v9//r8//j6//39/wAAAAAAAAAAAOjt/H6I0FJc
skpSqHF+wRMahFZhs4iT1AsNc1pgrm52v2RsuO/z/gAAAP////////L2/cLJ7rrD64+V4DY+ozU+mYmU
0X2Hy1hfss7V8urv/PP2/v///wAAAP///+Pp+d/k9////////+Pp/4uR3ysymW14xYOM0fD0/P///+Xq
+ri/6Pj6/wAAAOrv/j5DnbS75P////////////X4/+/0/ubr+/r7/////////9rh+hgZhKGo2QAAAPDz
/eLn+f////j6/2Nqttrg9////+Hn+P3+//3+/1hescLJ6/////L2/eru/AAAAAAAAAAAAP///8rR70tR
p/3+//v8/zY6jNPY7////09WqWpwu////wAAAAAAAAAAAAAAAAAAAAAAAPb4/vr7//////v8/5Wd1eHm
+P////v8//T3/wAAAAAAAAAAAAAAAP//AAD8PwAA/D8AAPwDAACAAwAAgAMAAIAHAADABwAAwAEAAMAB
AAAAAQAAAAEAAAABAAAAAQAAwAcAAOAPAAAoAAAAQAAAAIAAAAABABgAAAAAAAAwAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//f7//P3//P3//P3/
/f7//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//P3/
+fv/+fv/+Pr/+fv/+vv//P3//v//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/f7/+fr/8/b/7PL/5+3/6e/+9Pf/+vv//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/P3/9/r/6O7/cXe1UVaet7z17fL/+Pr//f3/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/z/9Pj/4Oj/NzyCUlOd2dz/6O//9Pf//P3/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+vv/8vb/2+P9X2OmREGLnqPd
4+v/8vb/+/z/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+vv/8fb/
1N35bXK1JSRtbHGz5O7/8fX/+/z/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA+vv/8PX/3Ob/U1eaDwtXjZLT4+z/8fX/+/z/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA+vv/8fb/2eP+MjR6AAA+c3i34Or/8fX/+/z/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+vv/8vb/1d/7MS91AAA1UFSS4On/8vb/+/z/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
/v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//P3/+vz/+fv/+Pr/+Pr/+vv//f3//v//AAAAAAAAAAAAAAAA
/v//+fv/9Pf/2+L/SVGtAABsLTaZytL58fX/9/n//f7/AAAAAAAAAAAAAAAA/v7/+/z/9/n/9fj/9vn/
9fj/9vj/+vz//f7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//f7//f3//f3//f3//v7//v//AAAA
AAAAAAAAAAAAAAAAAAAA+/z/9vn/6e//mZ7gTVarr7bp6/H/9fj/+vv//v7/AAAAAAAAAAAAAAAAAAAA
/v7//f7/+/z/+/z/+/z//P3//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f3/+Pr/9fj/6e7/4+n/8fb/9Pf/+Pr//f3/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//P3/+fv/+fv/+vv/+Pr/+vv/
/P3//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//f7/
/f3//P3//f7//v7//v//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////
///////4D/////////AH////////8Af////////wB/////////AH////////8Af////////wB///////
//AH////////8Af////////wB/////////AH////////8AfwP//////wB8Af//+Af/AHgB///wA/8AcA
H///AB/wBgAf//8AD/AGAB///wAH8AYAH///AAPwBAAf//8AA/AEAD///wAD8AQAP///AAPwBAB///+A
A/AEAP///8AD4AAA////4AcAAAH////wDgAAAf/////8AAAH//////gAAAf/////4AAAAf/////gAAAA
/f//+AAAAAAAD//AAAAAAAAH/4AAAAAAAAf/gAAAAAAAB/+AAAAAAAAH/4AAAAAAAAf/gAAAAAAAB/+A
AAAAAAAP/4AAAAAAAB//wAAAAABAf/4HwAAAAYAf8APAAAADgA/gA+AAAAMAA8AD8AAABwADgAP8AAAf
AAOAA/4AAB8AA4ADAAAAAQADgAIAcA4AgAOABgBwDgBAA4AMAGAMADADwDwAYAwAOAfg+ABgBAAeH//4
AEAEAB////gAwAYAH///+ADABgAf///4AcAGAB////gBwAcAH///+APAB4A////8B+AHwH//////4A//
///////gD/////////Af//////////////8=
</value>
</data>
</root>

View File

@ -46,14 +46,14 @@
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
this.DeletePolyButton = new System.Windows.Forms.Button(); this.DeletePolyButton = new System.Windows.Forms.Button();
this.AddToProjectButton = new System.Windows.Forms.Button(); this.AddToProjectButton = new System.Windows.Forms.Button();
this.PortalTypeUpDown = new System.Windows.Forms.NumericUpDown(); this.PortalUnkUpDown = new System.Windows.Forms.NumericUpDown();
this.label6 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.AreaIDUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.AreaIDUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PartIDUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PartIDUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PortalIDUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PortalIDUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.UnkXUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.UnkXUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.UnkYUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.UnkYUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PortalTypeUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PortalUnkUpDown)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// AreaIDUpDown // AreaIDUpDown
@ -102,7 +102,7 @@
// //
// PortalIDUpDown // PortalIDUpDown
// //
this.PortalIDUpDown.Location = new System.Drawing.Point(346, 12); this.PortalIDUpDown.Location = new System.Drawing.Point(338, 12);
this.PortalIDUpDown.Maximum = new decimal(new int[] { this.PortalIDUpDown.Maximum = new decimal(new int[] {
65535, 65535,
0, 0,
@ -116,11 +116,11 @@
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(280, 14); this.label2.Location = new System.Drawing.Point(281, 14);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(60, 13); this.label2.Size = new System.Drawing.Size(51, 13);
this.label2.TabIndex = 5; this.label2.TabIndex = 5;
this.label2.Text = "Portal Link:"; this.label2.Text = "Portal ID:";
// //
// FlagsCheckedListBox1 // FlagsCheckedListBox1
// //
@ -273,34 +273,34 @@
this.AddToProjectButton.UseVisualStyleBackColor = true; this.AddToProjectButton.UseVisualStyleBackColor = true;
this.AddToProjectButton.Click += new System.EventHandler(this.AddToProjectButton_Click); this.AddToProjectButton.Click += new System.EventHandler(this.AddToProjectButton_Click);
// //
// PortalTypeUpDown // PortalUnkUpDown
// //
this.PortalTypeUpDown.Location = new System.Drawing.Point(495, 12); this.PortalUnkUpDown.Location = new System.Drawing.Point(495, 12);
this.PortalTypeUpDown.Maximum = new decimal(new int[] { this.PortalUnkUpDown.Maximum = new decimal(new int[] {
15, 15,
0, 0,
0, 0,
0}); 0});
this.PortalTypeUpDown.Name = "PortalTypeUpDown"; this.PortalUnkUpDown.Name = "PortalUnkUpDown";
this.PortalTypeUpDown.Size = new System.Drawing.Size(57, 20); this.PortalUnkUpDown.Size = new System.Drawing.Size(57, 20);
this.PortalTypeUpDown.TabIndex = 8; this.PortalUnkUpDown.TabIndex = 8;
this.PortalTypeUpDown.ValueChanged += new System.EventHandler(this.PortalTypeUpDown_ValueChanged); this.PortalUnkUpDown.ValueChanged += new System.EventHandler(this.PortalUnkUpDown_ValueChanged);
// //
// label6 // label6
// //
this.label6.AutoSize = true; this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(429, 14); this.label6.Location = new System.Drawing.Point(431, 14);
this.label6.Name = "label6"; this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(60, 13); this.label6.Size = new System.Drawing.Size(58, 13);
this.label6.TabIndex = 7; this.label6.TabIndex = 7;
this.label6.Text = "Portal type:"; this.label6.Text = "Portal unk:";
// //
// EditYnvPolyPanel // EditYnvPolyPanel
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(562, 404); this.ClientSize = new System.Drawing.Size(562, 404);
this.Controls.Add(this.PortalTypeUpDown); this.Controls.Add(this.PortalUnkUpDown);
this.Controls.Add(this.label6); this.Controls.Add(this.label6);
this.Controls.Add(this.DeletePolyButton); this.Controls.Add(this.DeletePolyButton);
this.Controls.Add(this.AddToProjectButton); this.Controls.Add(this.AddToProjectButton);
@ -327,7 +327,7 @@
((System.ComponentModel.ISupportInitialize)(this.PortalIDUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PortalIDUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.UnkXUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.UnkXUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.UnkYUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.UnkYUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PortalTypeUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PortalUnkUpDown)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -352,7 +352,7 @@
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button DeletePolyButton; private System.Windows.Forms.Button DeletePolyButton;
private System.Windows.Forms.Button AddToProjectButton; private System.Windows.Forms.Button AddToProjectButton;
private System.Windows.Forms.NumericUpDown PortalTypeUpDown; private System.Windows.Forms.NumericUpDown PortalUnkUpDown;
private System.Windows.Forms.Label label6; private System.Windows.Forms.Label label6;
} }
} }

View File

@ -48,7 +48,7 @@ namespace CodeWalker.Project.Panels
AreaIDUpDown.Value = 0; AreaIDUpDown.Value = 0;
PartIDUpDown.Value = 0; PartIDUpDown.Value = 0;
PortalIDUpDown.Value = 0; PortalIDUpDown.Value = 0;
PortalTypeUpDown.Value = 0; PortalUnkUpDown.Value = 0;
SetCheckedListBoxValues(FlagsCheckedListBox1, 0); SetCheckedListBoxValues(FlagsCheckedListBox1, 0);
SetCheckedListBoxValues(FlagsCheckedListBox2, 0); SetCheckedListBoxValues(FlagsCheckedListBox2, 0);
SetCheckedListBoxValues(FlagsCheckedListBox3, 0); SetCheckedListBoxValues(FlagsCheckedListBox3, 0);
@ -64,8 +64,8 @@ namespace CodeWalker.Project.Panels
AddToProjectButton.Enabled = !DeletePolyButton.Enabled; AddToProjectButton.Enabled = !DeletePolyButton.Enabled;
AreaIDUpDown.Value = YnvPoly.AreaID; AreaIDUpDown.Value = YnvPoly.AreaID;
PartIDUpDown.Value = YnvPoly.PartID; PartIDUpDown.Value = YnvPoly.PartID;
PortalIDUpDown.Value = YnvPoly.PortalLinkID; PortalIDUpDown.Value = YnvPoly.PortalID;
PortalTypeUpDown.Value = YnvPoly.PortalType; PortalUnkUpDown.Value = YnvPoly.PortalUnk;
SetCheckedListBoxValues(FlagsCheckedListBox1, YnvPoly.Flags1); SetCheckedListBoxValues(FlagsCheckedListBox1, YnvPoly.Flags1);
SetCheckedListBoxValues(FlagsCheckedListBox2, YnvPoly.Flags2); SetCheckedListBoxValues(FlagsCheckedListBox2, YnvPoly.Flags2);
SetCheckedListBoxValues(FlagsCheckedListBox3, YnvPoly.Flags3); SetCheckedListBoxValues(FlagsCheckedListBox3, YnvPoly.Flags3);
@ -144,24 +144,24 @@ namespace CodeWalker.Project.Panels
ushort portalid = (ushort)PortalIDUpDown.Value; ushort portalid = (ushort)PortalIDUpDown.Value;
lock (ProjectForm.ProjectSyncRoot) lock (ProjectForm.ProjectSyncRoot)
{ {
if (YnvPoly.PortalLinkID != portalid) if (YnvPoly.PortalID != portalid)
{ {
YnvPoly.PortalLinkID = portalid; YnvPoly.PortalID = portalid;
ProjectForm.SetYnvHasChanged(true); ProjectForm.SetYnvHasChanged(true);
} }
} }
} }
private void PortalTypeUpDown_ValueChanged(object sender, EventArgs e) private void PortalUnkUpDown_ValueChanged(object sender, EventArgs e)
{ {
if (populatingui) return; if (populatingui) return;
if (YnvPoly == null) return; if (YnvPoly == null) return;
byte portalunk = (byte)PortalTypeUpDown.Value; byte portalunk = (byte)PortalUnkUpDown.Value;
lock (ProjectForm.ProjectSyncRoot) lock (ProjectForm.ProjectSyncRoot)
{ {
if (YnvPoly.PortalType != portalunk) if (YnvPoly.PortalUnk != portalunk)
{ {
YnvPoly.PortalType = portalunk; YnvPoly.PortalUnk = portalunk;
ProjectForm.SetYnvHasChanged(true); ProjectForm.SetYnvHasChanged(true);
} }
} }

View File

@ -1,437 +0,0 @@
namespace CodeWalker.Project.Panels
{
partial class EditYnvPortalPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditYnvPortalPanel));
this.AngleUpDown = new System.Windows.Forms.NumericUpDown();
this.label1 = new System.Windows.Forms.Label();
this.TypeUpDown = new System.Windows.Forms.NumericUpDown();
this.label49 = new System.Windows.Forms.Label();
this.DeletePortalButton = new System.Windows.Forms.Button();
this.AddToProjectButton = new System.Windows.Forms.Button();
this.GoToButton = new System.Windows.Forms.Button();
this.PositionFromTextBox = new System.Windows.Forms.TextBox();
this.label55 = new System.Windows.Forms.Label();
this.PositionToTextBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.AreaIDFromUpDown = new System.Windows.Forms.NumericUpDown();
this.label92 = new System.Windows.Forms.Label();
this.AreaIDToUpDown = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label();
this.PolyIDTo1UpDown = new System.Windows.Forms.NumericUpDown();
this.label4 = new System.Windows.Forms.Label();
this.PolyIDFrom1UpDown = new System.Windows.Forms.NumericUpDown();
this.label5 = new System.Windows.Forms.Label();
this.PolyIDTo2UpDown = new System.Windows.Forms.NumericUpDown();
this.label6 = new System.Windows.Forms.Label();
this.PolyIDFrom2UpDown = new System.Windows.Forms.NumericUpDown();
this.label7 = new System.Windows.Forms.Label();
this.Unk2UpDown = new System.Windows.Forms.NumericUpDown();
this.label8 = new System.Windows.Forms.Label();
this.Unk1UpDown = new System.Windows.Forms.NumericUpDown();
this.label9 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.AngleUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.TypeUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.AreaIDFromUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.AreaIDToUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDTo1UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDFrom1UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDTo2UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDFrom2UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk2UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk1UpDown)).BeginInit();
this.SuspendLayout();
//
// AngleUpDown
//
this.AngleUpDown.Location = new System.Drawing.Point(96, 64);
this.AngleUpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.AngleUpDown.Name = "AngleUpDown";
this.AngleUpDown.Size = new System.Drawing.Size(71, 20);
this.AngleUpDown.TabIndex = 13;
this.AngleUpDown.ValueChanged += new System.EventHandler(this.AngleUpDown_ValueChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(40, 66);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(50, 13);
this.label1.TabIndex = 12;
this.label1.Text = "Rotation:";
//
// TypeUpDown
//
this.TypeUpDown.Location = new System.Drawing.Point(256, 64);
this.TypeUpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.TypeUpDown.Name = "TypeUpDown";
this.TypeUpDown.Size = new System.Drawing.Size(71, 20);
this.TypeUpDown.TabIndex = 15;
this.TypeUpDown.ValueChanged += new System.EventHandler(this.TypeUpDown_ValueChanged);
//
// label49
//
this.label49.AutoSize = true;
this.label49.Location = new System.Drawing.Point(216, 66);
this.label49.Name = "label49";
this.label49.Size = new System.Drawing.Size(34, 13);
this.label49.TabIndex = 14;
this.label49.Text = "Type:";
//
// DeletePortalButton
//
this.DeletePortalButton.Enabled = false;
this.DeletePortalButton.Location = new System.Drawing.Point(133, 215);
this.DeletePortalButton.Name = "DeletePortalButton";
this.DeletePortalButton.Size = new System.Drawing.Size(90, 23);
this.DeletePortalButton.TabIndex = 17;
this.DeletePortalButton.Text = "Delete Portal";
this.DeletePortalButton.UseVisualStyleBackColor = true;
this.DeletePortalButton.Click += new System.EventHandler(this.DeletePortalButton_Click);
//
// AddToProjectButton
//
this.AddToProjectButton.Enabled = false;
this.AddToProjectButton.Location = new System.Drawing.Point(37, 215);
this.AddToProjectButton.Name = "AddToProjectButton";
this.AddToProjectButton.Size = new System.Drawing.Size(90, 23);
this.AddToProjectButton.TabIndex = 16;
this.AddToProjectButton.Text = "Add to Project";
this.AddToProjectButton.UseVisualStyleBackColor = true;
this.AddToProjectButton.Click += new System.EventHandler(this.AddToProjectButton_Click);
//
// GoToButton
//
this.GoToButton.Location = new System.Drawing.Point(302, 10);
this.GoToButton.Name = "GoToButton";
this.GoToButton.Size = new System.Drawing.Size(68, 23);
this.GoToButton.TabIndex = 11;
this.GoToButton.Text = "Go to";
this.GoToButton.UseVisualStyleBackColor = true;
this.GoToButton.Click += new System.EventHandler(this.GoToButton_Click);
//
// PositionFromTextBox
//
this.PositionFromTextBox.Location = new System.Drawing.Point(96, 12);
this.PositionFromTextBox.Name = "PositionFromTextBox";
this.PositionFromTextBox.Size = new System.Drawing.Size(200, 20);
this.PositionFromTextBox.TabIndex = 10;
this.PositionFromTextBox.TextChanged += new System.EventHandler(this.PositionFromTextBox_TextChanged);
//
// label55
//
this.label55.AutoSize = true;
this.label55.Location = new System.Drawing.Point(17, 15);
this.label55.Name = "label55";
this.label55.Size = new System.Drawing.Size(73, 13);
this.label55.TabIndex = 9;
this.label55.Text = "From Position:";
//
// PositionToTextBox
//
this.PositionToTextBox.Location = new System.Drawing.Point(96, 38);
this.PositionToTextBox.Name = "PositionToTextBox";
this.PositionToTextBox.Size = new System.Drawing.Size(200, 20);
this.PositionToTextBox.TabIndex = 19;
this.PositionToTextBox.TextChanged += new System.EventHandler(this.PositionToTextBox_TextChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(27, 41);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 18;
this.label2.Text = "To Position:";
//
// AreaIDFromUpDown
//
this.AreaIDFromUpDown.Location = new System.Drawing.Point(96, 90);
this.AreaIDFromUpDown.Maximum = new decimal(new int[] {
16383,
0,
0,
0});
this.AreaIDFromUpDown.Name = "AreaIDFromUpDown";
this.AreaIDFromUpDown.Size = new System.Drawing.Size(71, 20);
this.AreaIDFromUpDown.TabIndex = 21;
this.AreaIDFromUpDown.ValueChanged += new System.EventHandler(this.AreaIDFromUpDown_ValueChanged);
//
// label92
//
this.label92.AutoSize = true;
this.label92.Location = new System.Drawing.Point(18, 92);
this.label92.Name = "label92";
this.label92.Size = new System.Drawing.Size(72, 13);
this.label92.TabIndex = 20;
this.label92.Text = "From Area ID:";
//
// AreaIDToUpDown
//
this.AreaIDToUpDown.Location = new System.Drawing.Point(256, 90);
this.AreaIDToUpDown.Maximum = new decimal(new int[] {
16383,
0,
0,
0});
this.AreaIDToUpDown.Name = "AreaIDToUpDown";
this.AreaIDToUpDown.Size = new System.Drawing.Size(71, 20);
this.AreaIDToUpDown.TabIndex = 23;
this.AreaIDToUpDown.ValueChanged += new System.EventHandler(this.AreaIDToUpDown_ValueChanged);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(188, 92);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(62, 13);
this.label3.TabIndex = 22;
this.label3.Text = "To Area ID:";
//
// PolyIDTo1UpDown
//
this.PolyIDTo1UpDown.Location = new System.Drawing.Point(256, 116);
this.PolyIDTo1UpDown.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.PolyIDTo1UpDown.Name = "PolyIDTo1UpDown";
this.PolyIDTo1UpDown.Size = new System.Drawing.Size(71, 20);
this.PolyIDTo1UpDown.TabIndex = 27;
this.PolyIDTo1UpDown.ValueChanged += new System.EventHandler(this.PolyIDTo1UpDown_ValueChanged);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(181, 118);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(69, 13);
this.label4.TabIndex = 26;
this.label4.Text = "To Poly ID 1:";
//
// PolyIDFrom1UpDown
//
this.PolyIDFrom1UpDown.Location = new System.Drawing.Point(96, 116);
this.PolyIDFrom1UpDown.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.PolyIDFrom1UpDown.Name = "PolyIDFrom1UpDown";
this.PolyIDFrom1UpDown.Size = new System.Drawing.Size(71, 20);
this.PolyIDFrom1UpDown.TabIndex = 25;
this.PolyIDFrom1UpDown.ValueChanged += new System.EventHandler(this.PolyIDFrom1UpDown_ValueChanged);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(11, 118);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(79, 13);
this.label5.TabIndex = 24;
this.label5.Text = "From Poly ID 1:";
//
// PolyIDTo2UpDown
//
this.PolyIDTo2UpDown.Location = new System.Drawing.Point(256, 142);
this.PolyIDTo2UpDown.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.PolyIDTo2UpDown.Name = "PolyIDTo2UpDown";
this.PolyIDTo2UpDown.Size = new System.Drawing.Size(71, 20);
this.PolyIDTo2UpDown.TabIndex = 31;
this.PolyIDTo2UpDown.ValueChanged += new System.EventHandler(this.PolyIDTo2UpDown_ValueChanged);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(181, 144);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(69, 13);
this.label6.TabIndex = 30;
this.label6.Text = "To Poly ID 2:";
//
// PolyIDFrom2UpDown
//
this.PolyIDFrom2UpDown.Location = new System.Drawing.Point(96, 142);
this.PolyIDFrom2UpDown.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.PolyIDFrom2UpDown.Name = "PolyIDFrom2UpDown";
this.PolyIDFrom2UpDown.Size = new System.Drawing.Size(71, 20);
this.PolyIDFrom2UpDown.TabIndex = 29;
this.PolyIDFrom2UpDown.ValueChanged += new System.EventHandler(this.PolyIDFrom2UpDown_ValueChanged);
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(11, 144);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(79, 13);
this.label7.TabIndex = 28;
this.label7.Text = "From Poly ID 2:";
//
// Unk2UpDown
//
this.Unk2UpDown.Location = new System.Drawing.Point(256, 168);
this.Unk2UpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.Unk2UpDown.Name = "Unk2UpDown";
this.Unk2UpDown.Size = new System.Drawing.Size(71, 20);
this.Unk2UpDown.TabIndex = 35;
this.Unk2UpDown.ValueChanged += new System.EventHandler(this.Unk2UpDown_ValueChanged);
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(211, 170);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(39, 13);
this.label8.TabIndex = 34;
this.label8.Text = "Unk 2:";
//
// Unk1UpDown
//
this.Unk1UpDown.Location = new System.Drawing.Point(96, 168);
this.Unk1UpDown.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.Unk1UpDown.Name = "Unk1UpDown";
this.Unk1UpDown.Size = new System.Drawing.Size(71, 20);
this.Unk1UpDown.TabIndex = 33;
this.Unk1UpDown.ValueChanged += new System.EventHandler(this.Unk1UpDown_ValueChanged);
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(51, 170);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(39, 13);
this.label9.TabIndex = 32;
this.label9.Text = "Unk 1:";
//
// EditYnvPortalPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(454, 295);
this.Controls.Add(this.Unk2UpDown);
this.Controls.Add(this.label8);
this.Controls.Add(this.Unk1UpDown);
this.Controls.Add(this.label9);
this.Controls.Add(this.PolyIDTo2UpDown);
this.Controls.Add(this.label6);
this.Controls.Add(this.PolyIDFrom2UpDown);
this.Controls.Add(this.label7);
this.Controls.Add(this.PolyIDTo1UpDown);
this.Controls.Add(this.label4);
this.Controls.Add(this.PolyIDFrom1UpDown);
this.Controls.Add(this.label5);
this.Controls.Add(this.AreaIDToUpDown);
this.Controls.Add(this.label3);
this.Controls.Add(this.AreaIDFromUpDown);
this.Controls.Add(this.label92);
this.Controls.Add(this.PositionToTextBox);
this.Controls.Add(this.label2);
this.Controls.Add(this.AngleUpDown);
this.Controls.Add(this.label1);
this.Controls.Add(this.TypeUpDown);
this.Controls.Add(this.label49);
this.Controls.Add(this.DeletePortalButton);
this.Controls.Add(this.AddToProjectButton);
this.Controls.Add(this.GoToButton);
this.Controls.Add(this.PositionFromTextBox);
this.Controls.Add(this.label55);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "EditYnvPortalPanel";
this.Text = "Edit Ynv Portal";
((System.ComponentModel.ISupportInitialize)(this.AngleUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.TypeUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.AreaIDFromUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.AreaIDToUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDTo1UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDFrom1UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDTo2UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PolyIDFrom2UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk2UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk1UpDown)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.NumericUpDown AngleUpDown;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.NumericUpDown TypeUpDown;
private System.Windows.Forms.Label label49;
private System.Windows.Forms.Button DeletePortalButton;
private System.Windows.Forms.Button AddToProjectButton;
private System.Windows.Forms.Button GoToButton;
private System.Windows.Forms.TextBox PositionFromTextBox;
private System.Windows.Forms.Label label55;
private System.Windows.Forms.TextBox PositionToTextBox;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.NumericUpDown AreaIDFromUpDown;
private System.Windows.Forms.Label label92;
private System.Windows.Forms.NumericUpDown AreaIDToUpDown;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.NumericUpDown PolyIDTo1UpDown;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.NumericUpDown PolyIDFrom1UpDown;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.NumericUpDown PolyIDTo2UpDown;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.NumericUpDown PolyIDFrom2UpDown;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.NumericUpDown Unk2UpDown;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.NumericUpDown Unk1UpDown;
private System.Windows.Forms.Label label9;
}
}

View File

@ -1,311 +0,0 @@
using CodeWalker.GameFiles;
using SharpDX;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CodeWalker.Project.Panels
{
public partial class EditYnvPortalPanel : ProjectPanel
{
public ProjectForm ProjectForm;
public YnvPortal YnvPortal { get; set; }
private bool populatingui = false;
public EditYnvPortalPanel(ProjectForm projectForm)
{
ProjectForm = projectForm;
InitializeComponent();
}
public void SetYnvPortal(YnvPortal ynvPortal)
{
YnvPortal = ynvPortal;
Tag = ynvPortal;
UpdateFormTitle();
UpdateYnvPortalUI();
}
private void UpdateFormTitle()
{
Text = "Nav Portal " + YnvPortal.Index.ToString();
}
public void UpdateYnvPortalUI()
{
if (YnvPortal == null)
{
DeletePortalButton.Enabled = false;
AddToProjectButton.Enabled = false;
PositionFromTextBox.Text = string.Empty;
PositionToTextBox.Text = string.Empty;
AngleUpDown.Value = 0;
TypeUpDown.Value = 0;
AreaIDFromUpDown.Value = 0;
AreaIDToUpDown.Value = 0;
PolyIDFrom1UpDown.Value = 0;
PolyIDTo1UpDown.Value = 0;
PolyIDFrom2UpDown.Value = 0;
PolyIDTo2UpDown.Value = 0;
Unk1UpDown.Value = 0;
Unk2UpDown.Value = 0;
}
else
{
populatingui = true;
DeletePortalButton.Enabled = ProjectForm.YnvExistsInProject(YnvPortal.Ynv);
AddToProjectButton.Enabled = !DeletePortalButton.Enabled;
PositionFromTextBox.Text = FloatUtil.GetVector3String(YnvPortal.PositionFrom);
PositionToTextBox.Text = FloatUtil.GetVector3String(YnvPortal.PositionTo);
AngleUpDown.Value = YnvPortal.Angle;
TypeUpDown.Value = YnvPortal.Type;
AreaIDFromUpDown.Value = YnvPortal.AreaIDFrom;
AreaIDToUpDown.Value = YnvPortal.AreaIDTo;
PolyIDFrom1UpDown.Value = YnvPortal.PolyIDFrom1;
PolyIDTo1UpDown.Value = YnvPortal.PolyIDTo1;
PolyIDFrom2UpDown.Value = YnvPortal.PolyIDFrom2;
PolyIDTo2UpDown.Value = YnvPortal.PolyIDTo2;
Unk1UpDown.Value = YnvPortal.Unk1;
Unk2UpDown.Value = YnvPortal.Unk2;
populatingui = false;
}
}
private void PositionFromTextBox_TextChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
Vector3 v = FloatUtil.ParseVector3String(PositionFromTextBox.Text);
bool change = false;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.PositionFrom != v)
{
YnvPortal.PositionFrom = v;
ProjectForm.SetYnvHasChanged(true);
change = true;
}
}
if (change)
{
if (ProjectForm.WorldForm != null)
{
ProjectForm.WorldForm.SetWidgetPosition(YnvPortal.Position);
ProjectForm.WorldForm.UpdateNavPortalGraphics(YnvPortal, false);
}
}
}
private void PositionToTextBox_TextChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
Vector3 v = FloatUtil.ParseVector3String(PositionToTextBox.Text);
bool change = false;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.PositionTo != v)
{
YnvPortal.PositionTo = v;
ProjectForm.SetYnvHasChanged(true);
change = true;
}
}
if (change)
{
if (ProjectForm.WorldForm != null)
{
ProjectForm.WorldForm.SetWidgetPosition(YnvPortal.Position);
ProjectForm.WorldForm.UpdateNavPortalGraphics(YnvPortal, false);
}
}
}
private void AngleUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
byte ang = (byte)AngleUpDown.Value;
bool change = false;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.Angle != ang)
{
YnvPortal.Angle = ang;
ProjectForm.SetYnvHasChanged(true);
change = true;
}
}
if (change)
{
if (ProjectForm.WorldForm != null)
{
ProjectForm.WorldForm.SetWidgetRotation(YnvPortal.Orientation);
//ProjectForm.WorldForm.UpdateNavPortalGraphics(YnvPortal, false);
}
}
}
private void TypeUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
byte typ = (byte)TypeUpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.Type != typ)
{
YnvPortal.Type = typ;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void AreaIDFromUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort id = (ushort)AreaIDFromUpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.AreaIDFrom != id)
{
YnvPortal.AreaIDFrom = id;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void AreaIDToUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort id = (ushort)AreaIDToUpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.AreaIDTo != id)
{
YnvPortal.AreaIDTo = id;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void PolyIDFrom1UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort id = (ushort)PolyIDFrom1UpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.PolyIDFrom1 != id)
{
YnvPortal.PolyIDFrom1 = id;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void PolyIDTo1UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort id = (ushort)PolyIDTo1UpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.PolyIDTo1 != id)
{
YnvPortal.PolyIDTo1 = id;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void PolyIDFrom2UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort id = (ushort)PolyIDFrom2UpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.PolyIDFrom2 != id)
{
YnvPortal.PolyIDFrom2 = id;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void PolyIDTo2UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort id = (ushort)PolyIDTo2UpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.PolyIDTo2 != id)
{
YnvPortal.PolyIDTo2 = id;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void Unk1UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
ushort unk = (ushort)Unk1UpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.Unk1 != unk)
{
YnvPortal.Unk1 = unk;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void Unk2UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (YnvPortal == null) return;
byte unk = (byte)Unk2UpDown.Value;
lock (ProjectForm.ProjectSyncRoot)
{
if (YnvPortal.Unk2 != unk)
{
YnvPortal.Unk2 = unk;
ProjectForm.SetYnvHasChanged(true);
}
}
}
private void GoToButton_Click(object sender, EventArgs e)
{
if (YnvPortal == null) return;
if (ProjectForm.WorldForm == null) return;
ProjectForm.WorldForm.GoToPosition(YnvPortal.Position);
}
private void AddToProjectButton_Click(object sender, EventArgs e)
{
if (YnvPortal == null) return;
ProjectForm.SetProjectItem(YnvPortal);
ProjectForm.AddYnvToProject(YnvPortal.Ynv);
}
private void DeletePortalButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Delete Portal TODO!");
}
}
}

View File

@ -1,409 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6P///ysvjWVqtP///////wAAAAAAAAAAAP////D0/0hPpsDG6////////6y02d7k8////3qAx+/z/f//
/wAAAAAAAAAAAAAAAAAAAP///////////////8zT8V5ns1Rcrdzh9f///////////wAAAAAAAAAAAAAA
AAAAAP////////7+/6ix3nmBxFthtmdwu09WqbC54/v9//r8//j6//39/wAAAAAAAAAAAOjt/H6I0FJc
skpSqHF+wRMahFZhs4iT1AsNc1pgrm52v2RsuO/z/gAAAP////////L2/cLJ7rrD64+V4DY+ozU+mYmU
0X2Hy1hfss7V8urv/PP2/v///wAAAP///+Pp+d/k9////////+Pp/4uR3ysymW14xYOM0fD0/P///+Xq
+ri/6Pj6/wAAAOrv/j5DnbS75P////////////X4/+/0/ubr+/r7/////////9rh+hgZhKGo2QAAAPDz
/eLn+f////j6/2Nqttrg9////+Hn+P3+//3+/1hescLJ6/////L2/eru/AAAAAAAAAAAAP///8rR70tR
p/3+//v8/zY6jNPY7////09WqWpwu////wAAAAAAAAAAAAAAAAAAAAAAAPb4/vr7//////v8/5Wd1eHm
+P////v8//T3/wAAAAAAAAAAAAAAAP//AAD8PwAA/D8AAPwDAACAAwAAgAMAAIAHAADABwAAwAEAAMAB
AAAAAQAAAAEAAAABAAAAAQAAwAcAAOAPAAAoAAAAQAAAAIAAAAABABgAAAAAAAAwAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//f7//P3//P3//P3/
/f7//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//P3/
+fv/+fv/+Pr/+fv/+vv//P3//v//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/f7/+fr/8/b/7PL/5+3/6e/+9Pf/+vv//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/P3/9/r/6O7/cXe1UVaet7z17fL/+Pr//f3/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/z/9Pj/4Oj/NzyCUlOd2dz/6O//9Pf//P3/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+vv/8vb/2+P9X2OmREGLnqPd
4+v/8vb/+/z/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+vv/8fb/
1N35bXK1JSRtbHGz5O7/8fX/+/z/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA+vv/8PX/3Ob/U1eaDwtXjZLT4+z/8fX/+/z/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA+vv/8fb/2eP+MjR6AAA+c3i34Or/8fX/+/z/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+vv/8vb/1d/7MS91AAA1UFSS4On/8vb/+/z/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
/v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//P3/+vz/+fv/+Pr/+Pr/+vv//f3//v//AAAAAAAAAAAAAAAA
/v//+fv/9Pf/2+L/SVGtAABsLTaZytL58fX/9/n//f7/AAAAAAAAAAAAAAAA/v7/+/z/9/n/9fj/9vn/
9fj/9vj/+vz//f7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//f7//f3//f3//f3//v7//v//AAAA
AAAAAAAAAAAAAAAAAAAA+/z/9vn/6e//mZ7gTVarr7bp6/H/9fj/+vv//v7/AAAAAAAAAAAAAAAAAAAA
/v7//f7/+/z/+/z/+/z//P3//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f3/+Pr/9fj/6e7/4+n/8fb/9Pf/+Pr//f3/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//P3/+fv/+fv/+vv/+Pr/+vv/
/P3//v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7//f7/
/f3//P3//f7//v7//v//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////
///////4D/////////AH////////8Af////////wB/////////AH////////8Af////////wB///////
//AH////////8Af////////wB/////////AH////////8AfwP//////wB8Af//+Af/AHgB///wA/8AcA
H///AB/wBgAf//8AD/AGAB///wAH8AYAH///AAPwBAAf//8AA/AEAD///wAD8AQAP///AAPwBAB///+A
A/AEAP///8AD4AAA////4AcAAAH////wDgAAAf/////8AAAH//////gAAAf/////4AAAAf/////gAAAA
/f//+AAAAAAAD//AAAAAAAAH/4AAAAAAAAf/gAAAAAAAB/+AAAAAAAAH/4AAAAAAAAf/gAAAAAAAB/+A
AAAAAAAP/4AAAAAAAB//wAAAAABAf/4HwAAAAYAf8APAAAADgA/gA+AAAAMAA8AD8AAABwADgAP8AAAf
AAOAA/4AAB8AA4ADAAAAAQADgAIAcA4AgAOABgBwDgBAA4AMAGAMADADwDwAYAwAOAfg+ABgBAAeH//4
AEAEAB////gAwAYAH///+ADABgAf///4AcAGAB////gBwAcAH///+APAB4A////8B+AHwH//////4A//
///////gD/////////Af//////////////8=
</value>
</data>
</root>

View File

@ -274,10 +274,6 @@ namespace CodeWalker.Project.Panels
n.Name = "EditPortal"; n.Name = "EditPortal";
n.Tag = ynv; //this tag should get updated with the selected portal! n.Tag = ynv; //this tag should get updated with the selected portal!
n = node.Nodes.Add("Edit Point");
n.Name = "EditPoint";
n.Tag = ynv; //this tag should get updated with the selected point!
} }
private void LoadTrainTrackTreeNodes(TrainTrack track, TreeNode node) private void LoadTrainTrackTreeNodes(TrainTrack track, TreeNode node)
@ -644,36 +640,6 @@ namespace CodeWalker.Project.Panels
//} //}
//return null; //return null;
} }
public TreeNode FindNavPointTreeNode(YnvPoint p)
{
if (p == null) return null;
TreeNode ynvnode = FindYnvTreeNode(p.Ynv);
var pointnode = GetChildTreeNode(ynvnode, "EditPoint");
if (pointnode == null) return null;
pointnode.Tag = p;
return pointnode;
//for (int i = 0; i < pointsnode.Nodes.Count; i++)
//{
// TreeNode pnode = pointsnode.Nodes[i];
// if (pnode.Tag == p) return pnode;
//}
//return null;
}
public TreeNode FindNavPortalTreeNode(YnvPortal p)
{
if (p == null) return null;
TreeNode ynvnode = FindYnvTreeNode(p.Ynv);
var portalnode = GetChildTreeNode(ynvnode, "EditPortal");
if (portalnode == null) return null;
portalnode.Tag = p;
return portalnode;
//for (int i = 0; i < portalsnode.Nodes.Count; i++)
//{
// TreeNode pnode = portalsnode.Nodes[i];
// if (pnode.Tag == p) return pnode;
//}
//return null;
}
public TreeNode FindTrainTrackTreeNode(TrainTrack track) public TreeNode FindTrainTrackTreeNode(TrainTrack track)
{ {
if (ProjectTreeView.Nodes.Count <= 0) return null; if (ProjectTreeView.Nodes.Count <= 0) return null;
@ -803,44 +769,6 @@ namespace CodeWalker.Project.Panels
} }
} }
} }
public void TrySelectNavPointTreeNode(YnvPoint point)
{
TreeNode tnode = FindNavPointTreeNode(point);
if (tnode == null)
{
tnode = FindYnvTreeNode(point?.Ynv);
}
if (tnode != null)
{
if (ProjectTreeView.SelectedNode == tnode)
{
OnItemSelected?.Invoke(point);
}
else
{
ProjectTreeView.SelectedNode = tnode;
}
}
}
public void TrySelectNavPortalTreeNode(YnvPortal portal)
{
TreeNode tnode = FindNavPortalTreeNode(portal);
if (tnode == null)
{
tnode = FindYnvTreeNode(portal?.Ynv);
}
if (tnode != null)
{
if (ProjectTreeView.SelectedNode == tnode)
{
OnItemSelected?.Invoke(portal);
}
else
{
ProjectTreeView.SelectedNode = tnode;
}
}
}
public void TrySelectTrainNodeTreeNode(TrainTrackNode node) public void TrySelectTrainNodeTreeNode(TrainTrackNode node)
{ {
TreeNode tnode = FindTrainNodeTreeNode(node); TreeNode tnode = FindTrainNodeTreeNode(node);

View File

@ -50,8 +50,6 @@ namespace CodeWalker.Project
private YnvFile CurrentYnvFile; private YnvFile CurrentYnvFile;
private YnvPoly CurrentNavPoly; private YnvPoly CurrentNavPoly;
private YnvPoint CurrentNavPoint;
private YnvPortal CurrentNavPortal;
private TrainTrack CurrentTrainTrack; private TrainTrack CurrentTrainTrack;
private TrainTrackNode CurrentTrainNode; private TrainTrackNode CurrentTrainNode;
@ -375,20 +373,6 @@ namespace CodeWalker.Project
(panel) => { panel.SetYnvPoly(CurrentNavPoly); }, //updateFunc (panel) => { panel.SetYnvPoly(CurrentNavPoly); }, //updateFunc
(panel) => { return panel.YnvPoly == CurrentNavPoly; }); //findFunc (panel) => { return panel.YnvPoly == CurrentNavPoly; }); //findFunc
} }
private void ShowEditYnvPointPanel(bool promote)
{
ShowPanel(promote,
() => { return new EditYnvPointPanel(this); }, //createFunc
(panel) => { panel.SetYnvPoint(CurrentNavPoint); }, //updateFunc
(panel) => { return panel.YnvPoint == CurrentNavPoint; }); //findFunc
}
private void ShowEditYnvPortalPanel(bool promote)
{
ShowPanel(promote,
() => { return new EditYnvPortalPanel(this); }, //createFunc
(panel) => { panel.SetYnvPortal(CurrentNavPortal); }, //updateFunc
(panel) => { return panel.YnvPortal == CurrentNavPortal; }); //findFunc
}
private void ShowEditTrainTrackPanel(bool promote) private void ShowEditTrainTrackPanel(bool promote)
{ {
ShowPanel(promote, ShowPanel(promote,
@ -452,14 +436,6 @@ namespace CodeWalker.Project
{ {
ShowEditYnvPolyPanel(promote); ShowEditYnvPolyPanel(promote);
} }
else if (CurrentNavPoint != null)
{
ShowEditYnvPointPanel(promote);
}
else if (CurrentNavPortal != null)
{
ShowEditYnvPortalPanel(promote);
}
else if (CurrentYnvFile != null) else if (CurrentYnvFile != null)
{ {
ShowEditYnvPanel(promote); ShowEditYnvPanel(promote);
@ -509,8 +485,6 @@ namespace CodeWalker.Project
CurrentPathNode = item as YndNode; CurrentPathNode = item as YndNode;
CurrentYnvFile = item as YnvFile; CurrentYnvFile = item as YnvFile;
CurrentNavPoly = item as YnvPoly; CurrentNavPoly = item as YnvPoly;
CurrentNavPoint = item as YnvPoint;
CurrentNavPortal = item as YnvPortal;
CurrentTrainTrack = item as TrainTrack; CurrentTrainTrack = item as TrainTrack;
CurrentTrainNode = item as TrainTrackNode; CurrentTrainNode = item as TrainTrackNode;
CurrentScenario = item as YmtFile; CurrentScenario = item as YmtFile;
@ -537,14 +511,6 @@ namespace CodeWalker.Project
{ {
CurrentYnvFile = CurrentNavPoly.Ynv; CurrentYnvFile = CurrentNavPoly.Ynv;
} }
if (CurrentNavPoint != null)
{
CurrentYnvFile = CurrentNavPoint.Ynv;
}
if (CurrentNavPortal != null)
{
CurrentYnvFile = CurrentNavPortal.Ynv;
}
if (CurrentTrainNode != null) if (CurrentTrainNode != null)
{ {
CurrentTrainTrack = CurrentTrainNode.Track; CurrentTrainTrack = CurrentTrainNode.Track;
@ -2199,30 +2165,6 @@ namespace CodeWalker.Project
return poly == CurrentNavPoly; return poly == CurrentNavPoly;
} }
public void NewNavPoint(YnvPoint copy = null, bool copyposition = false)//TODO!
{
}
public bool DeleteNavPoint()//TODO!
{
return false;
}
public bool IsCurrentNavPoint(YnvPoint point)
{
return point == CurrentNavPoint;
}
public void NewNavPortal(YnvPortal copy = null, bool copyposition = false)//TODO!
{
}
public bool DeleteNavPortal()//TODO!
{
return false;
}
public bool IsCurrentNavPortal(YnvPortal portal)
{
return portal == CurrentNavPortal;
}
public void NewTrainTrack() public void NewTrainTrack()
@ -3817,14 +3759,12 @@ namespace CodeWalker.Project
var pathnode = sel.PathNode; var pathnode = sel.PathNode;
var pathlink = sel.PathLink; var pathlink = sel.PathLink;
var navpoly = sel.NavPoly; var navpoly = sel.NavPoly;
var navpoint = sel.NavPoint;
var navportal = sel.NavPortal;
var trainnode = sel.TrainTrackNode; var trainnode = sel.TrainTrackNode;
var scenariond = sel.ScenarioNode; var scenariond = sel.ScenarioNode;
var scenarioedge = sel.ScenarioEdge; var scenarioedge = sel.ScenarioEdge;
YmapFile ymap = ent?.Ymap ?? cargen?.Ymap ?? grassbatch?.Ymap; YmapFile ymap = ent?.Ymap ?? cargen?.Ymap ?? grassbatch?.Ymap;
YndFile ynd = pathnode?.Ynd; YndFile ynd = pathnode?.Ynd;
YnvFile ynv = navpoly?.Ynv ?? navpoint?.Ynv ?? navportal?.Ynv; YnvFile ynv = navpoly?.Ynv;
TrainTrack traintrack = trainnode?.Track; TrainTrack traintrack = trainnode?.Track;
YmtFile scenario = scenariond?.Ymt ?? scenarioedge?.Region?.Ymt; YmtFile scenario = scenariond?.Ymt ?? scenarioedge?.Region?.Ymt;
bool showcurrent = false; bool showcurrent = false;
@ -3853,14 +3793,6 @@ namespace CodeWalker.Project
{ {
ProjectExplorer?.TrySelectNavPolyTreeNode(navpoly); ProjectExplorer?.TrySelectNavPolyTreeNode(navpoly);
} }
if (navpoint != CurrentNavPoint)
{
ProjectExplorer?.TrySelectNavPointTreeNode(navpoint);
}
if (navportal != CurrentNavPortal)
{
ProjectExplorer?.TrySelectNavPortalTreeNode(navportal);
}
} }
else if (TrainTrackExistsInProject(traintrack)) else if (TrainTrackExistsInProject(traintrack))
{ {
@ -3893,8 +3825,6 @@ namespace CodeWalker.Project
CurrentPathLink = pathlink; CurrentPathLink = pathlink;
CurrentYnvFile = ynv; CurrentYnvFile = ynv;
CurrentNavPoly = navpoly; CurrentNavPoly = navpoly;
CurrentNavPoint = navpoint;
CurrentNavPortal = navportal;
CurrentTrainTrack = traintrack; CurrentTrainTrack = traintrack;
CurrentTrainNode = trainnode; CurrentTrainNode = trainnode;
CurrentScenario = scenario; CurrentScenario = scenario;
@ -3933,14 +3863,6 @@ namespace CodeWalker.Project
{ {
OnWorldNavPolyModified(sel.NavPoly); OnWorldNavPolyModified(sel.NavPoly);
} }
else if (sel.NavPoint != null)
{
OnWorldNavPointModified(sel.NavPoint);
}
else if (sel.NavPortal != null)
{
OnWorldNavPortalModified(sel.NavPortal);
}
else if (sel.TrainTrackNode != null) else if (sel.TrainTrackNode != null)
{ {
OnWorldTrainNodeModified(sel.TrainTrackNode); OnWorldTrainNodeModified(sel.TrainTrackNode);
@ -4142,98 +4064,6 @@ namespace CodeWalker.Project
} }
catch { } catch { }
} }
private void OnWorldNavPointModified(YnvPoint point)
{
try
{
if (InvokeRequired)
{
BeginInvoke(new Action(() => { OnWorldNavPointModified(point); }));
}
else
{
if (point?.Ynv == null) return;
if (CurrentProjectFile == null)
{
NewProject();
}
if (!YnvExistsInProject(point.Ynv))
{
point.Ynv.HasChanged = true;
AddYnvToProject(point.Ynv);
ProjectExplorer?.TrySelectNavPointTreeNode(point);
}
if (point != CurrentNavPoint)
{
CurrentNavPoint = point;
ProjectExplorer?.TrySelectNavPointTreeNode(point);
}
if (point == CurrentNavPoint)
{
ShowEditYnvPointPanel(false);
//////UpdateNavPointTreeNode(poly);
if (point.Ynv != null)
{
SetYnvHasChanged(true);
}
}
}
}
catch { }
}
private void OnWorldNavPortalModified(YnvPortal portal)
{
try
{
if (InvokeRequired)
{
BeginInvoke(new Action(() => { OnWorldNavPortalModified(portal); }));
}
else
{
if (portal?.Ynv == null) return;
if (CurrentProjectFile == null)
{
NewProject();
}
if (!YnvExistsInProject(portal.Ynv))
{
portal.Ynv.HasChanged = true;
AddYnvToProject(portal.Ynv);
ProjectExplorer?.TrySelectNavPortalTreeNode(portal);
}
if (portal != CurrentNavPortal)
{
CurrentNavPortal = portal;
ProjectExplorer?.TrySelectNavPortalTreeNode(portal);
}
if (portal == CurrentNavPortal)
{
ShowEditYnvPortalPanel(false);
//////UpdateNavPortalTreeNode(poly);
if (portal.Ynv != null)
{
SetYnvHasChanged(true);
}
}
}
}
catch { }
}
private void OnWorldTrainNodeModified(TrainTrackNode node) private void OnWorldTrainNodeModified(TrainTrackNode node)
{ {
try try

View File

@ -62,7 +62,6 @@ namespace CodeWalker.Project
{ {
Dictionary<YndFile, int> pathYnds = new Dictionary<YndFile, int>(); Dictionary<YndFile, int> pathYnds = new Dictionary<YndFile, int>();
Dictionary<YnvFile, int> navYnvs = new Dictionary<YnvFile, int>();
Dictionary<TrainTrack, int> trainTracks = new Dictionary<TrainTrack, int>(); Dictionary<TrainTrack, int> trainTracks = new Dictionary<TrainTrack, int>();
Dictionary<YmtFile, int> scenarioYmts = new Dictionary<YmtFile, int>(); Dictionary<YmtFile, int> scenarioYmts = new Dictionary<YmtFile, int>();
@ -74,18 +73,6 @@ namespace CodeWalker.Project
{ {
pathYnds[item.PathNode.Ynd] = 1; pathYnds[item.PathNode.Ynd] = 1;
} }
if (item.NavPoly != null)
{
navYnvs[item.NavPoly.Ynv] = 1;
}
if (item.NavPoint != null)
{
navYnvs[item.NavPoint.Ynv] = 1;
}
if (item.NavPortal != null)
{
navYnvs[item.NavPortal.Ynv] = 1;
}
if (item.TrainTrackNode != null) if (item.TrainTrackNode != null)
{ {
trainTracks[item.TrainTrackNode.Track] = 1; trainTracks[item.TrainTrackNode.Track] = 1;
@ -101,10 +88,6 @@ namespace CodeWalker.Project
{ {
wf.UpdatePathYndGraphics(kvp.Key, true); wf.UpdatePathYndGraphics(kvp.Key, true);
} }
foreach (var kvp in navYnvs)
{
wf.UpdateNavYnvGraphics(kvp.Key, true);
}
foreach (var kvp in trainTracks) foreach (var kvp in trainTracks)
{ {
wf.UpdateTrainTrackGraphics(kvp.Key, false); wf.UpdateTrainTrackGraphics(kvp.Key, false);
@ -508,222 +491,6 @@ namespace CodeWalker.Project
} }
public class NavPointPositionUndoStep : UndoStep
{
public YnvPoint Point { get; set; }
public Vector3 StartPosition { get; set; }
public Vector3 EndPosition { get; set; }
public NavPointPositionUndoStep(YnvPoint point, Vector3 startpos, WorldForm wf)
{
Point = point;
StartPosition = startpos;
EndPosition = point?.Position ?? Vector3.Zero;
UpdateGraphics(wf); //forces the update of the path graphics when it's moved...
}
private void Update(WorldForm wf, ref MapSelection sel, Vector3 p)
{
Point?.SetPosition(p);
if (Point != sel.NavPoint)
{
wf.SelectNavPoint(Point);
}
wf.SetWidgetPosition(p);
UpdateGraphics(wf);
}
private void UpdateGraphics(WorldForm wf)
{
if (Point != null)
{
//Ynv graphics needs to be updated.....
wf.UpdateNavYnvGraphics(Point.Ynv, false);
}
}
public override void Undo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, StartPosition);
}
public override void Redo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, EndPosition);
}
public override string ToString()
{
return "NavPoint " + (Point?.ToString() ?? "") + ": Position";
}
}
public class NavPointRotationUndoStep : UndoStep
{
public YnvPoint Point { get; set; }
public Quaternion StartRotation { get; set; }
public Quaternion EndRotation { get; set; }
public NavPointRotationUndoStep(YnvPoint point, Quaternion startrot, WorldForm wf)
{
Point = point;
StartRotation = startrot;
EndRotation = point?.Orientation ?? Quaternion.Identity;
//UpdateGraphics(wf);
}
private void Update(WorldForm wf, ref MapSelection sel, Quaternion q)
{
Point?.SetOrientation(q);
if (Point != sel.NavPoint) wf.SelectNavPoint(Point);
wf.SetWidgetRotation(q);
//UpdateGraphics(wf);
}
private void UpdateGraphics(WorldForm wf)
{
////this function shouldn't actually be needed for rotating...
//if (Point != null)
//{
// //Ynv graphics needs to be updated.....
// wf.UpdateNavYnvGraphics(Point.Ynv, false);
//}
}
public override void Undo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, StartRotation);
}
public override void Redo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, EndRotation);
}
public override string ToString()
{
return "NavPoint " + (Point?.ToString() ?? "") + ": Rotation";
}
}
public class NavPortalPositionUndoStep : UndoStep
{
public YnvPortal Portal { get; set; }
public Vector3 StartPosition { get; set; }
public Vector3 EndPosition { get; set; }
public NavPortalPositionUndoStep(YnvPortal portal, Vector3 startpos, WorldForm wf)
{
Portal = portal;
StartPosition = startpos;
EndPosition = portal?.Position ?? Vector3.Zero;
UpdateGraphics(wf); //forces the update of the path graphics when it's moved...
}
private void Update(WorldForm wf, ref MapSelection sel, Vector3 p)
{
Portal?.SetPosition(p);
if (Portal != sel.NavPortal)
{
wf.SelectNavPortal(Portal);
}
wf.SetWidgetPosition(p);
UpdateGraphics(wf);
}
private void UpdateGraphics(WorldForm wf)
{
if (Portal != null)
{
//Ynv graphics needs to be updated.....
wf.UpdateNavYnvGraphics(Portal.Ynv, false);
}
}
public override void Undo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, StartPosition);
}
public override void Redo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, EndPosition);
}
public override string ToString()
{
return "NavPortal " + (Portal?.ToString() ?? "") + ": Position";
}
}
public class NavPortalRotationUndoStep : UndoStep
{
public YnvPortal Portal { get; set; }
public Quaternion StartRotation { get; set; }
public Quaternion EndRotation { get; set; }
public NavPortalRotationUndoStep(YnvPortal portal, Quaternion startrot, WorldForm wf)
{
Portal = portal;
StartRotation = startrot;
EndRotation = portal?.Orientation ?? Quaternion.Identity;
//UpdateGraphics(wf);
}
private void Update(WorldForm wf, ref MapSelection sel, Quaternion q)
{
Portal?.SetOrientation(q);
if (Portal != sel.NavPortal) wf.SelectNavPortal(Portal);
wf.SetWidgetRotation(q);
//UpdateGraphics(wf);
}
private void UpdateGraphics(WorldForm wf)
{
////this function shouldn't actually be needed for rotating...
//if (Point != null)
//{
// //Ynv graphics needs to be updated.....
// wf.UpdateNavYnvGraphics(Point.Ynv, false);
//}
}
public override void Undo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, StartRotation);
}
public override void Redo(WorldForm wf, ref MapSelection sel)
{
Update(wf, ref sel, EndRotation);
}
public override string ToString()
{
return "NavPortal " + (Portal?.ToString() ?? "") + ": Rotation";
}
}
public class TrainTrackNodePositionUndoStep : UndoStep public class TrainTrackNodePositionUndoStep : UndoStep
{ {
public TrainTrackNode Node { get; set; } public TrainTrackNode Node { get; set; }

View File

@ -734,5 +734,20 @@ namespace CodeWalker.Properties {
this["ExplorerWindowTheme"] = value; this["ExplorerWindowTheme"] = value;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Windows")]
public string WorldWindowTheme
{
get
{
return ((string)(this["WorldWindowTheme"]));
}
set
{
this["WorldWindowTheme"] = value;
}
}
} }
} }

View File

@ -71,7 +71,6 @@ namespace CodeWalker.Rendering
//#endif //#endif
Device dev = null; Device dev = null;
SwapChain sc = null; SwapChain sc = null;
Exception exc = null;
bool success = false; bool success = false;
try try
@ -79,7 +78,7 @@ namespace CodeWalker.Rendering
Device.CreateWithSwapChain(DriverType.Hardware, flags, levels, scd, out dev, out sc); Device.CreateWithSwapChain(DriverType.Hardware, flags, levels, scd, out dev, out sc);
success = true; success = true;
} }
catch(Exception ex) { exc = ex; } catch { }
if (!success) if (!success)
{ {
@ -91,17 +90,12 @@ namespace CodeWalker.Rendering
Device.CreateWithSwapChain(DriverType.Hardware, flags, levels, scd, out dev, out sc); Device.CreateWithSwapChain(DriverType.Hardware, flags, levels, scd, out dev, out sc);
success = true; success = true;
} }
catch (Exception ex) { exc = ex; } catch { }
} }
if (!success) if (!success)
{ {
var msg = "CodeWalker was unable to initialise the graphics device. Please ensure your system meets the minimum requirements and that your graphics drivers and DirectX are up to date."; throw new Exception("CodeWalker was unable to initialise the graphics device. Please ensure your system meets the minimum requirements and that your graphics drivers and DirectX are up to date.");
if (exc != null)
{
msg += "\n\nException info: " + exc.ToString();
}
throw new Exception(msg);
} }
device = dev; device = dev;
@ -136,7 +130,7 @@ namespace CodeWalker.Rendering
} }
catch (Exception ex) catch (Exception ex)
{ {
MessageBox.Show("Unable to initialise DirectX11.\n" + ex.Message, "CodeWalker - Error!"); MessageBox.Show("Unable to initialise DirectX11.\n" + ex.ToString());
return false; return false;
} }
} }

View File

@ -587,7 +587,7 @@ namespace CodeWalker
} }
else if (NavPortal != null) else if (NavPortal != null)
{ {
return NavPortal.Orientation; return Quaternion.Identity;
} }
else if (PathNode != null) else if (PathNode != null)
{ {
@ -634,7 +634,7 @@ namespace CodeWalker
} }
else if (NavPortal != null) else if (NavPortal != null)
{ {
return WidgetAxis.Z; return WidgetAxis.None;
} }
else if (PathNode != null) else if (PathNode != null)
{ {
@ -787,10 +787,6 @@ namespace CodeWalker
{ {
NavPoint.SetOrientation(newrot); NavPoint.SetOrientation(newrot);
} }
else if (NavPortal != null)
{
NavPortal.SetOrientation(newrot);
}
else if (Audio != null) else if (Audio != null)
{ {
Audio.SetOrientation(newrot); Audio.SetOrientation(newrot);

5185
WorldForm.Designer.cs generated

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,7 @@ using CodeWalker.Project;
using CodeWalker.Rendering; using CodeWalker.Rendering;
using CodeWalker.GameFiles; using CodeWalker.GameFiles;
using CodeWalker.Properties; using CodeWalker.Properties;
using WeifenLuo.WinFormsUI.Docking;
namespace CodeWalker namespace CodeWalker
{ {
@ -179,8 +180,6 @@ namespace CodeWalker
YmapCarGen CopiedCarGen = null; YmapCarGen CopiedCarGen = null;
YndNode CopiedPathNode = null; YndNode CopiedPathNode = null;
YnvPoly CopiedNavPoly = null; YnvPoly CopiedNavPoly = null;
YnvPoint CopiedNavPoint = null;
YnvPortal CopiedNavPortal = null;
TrainTrackNode CopiedTrainNode = null; TrainTrackNode CopiedTrainNode = null;
ScenarioNode CopiedScenarioNode = null; ScenarioNode CopiedScenarioNode = null;
@ -204,11 +203,14 @@ namespace CodeWalker
bool initedOk = false; bool initedOk = false;
public ThemeBase Theme { get; private set; }
public WorldForm() public WorldForm()
{ {
InitializeComponent(); InitializeComponent();
SetTheme(Settings.Default.WorldWindowTheme, false);
Renderer = new Renderer(this, gameFileCache); Renderer = new Renderer(this, gameFileCache);
camera = Renderer.camera; camera = Renderer.camera;
timecycle = Renderer.timecycle; timecycle = Renderer.timecycle;
@ -229,7 +231,6 @@ namespace CodeWalker
return; return;
} }
MouseWheel += WorldForm_MouseWheel; MouseWheel += WorldForm_MouseWheel;
if (!GTAFolder.UpdateGTAFolder(true)) if (!GTAFolder.UpdateGTAFolder(true))
@ -290,6 +291,8 @@ namespace CodeWalker
DlcLevelComboBox.SelectedIndex = 0; //show "<Loading...>" until DLC list is loaded DlcLevelComboBox.SelectedIndex = 0; //show "<Loading...>" until DLC list is loaded
ThemeComboBox.SelectedItem = Settings.Default.WorldWindowTheme; //show saved theme in settings
UpdateToolbarShortcutsText(); UpdateToolbarShortcutsText();
@ -299,7 +302,43 @@ namespace CodeWalker
Renderer.Start(); Renderer.Start();
} }
private void SetTheme(string themestr, bool changing = true)
{
Theme = null;
switch (themestr)
{
default:
case "Windows":
//Theme = new VS2005Theme();
//var version = VisualStudioToolStripExtender.VsVersion.Unknown;
if (changing)
{
MessageBox.Show("Please Restart Codewalker to change to the windows theme.");
}
break;
case "Blue":
Theme = new VS2015BlueTheme();
break;
case "Light":
Theme = new VS2015LightTheme();
break;
case "Dark":
Theme = new VS2015DarkTheme();
break;
}
if (changing)
{
Settings.Default.WorldWindowTheme = themestr;
Settings.Default.Save();
}
if (Theme != null)
{
FormTheme.SetTheme(this, Theme);
}
}
private MapIcon AddIcon(string name, string filename, int texw, int texh, float centerx, float centery, float scale) private MapIcon AddIcon(string name, string filename, int texw, int texh, float centerx, float centery, float scale)
{ {
@ -1205,10 +1244,6 @@ namespace CodeWalker
{ {
ori = CurMouseHit.NavPoint.Orientation; ori = CurMouseHit.NavPoint.Orientation;
} }
if (CurMouseHit.NavPortal != null)
{
ori = CurMouseHit.NavPortal.Orientation;
}
if (CurMouseHit.Audio != null) if (CurMouseHit.Audio != null)
{ {
ori = CurMouseHit.Audio.Orientation; ori = CurMouseHit.Audio.Orientation;
@ -1449,15 +1484,9 @@ namespace CodeWalker
} }
if (selectionItem.NavPortal != null) if (selectionItem.NavPortal != null)
{ {
var navp = selectionItem.NavPortal; camrel = selectionItem.NavPortal.Position - camera.Position;
camrel = navp.Position - camera.Position;
//render direction arrow for NavPortal
ori = navp.Orientation;
float arrowlen = 2.0f;
float arrowrad = 0.25f;
Renderer.RenderSelectionArrowOutline(navp.Position, Vector3.UnitY, Vector3.UnitZ, ori, arrowlen, arrowrad, cgrn);
} }
if (selectionItem.Audio != null) if (selectionItem.Audio != null)
{ {
var au = selectionItem.Audio; var au = selectionItem.Audio;
@ -1755,7 +1784,7 @@ namespace CodeWalker
public void UpdateNavYnvGraphics(YnvFile ynv, bool fullupdate) public void UpdateNavYnvGraphics(YnvFile ynv, bool fullupdate)
{ {
ynv.UpdateAllNodePositions();
ynv.UpdateTriangleVertices(); ynv.UpdateTriangleVertices();
ynv.BuildBVH(); ynv.BuildBVH();
@ -1770,18 +1799,6 @@ namespace CodeWalker
//poly.Ynv.UpdateBvhForPoly(poly);//TODO! //poly.Ynv.UpdateBvhForPoly(poly);//TODO!
UpdateNavYnvGraphics(poly.Ynv, fullupdate); UpdateNavYnvGraphics(poly.Ynv, fullupdate);
} }
public void UpdateNavPointGraphics(YnvPoint point, bool fullupdate)
{
if (point == null) return;
//poly.Ynv.UpdateBvhForPoint(point);//TODO!
UpdateNavYnvGraphics(point.Ynv, fullupdate);
}
public void UpdateNavPortalGraphics(YnvPortal portal, bool fullupdate)
{
if (portal == null) return;
//poly.Ynv.UpdateBvhForPortal(portal);//TODO!
UpdateNavYnvGraphics(portal.Ynv, fullupdate);
}
public void UpdateTrainTrackGraphics(TrainTrack tt, bool fullupdate) public void UpdateTrainTrackGraphics(TrainTrack tt, bool fullupdate)
{ {
@ -3905,6 +3922,7 @@ namespace CodeWalker
if (InfoForm == null) if (InfoForm == null)
{ {
InfoForm = new WorldInfoForm(this); InfoForm = new WorldInfoForm(this);
FormTheme.SetTheme(InfoForm, Theme);
InfoForm.SetSelection(SelectedItem, SelectedItems); InfoForm.SetSelection(SelectedItem, SelectedItems);
InfoForm.SetSelectionMode(SelectionModeStr, MouseSelectEnabled); InfoForm.SetSelectionMode(SelectionModeStr, MouseSelectEnabled);
InfoForm.Show(this); InfoForm.Show(this);
@ -3960,6 +3978,7 @@ namespace CodeWalker
if (SearchForm == null) if (SearchForm == null)
{ {
SearchForm = new WorldSearchForm(this); SearchForm = new WorldSearchForm(this);
FormTheme.SetTheme(SearchForm, Theme);
SearchForm.Show(this); SearchForm.Show(this);
} }
else else
@ -4538,6 +4557,7 @@ namespace CodeWalker
if (SettingsForm == null) if (SettingsForm == null)
{ {
SettingsForm = new SettingsForm(this); SettingsForm = new SettingsForm(this);
FormTheme.SetTheme(SettingsForm, Theme);
SettingsForm.Show(this); SettingsForm.Show(this);
} }
else else
@ -4562,23 +4582,19 @@ namespace CodeWalker
private bool CanMarkUndo()
{
if (SelectedItem.MultipleSelection) return true;
if (SelectedItem.EntityDef != null) return true;
if (SelectedItem.CarGenerator != null) return true;
if (SelectedItem.PathNode != null) return true;
//if (SelectedItem.NavPoly != null) return true;
if (SelectedItem.NavPoint != null) return true;
if (SelectedItem.NavPortal != null) return true;
if (SelectedItem.TrainTrackNode != null) return true;
if (SelectedItem.ScenarioNode != null) return true;
if (SelectedItem.Audio != null) return true;
return false;
}
private void MarkUndoStart(Widget w) private void MarkUndoStart(Widget w)
{ {
if (!CanMarkUndo()) return; bool canundo = false;
if (SelectedItem.MultipleSelection) canundo = true;
if (SelectedItem.EntityDef != null) canundo = true;
if (SelectedItem.CarGenerator != null) canundo = true;
if (SelectedItem.PathNode != null) canundo = true;
//if (SelectedItem.NavPoly != null) hasval = true;
if (SelectedItem.TrainTrackNode != null) canundo = true;
if (SelectedItem.ScenarioNode != null) canundo = true;
if (SelectedItem.Audio != null) canundo = true;
if (!canundo) return;
if (Widget is TransformWidget) if (Widget is TransformWidget)
{ {
UndoStartPosition = Widget.Position; UndoStartPosition = Widget.Position;
@ -4588,13 +4604,19 @@ namespace CodeWalker
} }
private void MarkUndoEnd(Widget w) private void MarkUndoEnd(Widget w)
{ {
if (!CanMarkUndo()) return; bool canundo = false;
if (SelectedItem.MultipleSelection) canundo = true;
if (SelectedItem.EntityDef != null) canundo = true;
if (SelectedItem.CarGenerator != null) canundo = true;
if (SelectedItem.PathNode != null) canundo = true;
//if (SelectedItem.NavPoly != null) hasval = true;
if (SelectedItem.TrainTrackNode != null) canundo = true;
if (SelectedItem.ScenarioNode != null) canundo = true;
if (SelectedItem.Audio != null) canundo = true;
if (!canundo) return;
var ent = SelectedItem.EntityDef; var ent = SelectedItem.EntityDef;
var cargen = SelectedItem.CarGenerator; var cargen = SelectedItem.CarGenerator;
var pathnode = SelectedItem.PathNode; var pathnode = SelectedItem.PathNode;
var navpoly = SelectedItem.NavPoly;
var navpoint = SelectedItem.NavPoint;
var navportal = SelectedItem.NavPortal;
var trainnode = SelectedItem.TrainTrackNode; var trainnode = SelectedItem.TrainTrackNode;
var scenarionode = SelectedItem.ScenarioNode; var scenarionode = SelectedItem.ScenarioNode;
var audio = SelectedItem.Audio; var audio = SelectedItem.Audio;
@ -4645,26 +4667,6 @@ namespace CodeWalker
case WidgetMode.Position: s = new PathNodePositionUndoStep(pathnode, UndoStartPosition, this); break; case WidgetMode.Position: s = new PathNodePositionUndoStep(pathnode, UndoStartPosition, this); break;
} }
} }
else if (navpoly != null)
{
//todo...
}
else if (navpoint != null)
{
switch (tw.Mode)
{
case WidgetMode.Position: s = new NavPointPositionUndoStep(navpoint, UndoStartPosition, this); break;
case WidgetMode.Rotation: s = new NavPointRotationUndoStep(navpoint, UndoStartRotation, this); break;
}
}
else if (navportal != null)
{
switch (tw.Mode)
{
case WidgetMode.Position: s = new NavPortalPositionUndoStep(navportal, UndoStartPosition, this); break;
case WidgetMode.Rotation: s = new NavPortalRotationUndoStep(navportal, UndoStartRotation, this); break;
}
}
else if (trainnode != null) else if (trainnode != null)
{ {
switch (tw.Mode) switch (tw.Mode)
@ -4984,9 +4986,9 @@ namespace CodeWalker
case MapSelectionMode.Entity: AddEntity(); break; case MapSelectionMode.Entity: AddEntity(); break;
case MapSelectionMode.CarGenerator: AddCarGen(); break; case MapSelectionMode.CarGenerator: AddCarGen(); break;
case MapSelectionMode.Path: AddPathNode(); break; case MapSelectionMode.Path: AddPathNode(); break;
case MapSelectionMode.NavMesh: AddNavPoly(); break;//how to add points/portals? project window case MapSelectionMode.NavMesh: AddNavPoly(); break;
case MapSelectionMode.TrainTrack: AddTrainNode(); break; case MapSelectionMode.TrainTrack: AddTrainNode(); break;
case MapSelectionMode.Scenario: AddScenarioNode(); break; //how to add different node types? project window case MapSelectionMode.Scenario: AddScenarioNode(); break;
} }
} }
private void DeleteItem() private void DeleteItem()
@ -4995,8 +4997,6 @@ namespace CodeWalker
else if (SelectedItem.CarGenerator != null) DeleteCarGen(); else if (SelectedItem.CarGenerator != null) DeleteCarGen();
else if (SelectedItem.PathNode != null) DeletePathNode(); else if (SelectedItem.PathNode != null) DeletePathNode();
else if (SelectedItem.NavPoly != null) DeleteNavPoly(); else if (SelectedItem.NavPoly != null) DeleteNavPoly();
else if (SelectedItem.NavPoint != null) DeleteNavPoint();
else if (SelectedItem.NavPortal != null) DeleteNavPortal();
else if (SelectedItem.TrainTrackNode != null) DeleteTrainNode(); else if (SelectedItem.TrainTrackNode != null) DeleteTrainNode();
else if (SelectedItem.ScenarioNode != null) DeleteScenarioNode(); else if (SelectedItem.ScenarioNode != null) DeleteScenarioNode();
} }
@ -5006,8 +5006,6 @@ namespace CodeWalker
else if (SelectedItem.CarGenerator != null) CopyCarGen(); else if (SelectedItem.CarGenerator != null) CopyCarGen();
else if (SelectedItem.PathNode != null) CopyPathNode(); else if (SelectedItem.PathNode != null) CopyPathNode();
else if (SelectedItem.NavPoly != null) CopyNavPoly(); else if (SelectedItem.NavPoly != null) CopyNavPoly();
else if (SelectedItem.NavPoint != null) CopyNavPoint();
else if (SelectedItem.NavPortal != null) CopyNavPortal();
else if (SelectedItem.TrainTrackNode != null) CopyTrainNode(); else if (SelectedItem.TrainTrackNode != null) CopyTrainNode();
else if (SelectedItem.ScenarioNode != null) CopyScenarioNode(); else if (SelectedItem.ScenarioNode != null) CopyScenarioNode();
} }
@ -5017,8 +5015,6 @@ namespace CodeWalker
else if (CopiedCarGen != null) PasteCarGen(); else if (CopiedCarGen != null) PasteCarGen();
else if (CopiedPathNode != null) PastePathNode(); else if (CopiedPathNode != null) PastePathNode();
else if (CopiedNavPoly != null) PasteNavPoly(); else if (CopiedNavPoly != null) PasteNavPoly();
else if (CopiedNavPoint != null) PasteNavPoint();
else if (CopiedNavPortal != null) PasteNavPortal();
else if (CopiedTrainNode != null) PasteTrainNode(); else if (CopiedTrainNode != null) PasteTrainNode();
else if (CopiedScenarioNode != null) PasteScenarioNode(); else if (CopiedScenarioNode != null) PasteScenarioNode();
} }
@ -5028,8 +5024,6 @@ namespace CodeWalker
else if (SelectedItem.CarGenerator != null) CloneCarGen(); else if (SelectedItem.CarGenerator != null) CloneCarGen();
else if (SelectedItem.PathNode != null) ClonePathNode(); else if (SelectedItem.PathNode != null) ClonePathNode();
else if (SelectedItem.NavPoly != null) CloneNavPoly(); else if (SelectedItem.NavPoly != null) CloneNavPoly();
else if (SelectedItem.NavPoint != null) CloneNavPoint();
else if (SelectedItem.NavPortal != null) CloneNavPortal();
else if (SelectedItem.TrainTrackNode != null) CloneTrainNode(); else if (SelectedItem.TrainTrackNode != null) CloneTrainNode();
else if (SelectedItem.ScenarioNode != null) CloneScenarioNode(); else if (SelectedItem.ScenarioNode != null) CloneScenarioNode();
} }
@ -5252,114 +5246,6 @@ namespace CodeWalker
ProjectForm.NewNavPoly(SelectedItem.NavPoly, true); ProjectForm.NewNavPoly(SelectedItem.NavPoly, true);
} }
private void AddNavPoint()
{
if (ProjectForm == null) return;
ProjectForm.NewNavPoint();
}
private void DeleteNavPoint()
{
var navpoint = SelectedItem.NavPoint;
if (navpoint == null) return;
if ((ProjectForm != null) && (ProjectForm.IsCurrentNavPoint(navpoint)))
{
if (!ProjectForm.DeleteNavPoint())
{
//MessageBox.Show("Unable to delete this nav point from the current project. Make sure the nav point's ynv exists in the current project.");
}
else
{
SelectItem(null);
}
}
else
{
//project not open, or nav point not selected there, just remove the point from the ynv...
var ynv = navpoint.Ynv;
if (!ynv.RemovePoint(navpoint))
{
MessageBox.Show("Unable to remove nav point. NavMesh editing TODO!");
}
else
{
UpdateNavPointGraphics(navpoint, false);
SelectItem(null);
}
}
}
private void CopyNavPoint()
{
CopiedNavPoint = SelectedItem.NavPoint;
ToolbarPasteButton.Enabled = (CopiedNavPoint != null) && ToolbarAddItemButton.Enabled;
}
private void PasteNavPoint()
{
if (CopiedNavPoint == null) return;
if (ProjectForm == null) return;
ProjectForm.NewNavPoint(CopiedNavPoint);
}
private void CloneNavPoint()
{
if (SelectedItem.NavPoint == null) return;
if (ProjectForm == null) return;
ProjectForm.NewNavPoint(SelectedItem.NavPoint, true);
}
private void AddNavPortal()
{
if (ProjectForm == null) return;
ProjectForm.NewNavPortal();
}
private void DeleteNavPortal()
{
var navportal = SelectedItem.NavPortal;
if (navportal == null) return;
if ((ProjectForm != null) && (ProjectForm.IsCurrentNavPortal(navportal)))
{
if (!ProjectForm.DeleteNavPortal())
{
//MessageBox.Show("Unable to delete this nav portal from the current project. Make sure the nav portal's ynv exists in the current project.");
}
else
{
SelectItem(null);
}
}
else
{
//project not open, or nav portal not selected there, just remove the portal from the ynv...
var ynv = navportal.Ynv;
if (!ynv.RemovePortal(navportal))
{
MessageBox.Show("Unable to remove nav portal. NavMesh editing TODO!");
}
else
{
UpdateNavPortalGraphics(navportal, false);
SelectItem(null);
}
}
}
private void CopyNavPortal()
{
CopiedNavPortal = SelectedItem.NavPortal;
ToolbarPasteButton.Enabled = (CopiedNavPortal != null) && ToolbarAddItemButton.Enabled;
}
private void PasteNavPortal()
{
if (CopiedNavPortal == null) return;
if (ProjectForm == null) return;
ProjectForm.NewNavPortal(CopiedNavPortal);
}
private void CloneNavPortal()
{
if (SelectedItem.NavPortal == null) return;
if (ProjectForm == null) return;
ProjectForm.NewNavPortal(SelectedItem.NavPortal, true);
}
private void AddTrainNode() private void AddTrainNode()
{ {
if (ProjectForm == null) return; if (ProjectForm == null) return;
@ -6605,6 +6491,7 @@ namespace CodeWalker
private void AboutButton_Click(object sender, EventArgs e) private void AboutButton_Click(object sender, EventArgs e)
{ {
AboutForm f = new AboutForm(); AboutForm f = new AboutForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
@ -6616,6 +6503,7 @@ namespace CodeWalker
private void ToolsMenuRPFBrowser_Click(object sender, EventArgs e) private void ToolsMenuRPFBrowser_Click(object sender, EventArgs e)
{ {
BrowseForm f = new BrowseForm(); BrowseForm f = new BrowseForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
@ -6643,42 +6531,49 @@ namespace CodeWalker
private void ToolsMenuBinarySearch_Click(object sender, EventArgs e) private void ToolsMenuBinarySearch_Click(object sender, EventArgs e)
{ {
BinarySearchForm f = new BinarySearchForm(gameFileCache); BinarySearchForm f = new BinarySearchForm(gameFileCache);
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
private void ToolsMenuJenkGen_Click(object sender, EventArgs e) private void ToolsMenuJenkGen_Click(object sender, EventArgs e)
{ {
JenkGenForm f = new JenkGenForm(); JenkGenForm f = new JenkGenForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
private void ToolsMenuJenkInd_Click(object sender, EventArgs e) private void ToolsMenuJenkInd_Click(object sender, EventArgs e)
{ {
JenkIndForm f = new JenkIndForm(gameFileCache); JenkIndForm f = new JenkIndForm(gameFileCache);
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
private void ToolsMenuExtractScripts_Click(object sender, EventArgs e) private void ToolsMenuExtractScripts_Click(object sender, EventArgs e)
{ {
ExtractScriptsForm f = new ExtractScriptsForm(); ExtractScriptsForm f = new ExtractScriptsForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
private void ToolsMenuExtractTextures_Click(object sender, EventArgs e) private void ToolsMenuExtractTextures_Click(object sender, EventArgs e)
{ {
ExtractTexForm f = new ExtractTexForm(); ExtractTexForm f = new ExtractTexForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
private void ToolsMenuExtractRawFiles_Click(object sender, EventArgs e) private void ToolsMenuExtractRawFiles_Click(object sender, EventArgs e)
{ {
ExtractRawForm f = new ExtractRawForm(); ExtractRawForm f = new ExtractRawForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
private void ToolsMenuExtractShaders_Click(object sender, EventArgs e) private void ToolsMenuExtractShaders_Click(object sender, EventArgs e)
{ {
ExtractShadersForm f = new ExtractShadersForm(); ExtractShadersForm f = new ExtractShadersForm();
FormTheme.SetTheme(f, Theme);
f.Show(this); f.Show(this);
} }
@ -7478,6 +7373,11 @@ namespace CodeWalker
{ {
SnapGridSize = (float)SnapGridSizeUpDown.Value; SnapGridSize = (float)SnapGridSizeUpDown.Value;
} }
private void ThemeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
SetTheme(ThemeComboBox.Text);
}
} }

View File

@ -123,40 +123,6 @@
<metadata name="StatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="StatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>182, 17</value> <value>182, 17</value>
</metadata> </metadata>
<data name="YmapsTextBox.Text" xml:space="preserve">
<value>dt1_lod
hw1_lod
cs1_lod
cs1_lod2
cs1_lod3
cs2_lod
cs2_lod2
cs3_lod
cs4_lod
cs5_lod
cs6_lod
ch1_lod
ch2_lod
ch2_lod2
ch2_lod3
ch2_lod4
ch3_lod
ss1_lod
sc1_lod
sp1_lod
sm_lod
id1_lod
id2_lod
bh1_lod
vb_lod
po1_lod
ap1_lod
kt1_lod
ufo_lod
ufo_eye
ufo
</value>
</data>
<metadata name="StatsUpdateTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="StatsUpdateTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>298, 17</value> <value>298, 17</value>
</metadata> </metadata>
@ -170,7 +136,7 @@ ufo
<data name="ToolbarNewButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarNewButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADESURBVDhPzZI7DgIhGIQ5grUnsPQMnMgLWMo1bDyJiYUV YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAADESURBVDhPzZI7DgIhGIQ5grUnsPQMnMgLWMo1bDyJiYUV
h7CxEo1Aiw7+E9ldWF+Nk0w2wMy3/z5UqRDCwjk3iTEmGmvsS6Ste2gtJYvrdjklJK9xLtGhcAeEdqtZ h7CxEo1Aiw7+E9ldWF+Nk0w2wMy3/z5UqRDCwjk3iTEmGmvsS6Ste2gtJYvrdjklJK9xLtGhcAeEdqtZ
Ouw3uUgA1tgXSH0SGdsyfD0dcwHXAmqRk0pXCNMsN+y893OpPYVDjFw8d9JaD2yMqUNYgjkBCmd36bgJ Ouw3uUgA1tgXSH0SGdsyfD0dcwHXAmqRk0pXCNMsN+y893OpPYVDjFw8d9JaD2yMqUNYgjkBCmd36bgJ
6b+DMUAJkXr9K9QANM6QkfpD/f/gYwCESfgnfgWg/gcw5peAdyzxX6TUDfMCML1omZa9AAAAAElFTkSu 6b+DMUAJkXr9K9QANM6QkfpD/f/gYwCESfgnfgWg/gcw5peAdyzxX6TUDfMCML1omZa9AAAAAElFTkSu
@ -180,7 +146,7 @@ ufo
<data name="ToolbarOpenButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarOpenButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEcSURBVDhPlZKxqsIwFIb7Bvc+idxHuPQVXFpQcOhe8Amc YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAEcSURBVDhPlZKxqsIwFIb7Bvc+idxHuPQVXFpQcOhe8Amc
OqqzCBdU6HQfQIfunVwKoi7FQQeF9GrajufmhDYkTaMY+EjPyf//TZtY9aCUfhVFQRggQbBfSV4PFJ8v OqqzCBdU6HQfQIfunVwKoi7FQQeF9GrajufmhDYkTaMY+EjPyf//TZtY9aCUfhVFQRggQbBfSV4PFJ8v
GekMf8HqzqE3jXhIhRwsqKyWxYpJ3bzcMpBD4jgG27Y1RACaZ+sEPvoLbmqCa/f7AzLyJ2gGcDO+bXe6 GekMf8HqzqE3jXhIhRwsqKyWxYpJ3bzcMpBD4jgG27Y1RACaZ+sEPvoLbmqCa/f7AzLyJ2gGcDO+bXe6
ajugDypMiBJQluU3f2DiZ+YmT3eANWIyIyKgFsv/AOs2k4wSgIXneRBFEaRpyhew10ZbwNb3fU1oYrPe ajugDypMiBJQluU3f2DiZ+YmT3eANWIyIyKgFsv/AOs2k4wSgIXneRBFEaRpyhew10ZbwNb3fU1oYrPe
@ -191,7 +157,7 @@ ufo
<data name="ToolbarSaveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarSaveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABRSURBVDhPY6AK+Pbt239S8NevX+dDtUIASNDJyQmOP7z/ YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAABRSURBVDhPY6AK+Pbt239S8NevX+dDtUIASNDJyQmOP7z/
CMfIYiC6ra0N0xBSDABhmCFQ7aQbAMJEG4CMkdXQ1gBi8KgBg9IAcjBUOyWAgQEAoTb4kYkPBE8AAAAA CMfIYiC6ra0N0xBSDABhmCFQ7aQbAMJEG4CMkdXQ1gBi8KgBg9IAcjBUOyWAgQEAoTb4kYkPBE8AAAAA
SUVORK5CYII= SUVORK5CYII=
</value> </value>
@ -199,7 +165,7 @@ ufo
<data name="ToolbarSaveAllButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarSaveAllButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB2SURBVDhP7ZCxDcAgDAQZKTMwnBdiMIJk0SZ6YksoYEOR YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAB2SURBVDhP7ZCxDcAgDAQZKTMwnBdiMIJk0SZ6YksoYEOR
Mi8ddvFc4WCl1no5ZGY+pDoPijHGxplLQ3ciWks8AaZKpD5mJuhFAB2pj+kFFt8I8FiklKYfFXTcY+FQ Mi8ddvFc4WCl1no5ZGY+pDoPijHGxplLQ3ciWks8AaZKpD5mJuhFAB2pj+kFFt8I8FiklKYfFXTcY+FQ
nmQpwPQkpqAXadFi/1hWfsEj2EHqr4RwAzbn8IoLYvtxAAAAAElFTkSuQmCC nmQpwPQkpqAXadFi/1hWfsEj2EHqr4RwAzbn8IoLYvtxAAAAAElFTkSuQmCC
</value> </value>
@ -207,7 +173,7 @@ ufo
<data name="ToolbarSelectButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarSelectButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACRSURBVDhPtY7bCcAgDEUdoaN0hOIWbtMvF/Lflfzx8dl6 YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAACRSURBVDhPtY7bCcAgDEUdoaN0hOIWbtMvF/Lflfzx8dl6
JSmlKNTQHgg+uDmJ+pyc81ErxBhX+poDAmutXAKB1louYYFYcheIJE/BtKQnmJKMBCiWULQPCxA2xrS7 JSmlKNTQHgg+uDmJ+pyc81ErxBhX+poDAmutXAKB1louYYFYcheIJE/BtKQnmJKMBCiWULQPCxA2xrS7
9x6NV1G0DwI06XDONQFE9R0qC8XG0JRQStlw8haQpZR2ir0DDaItGITRRFu1mt7iZ5Q6AVRB/GG9LRsl 9x6NV1G0DwI06XDONQFE9R0qC8XG0JRQStlw8haQpZR2ir0DDaItGITRRFu1mt7iZ5Q6AVRB/GG9LRsl
AAAAAElFTkSuQmCC AAAAAElFTkSuQmCC
@ -216,7 +182,7 @@ ufo
<data name="ToolbarMoveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarMoveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACrSURBVDhPpVJbDoAgDONInoHD8c9J/SH8Kl02rZORGJs0 YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAACrSURBVDhPpVJbDoAgDONInoHD8c9J/SH8Kl02rZORGJs0
DNaWh6YZWmtb730vpRwgaqxpew0255yFn0K82YeoLMYQXQY2Y0RPZU/YsSEAdbcrgNeU93X8nVUoYRww DNaWh6YZWmtb730vpRwgaqxpew0255yFn0K82YeoLMYQXQY2Y0RPZU/YsSEAdbcrgNeU93X8nVUoYRww
00jIpLGkD0m24AnxrGbC+z8Ax7CQWquIVzQtxjHfo0cU2k429+bXl2AhRg7g4MH4rzSj7cY1eiqLgXQ2 00jIpLGkD0m24AnxrGbC+z8Ax7CQWquIVzQtxjHfo0cU2k429+bXl2AhRg7g4MH4rzSj7cY1eiqLgXQ2
cwh6Kovh34TN4bE9OGRtTukExpYH+BWfUFQAAAAASUVORK5CYII= cwh6Kovh34TN4bE9OGRtTukExpYH+BWfUFQAAAAASUVORK5CYII=
@ -225,7 +191,7 @@ ufo
<data name="ToolbarRotateButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarRotateButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFRSURBVDhPfZMxboNAEEU5Qo6QI+QIET1SWncp6OmpUrm1 YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAFRSURBVDhPfZMxboNAEEU5Qo6QI+QIET1SWncp6OmpUrm1
6JFSuuQGuKaioQ89xRYYKDfz1jt4TYhX+trRnz9/2Z0h+m9N0/Q1z7MFxJ5+vpZleRfx9ziOP03T2MPh 6JFSuuQGuKaioQ89xRYYKDfz1jt4TYhX+trRnz9/2Z0h+m9N0/Q1z7MFxJ5+vpZleRfx9ziOP03T2MPh
4EAMRw6Nl9+XkK+SvHDaMAy2KAobx/ED4Mj5L7oYY17WYiENApJd19k0Tf8YwJFDU5Ylu3iIiQQVBCKS 4EAMRw6Nl9+XkK+SvHDaMAy2KAobx/ED4Mj5L7oYY17WYiENApJd19k0Tf8YwJFDU5Ylu3iIiQQVBCKS
SZLYuq6dSIuJ4cihUY4rYbAKwzjPc3d3QLynIV4NjsfjQxJwIgg5NGg1dgacIHu7NdgDGoHxNTcDf7oz SZLYuq6dSIuJ4cihUY4rYbAKwzjPc3d3QLynIV4NjsfjQxJwIgg5NGg1dgacIHu7NdgDGoHxNTcDf7oz
@ -237,11 +203,127 @@ ufo
<data name="ToolbarScaleButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarScaleButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB4SURBVDhP3ZC7DcAgDEQZKTMwHOvSIFriS7BlEB+HMic9 YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAB4SURBVDhP3ZC7DcAgDEQZKTMwHOvSIFriS7BlEB+HMic9
QJbvFThLUkpXzjkSpaeuzMPlEELx3jdsBauyCHBY6UWYPQI93KEljQD3jL6EGzN6x0bASyNYwkKU8Udm QJbvFThLUkpXzjkSpaeuzMPlEELx3jdsBauyCHBY6UWYPQI93KEljQD3jL6EGzN6x0bASyNYwkKU8Udm
gd6TMnIikDJyIqjVNz8T7FgKrAwFX6lVinM3aJ05lWDPRRcAAAAASUVORK5CYII= gd6TMnIikDJyIqjVNz8T7FgKrAwFX6lVinM3aJ05lWDPRRcAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="ToolbarTransformSpaceButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAB0SURBVDhP7ZNBCoAgEEXnSJ3BqxmetNpaMLhVv5DNRJS2
CxIeuvA9XSjtg5mHEILPxB6U7JyLxphmSkDK1o5x9dst87SUfTXwRsYsA+paT0BGDGsVOJ92hdz3Bz4f
wGPC48uu7w5IGd+gBlpRMgYCnRwyESUj3CsQkYNFDwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarSnapButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAACtSURBVDhPrZBBEsIgEAR5Gy/wFV55T/wHr+KgHuCKNsVY
ZI2JiU7VVIVlp7OL+1mllIr7cb8Ie++PQwQYITnnM24NWxoBgsQYm/l+gk699bMsRA4h1JTSPsg0Xert
em/mGwh3vW1Z7MvIABSWqXG3+iZHAEw1m4wD49oVANgVOL/VeSgeDAiX1mpWeKy9BIQiI+OxWQF77tG5
2Fc729BmeElf/3lNhORe+oecewDObEqX49RqCgAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarUndoButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAEfSURBVDhPjVK7DgFBFN0/4A/4AvEJfkAi0ZLoNArR6hUq
tUgkElGJ1jYaDYVsI9Fq2EYyin2Ua864d9g1u/YkJ5nHOfcxcy2G53nVIAiEZBSGYdn3/TnviQJnuCPL
BzDf3aeoDNZaPFweo0J7EVnNmSLWOMMd9GR9AyaYIXQfT702kZKIWCUIwIJSd6XX9dE2sk9XRaz5HJWg
HbLHAzCn9pnbURklHQ6CdnBGdnMAsDXZKSF6lhkbqITvlIdhCvBthuZvAAO1WQhRlPv0FrKAIBCjIs7+
84hpkF9VS5qN32iCFHSSM4FAGLifQUpCltc3mZE5j3l+uNxiYzzeODA7f8um1xa96V6baaAc3JEsG/zq
PMaoKLeZQa+f46ss6wVeddKu0bn3NAAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarRedoButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAEgSURBVDhPrZK9agJBFIXnDZJH8AkkLxIQbCP4AKls01tY
WS+CEEiRQmyzjY1NLGQbQbCyUZvAbLE/5TjfMHezrLsbhBy4MHPvPWfuz6gy8jzvpGk6z7JMWzPeND4b
G8o9SZInT/kFzvMl1m8fG/MweDeqP3PGGR/kcHs0L9PVrQgvQ+6OFgWxasQ+1wd3FhFPV4oSeUWSn8df
7jWMs/jLlVGRpyuFmgQh2HuEjyQsCHcFsUmgCHzvT8ZW1KNHRJraahSgbATwy2DrRKoCNy1orR+JSSUQ
qubIoDrE2lW1oW6Nd4tIvxBFBMHLT2z4hT6tHdLvf4hEk2VUiDBgv965T2sHG0Ck/IFeg7WbiWznT5DI
i/Kd7xpoGYhYsqknK3UFU4/RUE6VilMAAAAASUVORK5CYII=
</value>
</data>
<data name="ToolbarInfoWindowButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAABSSURBVDhPtcxBCgAgCETRzub971Jt3BoGBpGhGS4eM6tf
EJF+zAAAhGyBVvuTa0A+r8YMeOUF5PNqzIBXXkA+r8YMeOUF5PNqzIDXEYhYgTikAQEeMEa6imiVAAAA
AElFTkSuQmCC
</value>
</data>
<data name="ToolbarProjectWindowButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAIDSURBVDhPlVM9ixpRFJ2fkJ+wPyE/ISgqCEoQBBtBMjYi
jmunhSCMWO4iiLhBWCwEq1goSLYwItlCBG20MBZRSGLn7OJXefLOZWaza7JFLrx5M/fcc+59797Rntvp
dHp3OBxu7c//N0X+cjweQSHbRdGY8rVtjPulZVlvbPiPMXA8HqNUKoHBDFKEqTLUajUUi0XBut0ulN/a
7/dvbaqm2cFWKpWCy+XCaDSSoEqlgmQyiVwuh2w2i0QigVAohHQ6LbhKeiECKmOh3+/D7/eLQDwex3A4
hK7rKBQKqFaroFg+n0csFoPX60W9Xmeltyz9YrvdgtkJUICr1WphsVhgvV5jPp+j0WjANE0R9/l8CAQC
rAKaerR7vR6i0SjcbjeazSZms5lkYAWRSATlchmr1QqsknEej0eSOAJyxnA4jMlkgsFgIMT2pzYerEdZ
fKePGC/VqfJJIJPJIBgMioOA/kHH/df7J4FviyWMlCHYcrmUnRe52+2+a3yQ6CyCP3/8ws3NR3XzOdlJ
pqCTlTuPydZLF9hTe2AEdDLffb6TO3C+HQGSpQPn9rwCEpiV2c8F2Hab8tIIctpI4rkdAQpeXV0LpmIs
O/xv41FUwJSTyFs3zaIcwTAMdDodkqcvRvg1UyVebjYbi7PAweEMKPL1P3+i14wTqoT4B1pqf2+7z0zT
fgPQbDDZyZreTQAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarAddItemButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAADpSURBVDhPjVIxEoJADOQpPsLCmp5f8ABL/II/wKGTT0jj
J2jUVm3RAihP9mRnYu4ymJmdySzZvYQkYQzD4CTA9X2/nfIOQO4LrYBos197IJ8E57ZtXZ7nHsjBjeO4
miXfQDEhDYjm1HhkWeaqqgL3240UauDbq3t7PO5PVxS7sJt/DQjdzeII2gAoy4NL09R/nwcJf+L1cguE
4DBGfazjBhIspBg5OBpHDUBSIEXaDPjLgIUWHzXAunShNkBNzKDDarAirMoyCNbIwFHI88XcfAkwD0kH
zlR2QwPzlGOhu1l81Qp2Y7+aJB877HaG+O29gAAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarDeleteItemButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAFySURBVDhPhVI9S8RAEN0/4D+wsLKwtbKTg2CV1sI6YGth
cbb+ALE9DYgYg4XNWSh3CGIrggjh8NRSTyVFTMR8QMKYN7prTLL4YLLJZN6bmZ0RWZbR5OaK/Mcx5XlO
AM7w7ZV9cRxTFEWfJdZEGxCwPztFx4tzJemFpGDfXODTcRyyLIs8z6NS5CJJkpkf6jdKB12uWyxyvrpM
o6M9cuen+YTYcDBkM02TbNtGRcGfaoqioKoI7HZ3m9I05Xbeg5Dt+WlC3e5GsxqdAFrj/sNIicDq1Qhc
FkoHESLXW5v8Pjrrk+/7DQFYr7dDnU6HEwhcFggQQSVwynvApUbhhyLejx+4DefA+RUAGSKopIq7wQmd
riwpMkggQwTfSgCP0gKchmEoAsw9dJkks1b/KQEJfMBZDZKBOn+rAMZVD6wLIKZNIMBoMCKMSifQGKME
lgLLgSXBsqBvmQmmXaQ6sKbVaqSAdpXbUK/m36w6yGr0WYX4AtJHmpxbRwouAAAAAElFTkSuQmCC
</value>
</data>
<data name="ToolbarCopyButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAACZSURBVDhPzZLLDYYgEIQpwZq4UwCtcLIDS7MQDj744YqM
WR8hu/mN0cRJJgac/WCi6jWllLrizHgoaigmC2FjTNZa77bWZu89ID3FZAGAoXGYdmPtnFtvQjFZHGCD
sICyyXYO4XcZIHae53ANgJf1aVvnW4DzAJ4wbnkLcHaMsaWxQ/8AFJP1CKD+CrDYuVYJSf8+3/kjUmoB
0WKNJAuziQ0AAAAASUVORK5CYII=
</value>
</data>
<data name="ToolbarPasteButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAACKSURBVDhP7Y3LDYAgEEQpwVKsgSoojl4swSbUCwc0Aa7q
4BJN+IjGo5O8ZJndGVhKxpjWWts551aih0fre+0BLaVchRAezPB2NXSSV/gVwXGYPJiVUt6ns1ghCDjn
UQG86w3FToVgDcWCWS9Fvi/Ao0RVAcwUjwpyhzmf4n8BFApS5HZRwRuONGMbrIJ1JIN8O2QAAAAASUVO
RK5CYII=
</value>
</data>
<data name="ToolbarCameraModeButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADuoAAA7qAaOKY3EAAAEvSURBVDhP3dK/K0dRGMfxKxRJopCSEkLya/guUhQRmQwG
WfwIkYySgYUSKUKJlOK/MBoMFMofYLUIsfJ+f3NuF3+A8tRree5zP/fcc070f6oHT/jAPTqQj6WvXvCM
TZQgG3H58gFGcYVLtGIN15jBNDbwiGNUIg4pQx8GsQuHhrCDW8yjHyns4Q0DcCXpykM5bFzgHGPYxw1G
UIVMtMHfWUUj4nIg/KurGIYrSAZYOXDGlbhXcZlegUO8Yxzb+BlQAwNW0G0jVAYK0AwHtnCEOyQDZvGC
ObTbKIIvLMA9WIYDizhFMsDjfsAZptCA9JcdfoVBvryOSbgCe4HPTuCz+BQMKEUvJmCy96ET1ehCuAf2
5ZF+uwdZKEYtmuBGFSIXhtejBe5PHX7dxL+qKPoEppRHcXOtiDsAAAAASUVORK5CYII=
</value>
</data>
<metadata name="VSExtender.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>648, 19</value>
</metadata>
<data name="ToolbarObjectSpaceButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarObjectSpaceButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@ -259,14 +341,6 @@ ufo
7bHCx/miCf7qYJ1jjjYYx3Fm0nfDXfJWzhjMzuBweJJvr++b5K1dOQN7hP9AH0H96EvM83zh7q+2zsH1 7bHCx/miCf7qYJ1jjjYYx3Fm0nfDXfJWzhjMzuBweJJvr++b5K1dOQN7hP9AH0H96EvM83zh7q+2zsH1
L1H0fS+TJHEX+ZsBXDRobS/oRorjWB5/aqSXVkZRJKuqQnxtJEJNXCvjTu9D9kGOmhEvW5kwJiVb43wI L1H0fS+TJHEX+ZsBXDRobS/oRorjWB5/aqSXVkZRJKuqQnxtJEJNXCvjTu9D9kGOmhEvW5kwJiVb43wI
WBXYx9R1nV75RuyHKrrnzCcGjE1u9ZyD4BugoZigQ9xrngAAAABJRU5ErkJggg== WBXYx9R1nV75RuyHKrrnzCcGjE1u9ZyD4BugoZigQ9xrngAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarTransformSpaceButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB0SURBVDhP7ZNBCoAgEEXnSJ3BqxmetNpaMLhVv5DNRJS2
CxIeuvA9XSjtg5mHEILPxB6U7JyLxphmSkDK1o5x9dst87SUfTXwRsYsA+paT0BGDGsVOJ92hdz3Bz4f
wGPC48uu7w5IGd+gBlpRMgYCnRwyESUj3CsQkYNFDwAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="ToolbarSnapToGroundButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarSnapToGroundButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -295,100 +369,6 @@ ufo
EcMw2DzPDMEke9AsYBrHs10vN4I1QqImwwDcFyMjQGaBHr5Bo8nEoYCnCQTGzVeI4oj6fIi+KHgoPBhC EcMw2DzPDMEke9AsYBrHs10vN4I1QqImwwDcFyMjQGaBHr5Bo8nEoYCnCQTGzVeI4oj6fIi+KHgoPBhC
4knCjTww9vxfbIUQNDEyiGIZ8t6tW/k0vC/AOpuiueNOLwVkUeylvju9FJCg8E1vM/2PlTv5UoervVTJ 4knCjTww9vxfbIUQNDEyiGIZ8t6tW/k0vC/AOpuiueNOLwVkUeylvju9FJCg8E1vM/2PlTv5UoervVTJ
uQAAAABJRU5ErkJggg== uQAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarSnapButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACtSURBVDhPrZBBEsIgEAR5Gy/wFV55T/wHr+KgHuCKNsVY
ZI2JiU7VVIVlp7OL+1mllIr7cb8Ie++PQwQYITnnM24NWxoBgsQYm/l+gk699bMsRA4h1JTSPsg0Xert
em/mGwh3vW1Z7MvIABSWqXG3+iZHAEw1m4wD49oVANgVOL/VeSgeDAiX1mpWeKy9BIQiI+OxWQF77tG5
2Fc729BmeElf/3lNhORe+oecewDObEqX49RqCgAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarUndoButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEfSURBVDhPjVK7DgFBFN0/4A/4AvEJfkAi0ZLoNArR6hUq
tUgkElGJ1jYaDYVsI9Fq2EYyin2Ua864d9g1u/YkJ5nHOfcxcy2G53nVIAiEZBSGYdn3/TnviQJnuCPL
BzDf3aeoDNZaPFweo0J7EVnNmSLWOMMd9GR9AyaYIXQfT702kZKIWCUIwIJSd6XX9dE2sk9XRaz5HJWg
HbLHAzCn9pnbURklHQ6CdnBGdnMAsDXZKSF6lhkbqITvlIdhCvBthuZvAAO1WQhRlPv0FrKAIBCjIs7+
84hpkF9VS5qN32iCFHSSM4FAGLifQUpCltc3mZE5j3l+uNxiYzzeODA7f8um1xa96V6baaAc3JEsG/zq
PMaoKLeZQa+f46ss6wVeddKu0bn3NAAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarRedoButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEgSURBVDhPrZK9agJBFIXnDZJH8AkkLxIQbCP4AKls01tY
WS+CEEiRQmyzjY1NLGQbQbCyUZvAbLE/5TjfMHezrLsbhBy4MHPvPWfuz6gy8jzvpGk6z7JMWzPeND4b
G8o9SZInT/kFzvMl1m8fG/MweDeqP3PGGR/kcHs0L9PVrQgvQ+6OFgWxasQ+1wd3FhFPV4oSeUWSn8df
7jWMs/jLlVGRpyuFmgQh2HuEjyQsCHcFsUmgCHzvT8ZW1KNHRJraahSgbATwy2DrRKoCNy1orR+JSSUQ
qubIoDrE2lW1oW6Nd4tIvxBFBMHLT2z4hT6tHdLvf4hEk2VUiDBgv965T2sHG0Ck/IFeg7WbiWznT5DI
i/Kd7xpoGYhYsqknK3UFU4/RUE6VilMAAAAASUVORK5CYII=
</value>
</data>
<data name="ToolbarInfoWindowButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABSSURBVDhPtcxBCgAgCETRzub971Jt3BoGBpGhGS4eM6tf
EJF+zAAAhGyBVvuTa0A+r8YMeOUF5PNqzIBXXkA+r8YMeOUF5PNqzIDXEYhYgTikAQEeMEa6imiVAAAA
AElFTkSuQmCC
</value>
</data>
<data name="ToolbarProjectWindowButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPlVM9ixpRFJ2fkJ+wPyE/ISgqCEoQBBtBMjYi
jmunhSCMWO4iiLhBWCwEq1goSLYwItlCBG20MBZRSGLn7OJXefLOZWaza7JFLrx5M/fcc+59797Rntvp
dHp3OBxu7c//N0X+cjweQSHbRdGY8rVtjPulZVlvbPiPMXA8HqNUKoHBDFKEqTLUajUUi0XBut0ulN/a
7/dvbaqm2cFWKpWCy+XCaDSSoEqlgmQyiVwuh2w2i0QigVAohHQ6LbhKeiECKmOh3+/D7/eLQDwex3A4
hK7rKBQKqFaroFg+n0csFoPX60W9Xmeltyz9YrvdgtkJUICr1WphsVhgvV5jPp+j0WjANE0R9/l8CAQC
rAKaerR7vR6i0SjcbjeazSZms5lkYAWRSATlchmr1QqsknEej0eSOAJyxnA4jMlkgsFgIMT2pzYerEdZ
fKePGC/VqfJJIJPJIBgMioOA/kHH/df7J4FviyWMlCHYcrmUnRe52+2+a3yQ6CyCP3/8ws3NR3XzOdlJ
pqCTlTuPydZLF9hTe2AEdDLffb6TO3C+HQGSpQPn9rwCEpiV2c8F2Hab8tIIctpI4rkdAQpeXV0LpmIs
O/xv41FUwJSTyFs3zaIcwTAMdDodkqcvRvg1UyVebjYbi7PAweEMKPL1P3+i14wTqoT4B1pqf2+7z0zT
fgPQbDDZyZreTQAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarAddItemButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADpSURBVDhPjVIxEoJADOQpPsLCmp5f8ABL/II/wKGTT0jj
J2jUVm3RAihP9mRnYu4ymJmdySzZvYQkYQzD4CTA9X2/nfIOQO4LrYBos197IJ8E57ZtXZ7nHsjBjeO4
miXfQDEhDYjm1HhkWeaqqgL3240UauDbq3t7PO5PVxS7sJt/DQjdzeII2gAoy4NL09R/nwcJf+L1cguE
4DBGfazjBhIspBg5OBpHDUBSIEXaDPjLgIUWHzXAunShNkBNzKDDarAirMoyCNbIwFHI88XcfAkwD0kH
zlR2QwPzlGOhu1l81Qp2Y7+aJB877HaG+O29gAAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolbarDeleteItemButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFySURBVDhPhVI9S8RAEN0/4D+wsLKwtbKTg2CV1sI6YGth
cbb+ALE9DYgYg4XNWSh3CGIrggjh8NRSTyVFTMR8QMKYN7prTLL4YLLJZN6bmZ0RWZbR5OaK/Mcx5XlO
AM7w7ZV9cRxTFEWfJdZEGxCwPztFx4tzJemFpGDfXODTcRyyLIs8z6NS5CJJkpkf6jdKB12uWyxyvrpM
o6M9cuen+YTYcDBkM02TbNtGRcGfaoqioKoI7HZ3m9I05Xbeg5Dt+WlC3e5GsxqdAFrj/sNIicDq1Qhc
FkoHESLXW5v8Pjrrk+/7DQFYr7dDnU6HEwhcFggQQSVwynvApUbhhyLejx+4DefA+RUAGSKopIq7wQmd
riwpMkggQwTfSgCP0gKchmEoAsw9dJkks1b/KQEJfMBZDZKBOn+rAMZVD6wLIKZNIMBoMCKMSifQGKME
lgLLgSXBsqBvmQmmXaQ6sKbVaqSAdpXbUK/m36w6yGr0WYX4AtJHmpxbRwouAAAAAElFTkSuQmCC
</value>
</data>
<data name="ToolbarCopyButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACZSURBVDhPzZLLDYYgEIQpwZq4UwCtcLIDS7MQDj744YqM
WR8hu/mN0cRJJgac/WCi6jWllLrizHgoaigmC2FjTNZa77bWZu89ID3FZAGAoXGYdmPtnFtvQjFZHGCD
sICyyXYO4XcZIHae53ANgJf1aVvnW4DzAJ4wbnkLcHaMsaWxQ/8AFJP1CKD+CrDYuVYJSf8+3/kjUmoB
0WKNJAuziQ0AAAAASUVORK5CYII=
</value>
</data>
<data name="ToolbarPasteButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACKSURBVDhP7Y3LDYAgEEQpwVKsgSoojl4swSbUCwc0Aa7q
4BJN+IjGo5O8ZJndGVhKxpjWWts551aih0fre+0BLaVchRAezPB2NXSSV/gVwXGYPJiVUt6ns1ghCDjn
UQG86w3FToVgDcWCWS9Fvi/Ao0RVAcwUjwpyhzmf4n8BFApS5HZRwRuONGMbrIJ1JIN8O2QAAAAASUVO
RK5CYII=
</value> </value>
</data> </data>
<data name="ToolbarCameraPerspectiveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ToolbarCameraPerspectiveButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -426,15 +406,38 @@ ufo
QdQiTqrAWNICd7gPnUj+xBKaU9dxfhTkjwV/FxU+AbsiGnc46OYIAAAAAElFTkSuQmCC QdQiTqrAWNICd7gPnUj+xBKaU9dxfhTkjwV/FxU+AbsiGnc46OYIAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="ToolbarCameraModeButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="YmapsTextBox.Text" xml:space="preserve">
<value> <value>dt1_lod
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 hw1_lod
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEvSURBVDhP3dK/K0dRGMfxKxRJopCSEkLya/guUhQRmQwG cs1_lod
WfwIkYySgYUSKUKJlOK/MBoMFMofYLUIsfJ+f3NuF3+A8tRree5zP/fcc070f6oHT/jAPTqQj6WvXvCM cs1_lod2
TZQgG3H58gFGcYVLtGIN15jBNDbwiGNUIg4pQx8GsQuHhrCDW8yjHyns4Q0DcCXpykM5bFzgHGPYxw1G cs1_lod3
UIVMtMHfWUUj4nIg/KurGIYrSAZYOXDGlbhXcZlegUO8Yxzb+BlQAwNW0G0jVAYK0AwHtnCEOyQDZvGC cs2_lod
ObTbKIIvLMA9WIYDizhFMsDjfsAZptCA9JcdfoVBvryOSbgCe4HPTuCz+BQMKEUvJmCy96ET1ehCuAf2 cs2_lod2
5ZF+uwdZKEYtmuBGFSIXhtejBe5PHX7dxL+qKPoEppRHcXOtiDsAAAAASUVORK5CYII= cs3_lod
cs4_lod
cs5_lod
cs6_lod
ch1_lod
ch2_lod
ch2_lod2
ch2_lod3
ch2_lod4
ch3_lod
ss1_lod
sc1_lod
sp1_lod
sm_lod
id1_lod
id2_lod
bh1_lod
vb_lod
po1_lod
ap1_lod
kt1_lod
ufo_lod
ufo_eye
ufo
</value> </value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

View File

@ -294,7 +294,7 @@ namespace CodeWalker
this.SelDrawableTexturesTreeView.HideSelection = false; this.SelDrawableTexturesTreeView.HideSelection = false;
this.SelDrawableTexturesTreeView.Location = new System.Drawing.Point(0, 0); this.SelDrawableTexturesTreeView.Location = new System.Drawing.Point(0, 0);
this.SelDrawableTexturesTreeView.Name = "SelDrawableTexturesTreeView"; this.SelDrawableTexturesTreeView.Name = "SelDrawableTexturesTreeView";
this.SelDrawableTexturesTreeView.Size = new System.Drawing.Size(300, 454); this.SelDrawableTexturesTreeView.Size = new System.Drawing.Size(308, 454);
this.SelDrawableTexturesTreeView.TabIndex = 2; this.SelDrawableTexturesTreeView.TabIndex = 2;
this.SelDrawableTexturesTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.SelDrawableTexturesTreeView_AfterSelect); this.SelDrawableTexturesTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.SelDrawableTexturesTreeView_AfterSelect);
// //
@ -335,7 +335,7 @@ namespace CodeWalker
this.SelTextureDimensionsLabel.AutoSize = true; this.SelTextureDimensionsLabel.AutoSize = true;
this.SelTextureDimensionsLabel.Location = new System.Drawing.Point(334, 400); this.SelTextureDimensionsLabel.Location = new System.Drawing.Point(334, 400);
this.SelTextureDimensionsLabel.Name = "SelTextureDimensionsLabel"; this.SelTextureDimensionsLabel.Name = "SelTextureDimensionsLabel";
this.SelTextureDimensionsLabel.Size = new System.Drawing.Size(10, 13); this.SelTextureDimensionsLabel.Size = new System.Drawing.Size(11, 15);
this.SelTextureDimensionsLabel.TabIndex = 37; this.SelTextureDimensionsLabel.TabIndex = 37;
this.SelTextureDimensionsLabel.Text = "-"; this.SelTextureDimensionsLabel.Text = "-";
// //
@ -358,7 +358,7 @@ namespace CodeWalker
this.SelTextureMipLabel.AutoSize = true; this.SelTextureMipLabel.AutoSize = true;
this.SelTextureMipLabel.Location = new System.Drawing.Point(40, 400); this.SelTextureMipLabel.Location = new System.Drawing.Point(40, 400);
this.SelTextureMipLabel.Name = "SelTextureMipLabel"; this.SelTextureMipLabel.Name = "SelTextureMipLabel";
this.SelTextureMipLabel.Size = new System.Drawing.Size(13, 13); this.SelTextureMipLabel.Size = new System.Drawing.Size(14, 15);
this.SelTextureMipLabel.TabIndex = 35; this.SelTextureMipLabel.TabIndex = 35;
this.SelTextureMipLabel.Text = "0"; this.SelTextureMipLabel.Text = "0";
// //
@ -368,7 +368,7 @@ namespace CodeWalker
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(7, 400); this.label3.Location = new System.Drawing.Point(7, 400);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(27, 13); this.label3.Size = new System.Drawing.Size(31, 15);
this.label3.TabIndex = 34; this.label3.TabIndex = 34;
this.label3.Text = "Mip:"; this.label3.Text = "Mip:";
// //
@ -377,7 +377,7 @@ namespace CodeWalker
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(207, 9); this.label2.Location = new System.Drawing.Point(207, 9);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(57, 13); this.label2.Size = new System.Drawing.Size(64, 15);
this.label2.TabIndex = 33; this.label2.TabIndex = 33;
this.label2.Text = "Dictionary:"; this.label2.Text = "Dictionary:";
// //
@ -489,9 +489,9 @@ namespace CodeWalker
// //
this.MouseSelectCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.MouseSelectCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.MouseSelectCheckBox.AutoSize = true; this.MouseSelectCheckBox.AutoSize = true;
this.MouseSelectCheckBox.Location = new System.Drawing.Point(598, 14); this.MouseSelectCheckBox.Location = new System.Drawing.Point(580, 14);
this.MouseSelectCheckBox.Name = "MouseSelectCheckBox"; this.MouseSelectCheckBox.Name = "MouseSelectCheckBox";
this.MouseSelectCheckBox.Size = new System.Drawing.Size(143, 17); this.MouseSelectCheckBox.Size = new System.Drawing.Size(161, 19);
this.MouseSelectCheckBox.TabIndex = 26; this.MouseSelectCheckBox.TabIndex = 26;
this.MouseSelectCheckBox.Text = "Mouse select (right click)"; this.MouseSelectCheckBox.Text = "Mouse select (right click)";
this.MouseSelectCheckBox.UseVisualStyleBackColor = true; this.MouseSelectCheckBox.UseVisualStyleBackColor = true;
@ -511,7 +511,7 @@ namespace CodeWalker
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 15); this.label1.Location = new System.Drawing.Point(12, 15);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(38, 13); this.label1.Size = new System.Drawing.Size(44, 15);
this.label1.TabIndex = 30; this.label1.TabIndex = 30;
this.label1.Text = "Name:"; this.label1.Text = "Name:";
// //
@ -521,7 +521,7 @@ namespace CodeWalker
this.label25.AutoSize = true; this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(408, 15); this.label25.Location = new System.Drawing.Point(408, 15);
this.label25.Name = "label25"; this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(37, 13); this.label25.Size = new System.Drawing.Size(42, 15);
this.label25.TabIndex = 32; this.label25.TabIndex = 32;
this.label25.Text = "Mode:"; this.label25.Text = "Mode:";
// //