mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-29 02:12:54 +08:00
Implement bulk delete tool for grass instances (#161)
* Added new Project panel for bulk grass delete * Removed vs2015BlueTheme instance added unintentionally
This commit is contained in:
parent
cca75a00c5
commit
bacbef88f5
219
CodeWalker/Project/Panels/DeleteGrassPanel.Designer.cs
generated
Normal file
219
CodeWalker/Project/Panels/DeleteGrassPanel.Designer.cs
generated
Normal file
@ -0,0 +1,219 @@
|
||||
namespace CodeWalker.Project.Panels
|
||||
{
|
||||
partial class DeleteGrassPanel
|
||||
{
|
||||
/// <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()
|
||||
{
|
||||
this.brushModeGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.brushDeleteAnyRadio = new System.Windows.Forms.RadioButton();
|
||||
this.brushDeleteYmapRadio = new System.Windows.Forms.RadioButton();
|
||||
this.brushDisabledRadio = new System.Windows.Forms.RadioButton();
|
||||
this.brushSettingsGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.RadiusNumericUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.radiusLabel = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.brushDeleteBatchRadio = new System.Windows.Forms.RadioButton();
|
||||
this.currentYmapTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.brushDeleteProjectRadio = new System.Windows.Forms.RadioButton();
|
||||
this.brushModeGroupBox.SuspendLayout();
|
||||
this.brushSettingsGroupBox.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RadiusNumericUpDown)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// brushModeGroupBox
|
||||
//
|
||||
this.brushModeGroupBox.Controls.Add(this.brushDeleteProjectRadio);
|
||||
this.brushModeGroupBox.Controls.Add(this.brushDeleteBatchRadio);
|
||||
this.brushModeGroupBox.Controls.Add(this.brushDeleteAnyRadio);
|
||||
this.brushModeGroupBox.Controls.Add(this.brushDeleteYmapRadio);
|
||||
this.brushModeGroupBox.Controls.Add(this.brushDisabledRadio);
|
||||
this.brushModeGroupBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.brushModeGroupBox.Name = "brushModeGroupBox";
|
||||
this.brushModeGroupBox.Size = new System.Drawing.Size(187, 138);
|
||||
this.brushModeGroupBox.TabIndex = 70;
|
||||
this.brushModeGroupBox.TabStop = false;
|
||||
this.brushModeGroupBox.Text = "Delete Grass Brush Mode";
|
||||
//
|
||||
// brushDeleteAnyRadio
|
||||
//
|
||||
this.brushDeleteAnyRadio.AutoSize = true;
|
||||
this.brushDeleteAnyRadio.Location = new System.Drawing.Point(16, 109);
|
||||
this.brushDeleteAnyRadio.Name = "brushDeleteAnyRadio";
|
||||
this.brushDeleteAnyRadio.Size = new System.Drawing.Size(122, 17);
|
||||
this.brushDeleteAnyRadio.TabIndex = 4;
|
||||
this.brushDeleteAnyRadio.Text = "Delete In A&ny YMAP";
|
||||
this.brushDeleteAnyRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// brushDeleteYmapRadio
|
||||
//
|
||||
this.brushDeleteYmapRadio.AutoSize = true;
|
||||
this.brushDeleteYmapRadio.Location = new System.Drawing.Point(16, 65);
|
||||
this.brushDeleteYmapRadio.Name = "brushDeleteYmapRadio";
|
||||
this.brushDeleteYmapRadio.Size = new System.Drawing.Size(124, 17);
|
||||
this.brushDeleteYmapRadio.TabIndex = 3;
|
||||
this.brushDeleteYmapRadio.Text = "Delete In This &YMAP";
|
||||
this.brushDeleteYmapRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// brushDisabledRadio
|
||||
//
|
||||
this.brushDisabledRadio.AutoSize = true;
|
||||
this.brushDisabledRadio.Checked = true;
|
||||
this.brushDisabledRadio.Location = new System.Drawing.Point(16, 21);
|
||||
this.brushDisabledRadio.Name = "brushDisabledRadio";
|
||||
this.brushDisabledRadio.Size = new System.Drawing.Size(66, 17);
|
||||
this.brushDisabledRadio.TabIndex = 0;
|
||||
this.brushDisabledRadio.TabStop = true;
|
||||
this.brushDisabledRadio.Text = "&Disabled";
|
||||
this.brushDisabledRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// brushSettingsGroupBox
|
||||
//
|
||||
this.brushSettingsGroupBox.Controls.Add(this.RadiusNumericUpDown);
|
||||
this.brushSettingsGroupBox.Controls.Add(this.radiusLabel);
|
||||
this.brushSettingsGroupBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.brushSettingsGroupBox.Location = new System.Drawing.Point(221, 13);
|
||||
this.brushSettingsGroupBox.Name = "brushSettingsGroupBox";
|
||||
this.brushSettingsGroupBox.Size = new System.Drawing.Size(140, 59);
|
||||
this.brushSettingsGroupBox.TabIndex = 71;
|
||||
this.brushSettingsGroupBox.TabStop = false;
|
||||
this.brushSettingsGroupBox.Text = "Delete Brush Settings";
|
||||
//
|
||||
// RadiusNumericUpDown
|
||||
//
|
||||
this.RadiusNumericUpDown.DecimalPlaces = 1;
|
||||
this.RadiusNumericUpDown.Increment = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.RadiusNumericUpDown.Location = new System.Drawing.Point(52, 28);
|
||||
this.RadiusNumericUpDown.Name = "RadiusNumericUpDown";
|
||||
this.RadiusNumericUpDown.Size = new System.Drawing.Size(65, 20);
|
||||
this.RadiusNumericUpDown.TabIndex = 11;
|
||||
this.RadiusNumericUpDown.Value = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// radiusLabel
|
||||
//
|
||||
this.radiusLabel.AutoSize = true;
|
||||
this.radiusLabel.Location = new System.Drawing.Point(6, 30);
|
||||
this.radiusLabel.Name = "radiusLabel";
|
||||
this.radiusLabel.Size = new System.Drawing.Size(40, 13);
|
||||
this.radiusLabel.TabIndex = 10;
|
||||
this.radiusLabel.Text = "Radius";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Location = new System.Drawing.Point(12, 163);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(397, 48);
|
||||
this.label1.TabIndex = 72;
|
||||
this.label1.Text = "Hold CTRL to use delete brush. In \"Any YMAP\" mode new YMAPs will be automatically" +
|
||||
" added to the project.";
|
||||
//
|
||||
// brushDeleteBatchRadio
|
||||
//
|
||||
this.brushDeleteBatchRadio.AutoSize = true;
|
||||
this.brushDeleteBatchRadio.Location = new System.Drawing.Point(16, 43);
|
||||
this.brushDeleteBatchRadio.Name = "brushDeleteBatchRadio";
|
||||
this.brushDeleteBatchRadio.Size = new System.Drawing.Size(122, 17);
|
||||
this.brushDeleteBatchRadio.TabIndex = 5;
|
||||
this.brushDeleteBatchRadio.Text = "Delete In This &Batch";
|
||||
this.brushDeleteBatchRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// currentYmapTextBox
|
||||
//
|
||||
this.currentYmapTextBox.Enabled = false;
|
||||
this.currentYmapTextBox.Location = new System.Drawing.Point(221, 118);
|
||||
this.currentYmapTextBox.Name = "currentYmapTextBox";
|
||||
this.currentYmapTextBox.ReadOnly = true;
|
||||
this.currentYmapTextBox.Size = new System.Drawing.Size(188, 20);
|
||||
this.currentYmapTextBox.TabIndex = 73;
|
||||
this.currentYmapTextBox.Visible = false;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(218, 102);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(74, 13);
|
||||
this.label2.TabIndex = 74;
|
||||
this.label2.Text = "Current YMAP";
|
||||
this.label2.Visible = false;
|
||||
//
|
||||
// brushDeleteProjectRadio
|
||||
//
|
||||
this.brushDeleteProjectRadio.AutoSize = true;
|
||||
this.brushDeleteProjectRadio.Location = new System.Drawing.Point(16, 87);
|
||||
this.brushDeleteProjectRadio.Name = "brushDeleteProjectRadio";
|
||||
this.brushDeleteProjectRadio.Size = new System.Drawing.Size(158, 17);
|
||||
this.brushDeleteProjectRadio.TabIndex = 6;
|
||||
this.brushDeleteProjectRadio.Text = "Delete In Any &Project YMAP";
|
||||
this.brushDeleteProjectRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// DeleteGrassPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(430, 228);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.currentYmapTextBox);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.brushSettingsGroupBox);
|
||||
this.Controls.Add(this.brushModeGroupBox);
|
||||
this.Name = "DeleteGrassPanel";
|
||||
this.Text = "Delete Grass Instances";
|
||||
this.brushModeGroupBox.ResumeLayout(false);
|
||||
this.brushModeGroupBox.PerformLayout();
|
||||
this.brushSettingsGroupBox.ResumeLayout(false);
|
||||
this.brushSettingsGroupBox.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RadiusNumericUpDown)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox brushModeGroupBox;
|
||||
private System.Windows.Forms.RadioButton brushDeleteAnyRadio;
|
||||
private System.Windows.Forms.RadioButton brushDeleteYmapRadio;
|
||||
private System.Windows.Forms.RadioButton brushDisabledRadio;
|
||||
private System.Windows.Forms.GroupBox brushSettingsGroupBox;
|
||||
private System.Windows.Forms.NumericUpDown RadiusNumericUpDown;
|
||||
private System.Windows.Forms.Label radiusLabel;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.RadioButton brushDeleteBatchRadio;
|
||||
private System.Windows.Forms.TextBox currentYmapTextBox;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.RadioButton brushDeleteProjectRadio;
|
||||
}
|
||||
}
|
72
CodeWalker/Project/Panels/DeleteGrassPanel.cs
Normal file
72
CodeWalker/Project/Panels/DeleteGrassPanel.cs
Normal file
@ -0,0 +1,72 @@
|
||||
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;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace CodeWalker.Project.Panels
|
||||
{
|
||||
public partial class DeleteGrassPanel : ProjectPanel
|
||||
{
|
||||
internal enum DeleteGrassMode
|
||||
{
|
||||
None,
|
||||
Batch,
|
||||
Ymap,
|
||||
Project,
|
||||
Any
|
||||
}
|
||||
|
||||
public ProjectForm ProjectForm { get; set; }
|
||||
public ProjectFile CurrentProjectFile { get; set; }
|
||||
|
||||
public DeleteGrassPanel(ProjectForm projectForm)
|
||||
{
|
||||
ProjectForm = projectForm;
|
||||
InitializeComponent();
|
||||
|
||||
if (ProjectForm?.WorldForm == null)
|
||||
{
|
||||
//could happen in some other startup mode - world form is required for this..
|
||||
brushModeGroupBox.Enabled = false;
|
||||
}
|
||||
|
||||
this.DockStateChanged += onDockStateChanged;
|
||||
// currentYmapTextBox.DataBindings.Add("Text", ProjectForm, "CurrentYmapName", false, DataSourceUpdateMode.OnPropertyChanged);
|
||||
|
||||
}
|
||||
|
||||
private void onDockStateChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(DockState == DockState.Hidden)
|
||||
{
|
||||
brushDisabledRadio.Checked = true;
|
||||
brushDisabledRadio.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetProject(ProjectFile project)
|
||||
{
|
||||
CurrentProjectFile = project;
|
||||
}
|
||||
|
||||
internal DeleteGrassMode Mode
|
||||
{
|
||||
get
|
||||
{
|
||||
if (brushDeleteBatchRadio.Checked) return DeleteGrassMode.Batch;
|
||||
else if (brushDeleteYmapRadio.Checked) return DeleteGrassMode.Ymap;
|
||||
else if (brushDeleteProjectRadio.Checked) return DeleteGrassMode.Project;
|
||||
else if (brushDeleteAnyRadio.Checked) return DeleteGrassMode.Any;
|
||||
else return DeleteGrassMode.None;
|
||||
}
|
||||
}
|
||||
|
||||
internal float BrushRadius => (float)RadiusNumericUpDown.Value;
|
||||
}
|
||||
}
|
120
CodeWalker/Project/Panels/DeleteGrassPanel.resx
Normal file
120
CodeWalker/Project/Panels/DeleteGrassPanel.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
||||
</root>
|
@ -77,6 +77,8 @@
|
||||
this.OptmizationThresholdNumericUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.BrushModeCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.brushModeGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.GrassBatchTab.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
@ -92,6 +94,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.DensityNumericUpDown)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RadiusNumericUpDown)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.OptmizationThresholdNumericUpDown)).BeginInit();
|
||||
this.brushModeGroupBox.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControl1
|
||||
@ -101,7 +104,7 @@
|
||||
this.tabControl1.Location = new System.Drawing.Point(12, 65);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(486, 181);
|
||||
this.tabControl1.Size = new System.Drawing.Size(525, 214);
|
||||
this.tabControl1.TabIndex = 37;
|
||||
//
|
||||
// GrassBatchTab
|
||||
@ -110,7 +113,7 @@
|
||||
this.GrassBatchTab.Location = new System.Drawing.Point(4, 22);
|
||||
this.GrassBatchTab.Name = "GrassBatchTab";
|
||||
this.GrassBatchTab.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.GrassBatchTab.Size = new System.Drawing.Size(478, 155);
|
||||
this.GrassBatchTab.Size = new System.Drawing.Size(517, 183);
|
||||
this.GrassBatchTab.TabIndex = 0;
|
||||
this.GrassBatchTab.Text = "Grass Batch";
|
||||
this.GrassBatchTab.UseVisualStyleBackColor = true;
|
||||
@ -130,7 +133,7 @@
|
||||
this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 6);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(460, 143);
|
||||
this.groupBox1.Size = new System.Drawing.Size(460, 135);
|
||||
this.groupBox1.TabIndex = 42;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Batch";
|
||||
@ -250,12 +253,13 @@
|
||||
//
|
||||
// BrushTab
|
||||
//
|
||||
this.BrushTab.Controls.Add(this.brushModeGroupBox);
|
||||
this.BrushTab.Controls.Add(this.groupBox2);
|
||||
this.BrushTab.Controls.Add(this.brushSettingsGroupBox);
|
||||
this.BrushTab.Location = new System.Drawing.Point(4, 22);
|
||||
this.BrushTab.Name = "BrushTab";
|
||||
this.BrushTab.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.BrushTab.Size = new System.Drawing.Size(478, 155);
|
||||
this.BrushTab.Size = new System.Drawing.Size(517, 188);
|
||||
this.BrushTab.TabIndex = 1;
|
||||
this.BrushTab.Text = " Brush";
|
||||
this.BrushTab.UseVisualStyleBackColor = true;
|
||||
@ -272,9 +276,9 @@
|
||||
this.groupBox2.Controls.Add(this.label3);
|
||||
this.groupBox2.Controls.Add(this.RandomizeScaleCheckBox);
|
||||
this.groupBox2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.groupBox2.Location = new System.Drawing.Point(191, 3);
|
||||
this.groupBox2.Location = new System.Drawing.Point(265, 6);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(281, 146);
|
||||
this.groupBox2.Size = new System.Drawing.Size(246, 176);
|
||||
this.groupBox2.TabIndex = 39;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Instance Settings";
|
||||
@ -384,23 +388,23 @@
|
||||
this.brushSettingsGroupBox.Controls.Add(this.label5);
|
||||
this.brushSettingsGroupBox.Controls.Add(this.radiusLabel);
|
||||
this.brushSettingsGroupBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.brushSettingsGroupBox.Location = new System.Drawing.Point(8, 3);
|
||||
this.brushSettingsGroupBox.Location = new System.Drawing.Point(11, 6);
|
||||
this.brushSettingsGroupBox.Name = "brushSettingsGroupBox";
|
||||
this.brushSettingsGroupBox.Size = new System.Drawing.Size(177, 146);
|
||||
this.brushSettingsGroupBox.Size = new System.Drawing.Size(246, 71);
|
||||
this.brushSettingsGroupBox.TabIndex = 38;
|
||||
this.brushSettingsGroupBox.TabStop = false;
|
||||
this.brushSettingsGroupBox.Text = "Brush Settings";
|
||||
//
|
||||
// DensityNumericUpDown
|
||||
//
|
||||
this.DensityNumericUpDown.Location = new System.Drawing.Point(76, 57);
|
||||
this.DensityNumericUpDown.Location = new System.Drawing.Point(187, 28);
|
||||
this.DensityNumericUpDown.Maximum = new decimal(new int[] {
|
||||
128,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.DensityNumericUpDown.Name = "DensityNumericUpDown";
|
||||
this.DensityNumericUpDown.Size = new System.Drawing.Size(84, 20);
|
||||
this.DensityNumericUpDown.Size = new System.Drawing.Size(53, 20);
|
||||
this.DensityNumericUpDown.TabIndex = 20;
|
||||
this.DensityNumericUpDown.Value = new decimal(new int[] {
|
||||
28,
|
||||
@ -410,15 +414,15 @@
|
||||
//
|
||||
// RadiusNumericUpDown
|
||||
//
|
||||
this.RadiusNumericUpDown.DecimalPlaces = 2;
|
||||
this.RadiusNumericUpDown.DecimalPlaces = 1;
|
||||
this.RadiusNumericUpDown.Increment = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.RadiusNumericUpDown.Location = new System.Drawing.Point(76, 31);
|
||||
65536});
|
||||
this.RadiusNumericUpDown.Location = new System.Drawing.Point(52, 28);
|
||||
this.RadiusNumericUpDown.Name = "RadiusNumericUpDown";
|
||||
this.RadiusNumericUpDown.Size = new System.Drawing.Size(84, 20);
|
||||
this.RadiusNumericUpDown.Size = new System.Drawing.Size(65, 20);
|
||||
this.RadiusNumericUpDown.TabIndex = 11;
|
||||
this.RadiusNumericUpDown.Value = new decimal(new int[] {
|
||||
5,
|
||||
@ -430,7 +434,7 @@
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(21, 59);
|
||||
this.label5.Location = new System.Drawing.Point(141, 30);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(42, 13);
|
||||
this.label5.TabIndex = 19;
|
||||
@ -439,7 +443,7 @@
|
||||
// radiusLabel
|
||||
//
|
||||
this.radiusLabel.AutoSize = true;
|
||||
this.radiusLabel.Location = new System.Drawing.Point(21, 33);
|
||||
this.radiusLabel.Location = new System.Drawing.Point(6, 30);
|
||||
this.radiusLabel.Name = "radiusLabel";
|
||||
this.radiusLabel.Size = new System.Drawing.Size(40, 13);
|
||||
this.radiusLabel.TabIndex = 10;
|
||||
@ -447,7 +451,7 @@
|
||||
//
|
||||
// OptimizeBatchButton
|
||||
//
|
||||
this.OptimizeBatchButton.Location = new System.Drawing.Point(16, 280);
|
||||
this.OptimizeBatchButton.Location = new System.Drawing.Point(16, 296);
|
||||
this.OptimizeBatchButton.Name = "OptimizeBatchButton";
|
||||
this.OptimizeBatchButton.Size = new System.Drawing.Size(108, 24);
|
||||
this.OptimizeBatchButton.TabIndex = 70;
|
||||
@ -461,16 +465,16 @@
|
||||
//
|
||||
this.ExtentsMinTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ExtentsMinTextBox.Location = new System.Drawing.Point(84, 319);
|
||||
this.ExtentsMinTextBox.Location = new System.Drawing.Point(84, 335);
|
||||
this.ExtentsMinTextBox.Name = "ExtentsMinTextBox";
|
||||
this.ExtentsMinTextBox.ReadOnly = true;
|
||||
this.ExtentsMinTextBox.Size = new System.Drawing.Size(380, 20);
|
||||
this.ExtentsMinTextBox.Size = new System.Drawing.Size(449, 20);
|
||||
this.ExtentsMinTextBox.TabIndex = 55;
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(13, 349);
|
||||
this.label14.Location = new System.Drawing.Point(13, 365);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(68, 13);
|
||||
this.label14.TabIndex = 54;
|
||||
@ -480,16 +484,16 @@
|
||||
//
|
||||
this.ExtentsMaxTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ExtentsMaxTextBox.Location = new System.Drawing.Point(84, 345);
|
||||
this.ExtentsMaxTextBox.Location = new System.Drawing.Point(84, 361);
|
||||
this.ExtentsMaxTextBox.Name = "ExtentsMaxTextBox";
|
||||
this.ExtentsMaxTextBox.ReadOnly = true;
|
||||
this.ExtentsMaxTextBox.Size = new System.Drawing.Size(380, 20);
|
||||
this.ExtentsMaxTextBox.Size = new System.Drawing.Size(449, 20);
|
||||
this.ExtentsMaxTextBox.TabIndex = 53;
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(13, 322);
|
||||
this.label13.Location = new System.Drawing.Point(13, 338);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(65, 13);
|
||||
this.label13.TabIndex = 52;
|
||||
@ -498,7 +502,7 @@
|
||||
// GrassDeleteButton
|
||||
//
|
||||
this.GrassDeleteButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.GrassDeleteButton.Location = new System.Drawing.Point(257, 397);
|
||||
this.GrassDeleteButton.Location = new System.Drawing.Point(276, 397);
|
||||
this.GrassDeleteButton.Name = "GrassDeleteButton";
|
||||
this.GrassDeleteButton.Size = new System.Drawing.Size(95, 23);
|
||||
this.GrassDeleteButton.TabIndex = 51;
|
||||
@ -509,7 +513,7 @@
|
||||
// GrassAddToProjectButton
|
||||
//
|
||||
this.GrassAddToProjectButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.GrassAddToProjectButton.Location = new System.Drawing.Point(159, 397);
|
||||
this.GrassAddToProjectButton.Location = new System.Drawing.Point(178, 397);
|
||||
this.GrassAddToProjectButton.Name = "GrassAddToProjectButton";
|
||||
this.GrassAddToProjectButton.Size = new System.Drawing.Size(95, 23);
|
||||
this.GrassAddToProjectButton.TabIndex = 50;
|
||||
@ -550,7 +554,7 @@
|
||||
this.PositionTextBox.Location = new System.Drawing.Point(66, 39);
|
||||
this.PositionTextBox.Name = "PositionTextBox";
|
||||
this.PositionTextBox.ReadOnly = true;
|
||||
this.PositionTextBox.Size = new System.Drawing.Size(275, 20);
|
||||
this.PositionTextBox.Size = new System.Drawing.Size(314, 20);
|
||||
this.PositionTextBox.TabIndex = 58;
|
||||
//
|
||||
// label1
|
||||
@ -565,7 +569,7 @@
|
||||
// GrassGoToButton
|
||||
//
|
||||
this.GrassGoToButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.GrassGoToButton.Location = new System.Drawing.Point(347, 36);
|
||||
this.GrassGoToButton.Location = new System.Drawing.Point(386, 36);
|
||||
this.GrassGoToButton.Name = "GrassGoToButton";
|
||||
this.GrassGoToButton.Size = new System.Drawing.Size(56, 23);
|
||||
this.GrassGoToButton.TabIndex = 56;
|
||||
@ -576,7 +580,7 @@
|
||||
// label17
|
||||
//
|
||||
this.label17.AutoSize = true;
|
||||
this.label17.Location = new System.Drawing.Point(130, 286);
|
||||
this.label17.Location = new System.Drawing.Point(130, 302);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(54, 13);
|
||||
this.label17.TabIndex = 71;
|
||||
@ -584,7 +588,7 @@
|
||||
//
|
||||
// OptmizationThresholdNumericUpDown
|
||||
//
|
||||
this.OptmizationThresholdNumericUpDown.Location = new System.Drawing.Point(190, 284);
|
||||
this.OptmizationThresholdNumericUpDown.Location = new System.Drawing.Point(190, 300);
|
||||
this.OptmizationThresholdNumericUpDown.Maximum = new decimal(new int[] {
|
||||
999999,
|
||||
0,
|
||||
@ -602,7 +606,7 @@
|
||||
// BrushModeCheckBox
|
||||
//
|
||||
this.BrushModeCheckBox.AutoSize = true;
|
||||
this.BrushModeCheckBox.Location = new System.Drawing.Point(16, 252);
|
||||
this.BrushModeCheckBox.Location = new System.Drawing.Point(12, 25);
|
||||
this.BrushModeCheckBox.Name = "BrushModeCheckBox";
|
||||
this.BrushModeCheckBox.Size = new System.Drawing.Size(83, 17);
|
||||
this.BrushModeCheckBox.TabIndex = 68;
|
||||
@ -619,17 +623,36 @@
|
||||
this.label8.TabIndex = 72;
|
||||
this.label8.Text = ".ydr";
|
||||
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// brushModeGroupBox
|
||||
//
|
||||
this.brushModeGroupBox.Controls.Add(this.label16);
|
||||
this.brushModeGroupBox.Controls.Add(this.BrushModeCheckBox);
|
||||
this.brushModeGroupBox.Location = new System.Drawing.Point(8, 83);
|
||||
this.brushModeGroupBox.Name = "brushModeGroupBox";
|
||||
this.brushModeGroupBox.Size = new System.Drawing.Size(249, 99);
|
||||
this.brushModeGroupBox.TabIndex = 69;
|
||||
this.brushModeGroupBox.TabStop = false;
|
||||
this.brushModeGroupBox.Text = "Brush Mode";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.Location = new System.Drawing.Point(9, 49);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(231, 40);
|
||||
this.label16.TabIndex = 69;
|
||||
this.label16.Text = "Hold CTRL to paint instances in this batch. Hold CTRL+SHIFT to delete in this bat" +
|
||||
"ch. Open Tools menu for bulk delete option.";
|
||||
//
|
||||
// EditYmapGrassPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(510, 443);
|
||||
this.ClientSize = new System.Drawing.Size(549, 443);
|
||||
this.Controls.Add(this.label8);
|
||||
this.Controls.Add(this.label17);
|
||||
this.Controls.Add(this.OptmizationThresholdNumericUpDown);
|
||||
this.Controls.Add(this.OptimizeBatchButton);
|
||||
this.Controls.Add(this.BrushModeCheckBox);
|
||||
this.Controls.Add(this.HashLabel);
|
||||
this.Controls.Add(this.ExtentsMinTextBox);
|
||||
this.Controls.Add(this.ArchetypeNameTextBox);
|
||||
@ -664,6 +687,8 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.DensityNumericUpDown)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.RadiusNumericUpDown)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.OptmizationThresholdNumericUpDown)).EndInit();
|
||||
this.brushModeGroupBox.ResumeLayout(false);
|
||||
this.brushModeGroupBox.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@ -718,5 +743,7 @@
|
||||
private System.Windows.Forms.Button OptimizeBatchButton;
|
||||
private System.Windows.Forms.CheckBox BrushModeCheckBox;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.GroupBox brushModeGroupBox;
|
||||
private System.Windows.Forms.Label label16;
|
||||
}
|
||||
}
|
@ -9,10 +9,8 @@ using SharpDX;
|
||||
// - COMPLETED -- Optimization feature.
|
||||
// - COMPLETED -- Remove grass instances using CTRL + SHIFT + LMB
|
||||
|
||||
// - Better gizmo for grass brush (like a circle with a little line in the middle sticking upwards)
|
||||
// - Maybe some kind of auto coloring system? I've noticed that mostly all grass in GTA inherits it's color from the surface it's on.
|
||||
// - Grass area fill (generate grass on ydr based on colision materials?)
|
||||
// - Need to have a way to erase instances from other batches in the current batches ymap.
|
||||
// if we optimize our instances, we'd have to go through each batch to erase, this is very monotonous.
|
||||
|
||||
// BUG
|
||||
@ -265,27 +263,6 @@ namespace CodeWalker.Project.Panels
|
||||
BatchChanged();
|
||||
}
|
||||
|
||||
public void EraseInstancesAtMouse(SpaceRayIntersectResult mouseRay)
|
||||
{
|
||||
var wf = ProjectForm.WorldForm;
|
||||
if (wf == null) return;
|
||||
var changed = false;
|
||||
lock (wf.RenderSyncRoot)
|
||||
{
|
||||
if (CurrentBatch.EraseInstancesAtMouse(
|
||||
CurrentBatch,
|
||||
mouseRay,
|
||||
(float) RadiusNumericUpDown.Value
|
||||
))
|
||||
{
|
||||
wf.UpdateGrassBatchGraphics(CurrentBatch);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (changed) BatchChanged();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Privates
|
||||
@ -296,7 +273,7 @@ namespace CodeWalker.Project.Panels
|
||||
return res;
|
||||
}
|
||||
|
||||
private void BatchChanged()
|
||||
internal void BatchChanged()
|
||||
{
|
||||
UpdateControls();
|
||||
CurrentBatch.UpdateInstanceCount();
|
||||
|
402
CodeWalker/Project/ProjectForm.Designer.cs
generated
402
CodeWalker/Project/ProjectForm.Designer.cs
generated
@ -69,6 +69,14 @@
|
||||
this.ViewThemeBlueMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ViewThemeLightMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ViewThemeDarkMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsManifestGeneratorMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsLODLightsGeneratorMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsNavMeshGeneratorMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.ToolsImportMenyooXmlMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator31 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.deleteGrassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YmapMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YmapNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
||||
@ -113,6 +121,22 @@
|
||||
this.toolStripSeparator26 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YbnAddToProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YbnRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YdrMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YdrNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YdrRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YddMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YddNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YddRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YftMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YftNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator30 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YftRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YtdMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YtdNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator29 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YtdRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YndMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YndNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();
|
||||
@ -158,12 +182,6 @@
|
||||
this.toolStripSeparator24 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.AudioAddToProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.AudioRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsManifestGeneratorMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsLODLightsGeneratorMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsNavMeshGeneratorMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.ToolsImportMenyooXmlMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.OptionsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.OptionsRenderGtavMapMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.OptionsRenderProjectItemsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@ -195,22 +213,6 @@
|
||||
this.ToolbarSaveAllButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.YdrMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YddMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YftMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YtdMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YdrNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YddNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YftNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YtdNameMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator29 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripSeparator30 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.YdrRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YddRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YftRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.YtdRemoveFromProjectMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.MainMenu.SuspendLayout();
|
||||
this.MainToolbar.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
@ -221,6 +223,7 @@
|
||||
this.FileMenu,
|
||||
this.EditMenu,
|
||||
this.ViewMenu,
|
||||
this.ToolsMenu,
|
||||
this.YmapMenu,
|
||||
this.YtypMenu,
|
||||
this.YbnMenu,
|
||||
@ -233,7 +236,6 @@
|
||||
this.TrainsMenu,
|
||||
this.ScenarioMenu,
|
||||
this.AudioMenu,
|
||||
this.ToolsMenu,
|
||||
this.OptionsMenu});
|
||||
this.MainMenu.Location = new System.Drawing.Point(0, 0);
|
||||
this.MainMenu.Name = "MainMenu";
|
||||
@ -547,6 +549,65 @@
|
||||
this.ViewThemeDarkMenu.Text = "Dark";
|
||||
this.ViewThemeDarkMenu.Click += new System.EventHandler(this.ViewThemeDarkMenu_Click);
|
||||
//
|
||||
// ToolsMenu
|
||||
//
|
||||
this.ToolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ToolsManifestGeneratorMenu,
|
||||
this.ToolsLODLightsGeneratorMenu,
|
||||
this.ToolsNavMeshGeneratorMenu,
|
||||
this.toolStripSeparator2,
|
||||
this.ToolsImportMenyooXmlMenu,
|
||||
this.toolStripSeparator31,
|
||||
this.deleteGrassToolStripMenuItem});
|
||||
this.ToolsMenu.Name = "ToolsMenu";
|
||||
this.ToolsMenu.Size = new System.Drawing.Size(46, 20);
|
||||
this.ToolsMenu.Text = "Tools";
|
||||
//
|
||||
// ToolsManifestGeneratorMenu
|
||||
//
|
||||
this.ToolsManifestGeneratorMenu.Name = "ToolsManifestGeneratorMenu";
|
||||
this.ToolsManifestGeneratorMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsManifestGeneratorMenu.Text = "Manifest Generator...";
|
||||
this.ToolsManifestGeneratorMenu.Click += new System.EventHandler(this.ToolsManifestGeneratorMenu_Click);
|
||||
//
|
||||
// ToolsLODLightsGeneratorMenu
|
||||
//
|
||||
this.ToolsLODLightsGeneratorMenu.Name = "ToolsLODLightsGeneratorMenu";
|
||||
this.ToolsLODLightsGeneratorMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsLODLightsGeneratorMenu.Text = "LOD Lights Generator...";
|
||||
this.ToolsLODLightsGeneratorMenu.Click += new System.EventHandler(this.ToolsLODLightsGeneratorMenu_Click);
|
||||
//
|
||||
// ToolsNavMeshGeneratorMenu
|
||||
//
|
||||
this.ToolsNavMeshGeneratorMenu.Name = "ToolsNavMeshGeneratorMenu";
|
||||
this.ToolsNavMeshGeneratorMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsNavMeshGeneratorMenu.Text = "Nav Mesh Generator...";
|
||||
this.ToolsNavMeshGeneratorMenu.Click += new System.EventHandler(this.ToolsNavMeshGeneratorMenu_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(193, 6);
|
||||
//
|
||||
// ToolsImportMenyooXmlMenu
|
||||
//
|
||||
this.ToolsImportMenyooXmlMenu.Name = "ToolsImportMenyooXmlMenu";
|
||||
this.ToolsImportMenyooXmlMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsImportMenyooXmlMenu.Text = "Import Menyoo XML...";
|
||||
this.ToolsImportMenyooXmlMenu.Click += new System.EventHandler(this.ToolsImportMenyooXmlMenu_Click);
|
||||
//
|
||||
// toolStripSeparator31
|
||||
//
|
||||
this.toolStripSeparator31.Name = "toolStripSeparator31";
|
||||
this.toolStripSeparator31.Size = new System.Drawing.Size(193, 6);
|
||||
//
|
||||
// deleteGrassToolStripMenuItem
|
||||
//
|
||||
this.deleteGrassToolStripMenuItem.Name = "deleteGrassToolStripMenuItem";
|
||||
this.deleteGrassToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
|
||||
this.deleteGrassToolStripMenuItem.Text = "Delete Grass...";
|
||||
this.deleteGrassToolStripMenuItem.Click += new System.EventHandler(this.ToolsDeleteGrassMenu_Click);
|
||||
//
|
||||
// YmapMenu
|
||||
//
|
||||
this.YmapMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
@ -901,6 +962,130 @@
|
||||
this.YbnRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YbnRemoveFromProjectMenu.Click += new System.EventHandler(this.YbnRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YdrMenu
|
||||
//
|
||||
this.YdrMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YdrNameMenu,
|
||||
this.toolStripSeparator6,
|
||||
this.YdrRemoveFromProjectMenu});
|
||||
this.YdrMenu.Name = "YdrMenu";
|
||||
this.YdrMenu.Size = new System.Drawing.Size(36, 20);
|
||||
this.YdrMenu.Text = "Ydr";
|
||||
this.YdrMenu.Visible = false;
|
||||
//
|
||||
// YdrNameMenu
|
||||
//
|
||||
this.YdrNameMenu.Enabled = false;
|
||||
this.YdrNameMenu.Name = "YdrNameMenu";
|
||||
this.YdrNameMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YdrNameMenu.Text = "(No .ydr file selected)";
|
||||
//
|
||||
// toolStripSeparator6
|
||||
//
|
||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||
this.toolStripSeparator6.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// YdrRemoveFromProjectMenu
|
||||
//
|
||||
this.YdrRemoveFromProjectMenu.Enabled = false;
|
||||
this.YdrRemoveFromProjectMenu.Name = "YdrRemoveFromProjectMenu";
|
||||
this.YdrRemoveFromProjectMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YdrRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YdrRemoveFromProjectMenu.Click += new System.EventHandler(this.YdrRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YddMenu
|
||||
//
|
||||
this.YddMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YddNameMenu,
|
||||
this.toolStripSeparator9,
|
||||
this.YddRemoveFromProjectMenu});
|
||||
this.YddMenu.Name = "YddMenu";
|
||||
this.YddMenu.Size = new System.Drawing.Size(39, 20);
|
||||
this.YddMenu.Text = "Ydd";
|
||||
this.YddMenu.Visible = false;
|
||||
//
|
||||
// YddNameMenu
|
||||
//
|
||||
this.YddNameMenu.Enabled = false;
|
||||
this.YddNameMenu.Name = "YddNameMenu";
|
||||
this.YddNameMenu.Size = new System.Drawing.Size(189, 22);
|
||||
this.YddNameMenu.Text = "(No .ydd file selected)";
|
||||
//
|
||||
// toolStripSeparator9
|
||||
//
|
||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
||||
this.toolStripSeparator9.Size = new System.Drawing.Size(186, 6);
|
||||
//
|
||||
// YddRemoveFromProjectMenu
|
||||
//
|
||||
this.YddRemoveFromProjectMenu.Enabled = false;
|
||||
this.YddRemoveFromProjectMenu.Name = "YddRemoveFromProjectMenu";
|
||||
this.YddRemoveFromProjectMenu.Size = new System.Drawing.Size(189, 22);
|
||||
this.YddRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YddRemoveFromProjectMenu.Click += new System.EventHandler(this.YddRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YftMenu
|
||||
//
|
||||
this.YftMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YftNameMenu,
|
||||
this.toolStripSeparator30,
|
||||
this.YftRemoveFromProjectMenu});
|
||||
this.YftMenu.Name = "YftMenu";
|
||||
this.YftMenu.Size = new System.Drawing.Size(34, 20);
|
||||
this.YftMenu.Text = "Yft";
|
||||
this.YftMenu.Visible = false;
|
||||
//
|
||||
// YftNameMenu
|
||||
//
|
||||
this.YftNameMenu.Enabled = false;
|
||||
this.YftNameMenu.Name = "YftNameMenu";
|
||||
this.YftNameMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YftNameMenu.Text = "(No .yft file selected)";
|
||||
//
|
||||
// toolStripSeparator30
|
||||
//
|
||||
this.toolStripSeparator30.Name = "toolStripSeparator30";
|
||||
this.toolStripSeparator30.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// YftRemoveFromProjectMenu
|
||||
//
|
||||
this.YftRemoveFromProjectMenu.Enabled = false;
|
||||
this.YftRemoveFromProjectMenu.Name = "YftRemoveFromProjectMenu";
|
||||
this.YftRemoveFromProjectMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YftRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YftRemoveFromProjectMenu.Click += new System.EventHandler(this.YftRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YtdMenu
|
||||
//
|
||||
this.YtdMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YtdNameMenu,
|
||||
this.toolStripSeparator29,
|
||||
this.YtdRemoveFromProjectMenu});
|
||||
this.YtdMenu.Name = "YtdMenu";
|
||||
this.YtdMenu.Size = new System.Drawing.Size(37, 20);
|
||||
this.YtdMenu.Text = "Ytd";
|
||||
this.YtdMenu.Visible = false;
|
||||
//
|
||||
// YtdNameMenu
|
||||
//
|
||||
this.YtdNameMenu.Enabled = false;
|
||||
this.YtdNameMenu.Name = "YtdNameMenu";
|
||||
this.YtdNameMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YtdNameMenu.Text = "(No .ytd file selected)";
|
||||
//
|
||||
// toolStripSeparator29
|
||||
//
|
||||
this.toolStripSeparator29.Name = "toolStripSeparator29";
|
||||
this.toolStripSeparator29.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// YtdRemoveFromProjectMenu
|
||||
//
|
||||
this.YtdRemoveFromProjectMenu.Enabled = false;
|
||||
this.YtdRemoveFromProjectMenu.Name = "YtdRemoveFromProjectMenu";
|
||||
this.YtdRemoveFromProjectMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YtdRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YtdRemoveFromProjectMenu.Click += new System.EventHandler(this.YtdRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YndMenu
|
||||
//
|
||||
this.YndMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
@ -1266,51 +1451,6 @@
|
||||
this.AudioRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.AudioRemoveFromProjectMenu.Click += new System.EventHandler(this.AudioRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// ToolsMenu
|
||||
//
|
||||
this.ToolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ToolsManifestGeneratorMenu,
|
||||
this.ToolsLODLightsGeneratorMenu,
|
||||
this.ToolsNavMeshGeneratorMenu,
|
||||
this.toolStripSeparator2,
|
||||
this.ToolsImportMenyooXmlMenu});
|
||||
this.ToolsMenu.Name = "ToolsMenu";
|
||||
this.ToolsMenu.Size = new System.Drawing.Size(46, 20);
|
||||
this.ToolsMenu.Text = "Tools";
|
||||
//
|
||||
// ToolsManifestGeneratorMenu
|
||||
//
|
||||
this.ToolsManifestGeneratorMenu.Name = "ToolsManifestGeneratorMenu";
|
||||
this.ToolsManifestGeneratorMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsManifestGeneratorMenu.Text = "Manifest Generator...";
|
||||
this.ToolsManifestGeneratorMenu.Click += new System.EventHandler(this.ToolsManifestGeneratorMenu_Click);
|
||||
//
|
||||
// ToolsLODLightsGeneratorMenu
|
||||
//
|
||||
this.ToolsLODLightsGeneratorMenu.Name = "ToolsLODLightsGeneratorMenu";
|
||||
this.ToolsLODLightsGeneratorMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsLODLightsGeneratorMenu.Text = "LOD Lights Generator...";
|
||||
this.ToolsLODLightsGeneratorMenu.Click += new System.EventHandler(this.ToolsLODLightsGeneratorMenu_Click);
|
||||
//
|
||||
// ToolsNavMeshGeneratorMenu
|
||||
//
|
||||
this.ToolsNavMeshGeneratorMenu.Name = "ToolsNavMeshGeneratorMenu";
|
||||
this.ToolsNavMeshGeneratorMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsNavMeshGeneratorMenu.Text = "Nav Mesh Generator...";
|
||||
this.ToolsNavMeshGeneratorMenu.Click += new System.EventHandler(this.ToolsNavMeshGeneratorMenu_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(193, 6);
|
||||
//
|
||||
// ToolsImportMenyooXmlMenu
|
||||
//
|
||||
this.ToolsImportMenyooXmlMenu.Name = "ToolsImportMenyooXmlMenu";
|
||||
this.ToolsImportMenyooXmlMenu.Size = new System.Drawing.Size(196, 22);
|
||||
this.ToolsImportMenyooXmlMenu.Text = "Import Menyoo XML...";
|
||||
this.ToolsImportMenyooXmlMenu.Click += new System.EventHandler(this.ToolsImportMenyooXmlMenu_Click);
|
||||
//
|
||||
// OptionsMenu
|
||||
//
|
||||
this.OptionsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
@ -1558,130 +1698,6 @@
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// YdrMenu
|
||||
//
|
||||
this.YdrMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YdrNameMenu,
|
||||
this.toolStripSeparator6,
|
||||
this.YdrRemoveFromProjectMenu});
|
||||
this.YdrMenu.Name = "YdrMenu";
|
||||
this.YdrMenu.Size = new System.Drawing.Size(36, 20);
|
||||
this.YdrMenu.Text = "Ydr";
|
||||
this.YdrMenu.Visible = false;
|
||||
//
|
||||
// YddMenu
|
||||
//
|
||||
this.YddMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YddNameMenu,
|
||||
this.toolStripSeparator9,
|
||||
this.YddRemoveFromProjectMenu});
|
||||
this.YddMenu.Name = "YddMenu";
|
||||
this.YddMenu.Size = new System.Drawing.Size(39, 20);
|
||||
this.YddMenu.Text = "Ydd";
|
||||
this.YddMenu.Visible = false;
|
||||
//
|
||||
// YftMenu
|
||||
//
|
||||
this.YftMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YftNameMenu,
|
||||
this.toolStripSeparator30,
|
||||
this.YftRemoveFromProjectMenu});
|
||||
this.YftMenu.Name = "YftMenu";
|
||||
this.YftMenu.Size = new System.Drawing.Size(34, 20);
|
||||
this.YftMenu.Text = "Yft";
|
||||
this.YftMenu.Visible = false;
|
||||
//
|
||||
// YtdMenu
|
||||
//
|
||||
this.YtdMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.YtdNameMenu,
|
||||
this.toolStripSeparator29,
|
||||
this.YtdRemoveFromProjectMenu});
|
||||
this.YtdMenu.Name = "YtdMenu";
|
||||
this.YtdMenu.Size = new System.Drawing.Size(37, 20);
|
||||
this.YtdMenu.Text = "Ytd";
|
||||
this.YtdMenu.Visible = false;
|
||||
//
|
||||
// YdrNameMenu
|
||||
//
|
||||
this.YdrNameMenu.Enabled = false;
|
||||
this.YdrNameMenu.Name = "YdrNameMenu";
|
||||
this.YdrNameMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YdrNameMenu.Text = "(No .ydr file selected)";
|
||||
//
|
||||
// toolStripSeparator6
|
||||
//
|
||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||
this.toolStripSeparator6.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// YddNameMenu
|
||||
//
|
||||
this.YddNameMenu.Enabled = false;
|
||||
this.YddNameMenu.Name = "YddNameMenu";
|
||||
this.YddNameMenu.Size = new System.Drawing.Size(189, 22);
|
||||
this.YddNameMenu.Text = "(No .ydd file selected)";
|
||||
//
|
||||
// toolStripSeparator9
|
||||
//
|
||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
||||
this.toolStripSeparator9.Size = new System.Drawing.Size(186, 6);
|
||||
//
|
||||
// YftNameMenu
|
||||
//
|
||||
this.YftNameMenu.Enabled = false;
|
||||
this.YftNameMenu.Name = "YftNameMenu";
|
||||
this.YftNameMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YftNameMenu.Text = "(No .yft file selected)";
|
||||
//
|
||||
// YtdNameMenu
|
||||
//
|
||||
this.YtdNameMenu.Enabled = false;
|
||||
this.YtdNameMenu.Name = "YtdNameMenu";
|
||||
this.YtdNameMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YtdNameMenu.Text = "(No .ytd file selected)";
|
||||
//
|
||||
// toolStripSeparator29
|
||||
//
|
||||
this.toolStripSeparator29.Name = "toolStripSeparator29";
|
||||
this.toolStripSeparator29.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// toolStripSeparator30
|
||||
//
|
||||
this.toolStripSeparator30.Name = "toolStripSeparator30";
|
||||
this.toolStripSeparator30.Size = new System.Drawing.Size(183, 6);
|
||||
//
|
||||
// YdrRemoveFromProjectMenu
|
||||
//
|
||||
this.YdrRemoveFromProjectMenu.Enabled = false;
|
||||
this.YdrRemoveFromProjectMenu.Name = "YdrRemoveFromProjectMenu";
|
||||
this.YdrRemoveFromProjectMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YdrRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YdrRemoveFromProjectMenu.Click += new System.EventHandler(this.YdrRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YddRemoveFromProjectMenu
|
||||
//
|
||||
this.YddRemoveFromProjectMenu.Enabled = false;
|
||||
this.YddRemoveFromProjectMenu.Name = "YddRemoveFromProjectMenu";
|
||||
this.YddRemoveFromProjectMenu.Size = new System.Drawing.Size(189, 22);
|
||||
this.YddRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YddRemoveFromProjectMenu.Click += new System.EventHandler(this.YddRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YftRemoveFromProjectMenu
|
||||
//
|
||||
this.YftRemoveFromProjectMenu.Enabled = false;
|
||||
this.YftRemoveFromProjectMenu.Name = "YftRemoveFromProjectMenu";
|
||||
this.YftRemoveFromProjectMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YftRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YftRemoveFromProjectMenu.Click += new System.EventHandler(this.YftRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// YtdRemoveFromProjectMenu
|
||||
//
|
||||
this.YtdRemoveFromProjectMenu.Enabled = false;
|
||||
this.YtdRemoveFromProjectMenu.Name = "YtdRemoveFromProjectMenu";
|
||||
this.YtdRemoveFromProjectMenu.Size = new System.Drawing.Size(186, 22);
|
||||
this.YtdRemoveFromProjectMenu.Text = "Remove from Project";
|
||||
this.YtdRemoveFromProjectMenu.Click += new System.EventHandler(this.YtdRemoveFromProjectMenu_Click);
|
||||
//
|
||||
// ProjectForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -1889,5 +1905,7 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem YtdNameMenu;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator29;
|
||||
private System.Windows.Forms.ToolStripMenuItem YtdRemoveFromProjectMenu;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator31;
|
||||
private System.Windows.Forms.ToolStripMenuItem deleteGrassToolStripMenuItem;
|
||||
}
|
||||
}
|
@ -25,7 +25,7 @@ namespace CodeWalker.Project
|
||||
public ThemeBase Theme { get; private set; }
|
||||
public ProjectExplorerPanel ProjectExplorer { get; set; }
|
||||
public ProjectPanel PreviewPanel { get; set; }
|
||||
|
||||
public DeleteGrassPanel DeleteGrassPanel { get; set; }
|
||||
|
||||
public GameFileCache GameFileCache { get; private set; }
|
||||
public RpfManager RpfMan { get; private set; }
|
||||
@ -357,6 +357,13 @@ namespace CodeWalker.Project
|
||||
(panel) => { panel.SetProject(CurrentProjectFile); }, //updateFunc
|
||||
(panel) => { return true; }); //findFunc
|
||||
}
|
||||
public void ShowDeleteGrassPanel(bool promote)
|
||||
{
|
||||
ShowPanel(promote,
|
||||
() => { DeleteGrassPanel = new DeleteGrassPanel(this); return DeleteGrassPanel; }, //createFunc
|
||||
(panel) => { panel.SetProject(CurrentProjectFile); panel.IsFloat = true; }, //updateFunc
|
||||
(panel) => { return true; }); //findFunc
|
||||
}
|
||||
public void ShowGenerateLODLightsPanel(bool promote)
|
||||
{
|
||||
ShowPanel(promote,
|
||||
@ -1099,20 +1106,19 @@ namespace CodeWalker.Project
|
||||
|
||||
public bool CanPaintInstances()
|
||||
{
|
||||
// Possibly future proofing for procedural prop instances
|
||||
if (CurrentGrassBatch != null)
|
||||
if ((CurrentGrassBatch != null && CurrentGrassBatch.BrushEnabled) || (DeleteGrassPanel != null && DeleteGrassPanel.Mode != DeleteGrassPanel.DeleteGrassMode.None))
|
||||
{
|
||||
if (CurrentGrassBatch.BrushEnabled)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public float GetInstanceBrushRadius()
|
||||
{
|
||||
if (CurrentGrassBatch != null)
|
||||
return CurrentGrassBatch.BrushRadius;
|
||||
|
||||
var mode = (DeleteGrassPanel?.Mode ?? DeleteGrassPanel.DeleteGrassMode.None);
|
||||
if (mode == DeleteGrassPanel.DeleteGrassMode.None || mode == DeleteGrassPanel.DeleteGrassMode.Batch)
|
||||
return CurrentGrassBatch?.BrushRadius ?? 0f;
|
||||
else if (DeleteGrassPanel != null && mode != DeleteGrassPanel.DeleteGrassMode.None)
|
||||
return DeleteGrassPanel.BrushRadius;
|
||||
return 0f;
|
||||
}
|
||||
|
||||
@ -2311,6 +2317,15 @@ namespace CodeWalker.Project
|
||||
|
||||
return batch;
|
||||
}
|
||||
public void AddGrassBatchToProject(YmapGrassInstanceBatch batch)
|
||||
{
|
||||
var ymap = batch.Ymap;
|
||||
if (!YmapExistsInProject(ymap))
|
||||
{
|
||||
ymap.HasChanged = true;
|
||||
AddYmapToProject(ymap);
|
||||
}
|
||||
}
|
||||
public void AddGrassBatchToProject()
|
||||
{
|
||||
if (CurrentGrassBatch == null) return;
|
||||
@ -2373,26 +2388,36 @@ namespace CodeWalker.Project
|
||||
|
||||
return true;
|
||||
}
|
||||
public void PaintGrass(SpaceRayIntersectResult mouseRay, bool erase)
|
||||
public void PaintGrass(SpaceRayIntersectResult mouseRay, InputManager input)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action(() => { PaintGrass(mouseRay, erase); }));
|
||||
Invoke(new Action(() => { PaintGrass(mouseRay, input); }));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mouseRay.Hit || !mouseRay.TestComplete) return;
|
||||
if (CurrentGrassBatch == null || (!CurrentGrassBatch.BrushEnabled)) return; // brush isn't enabled right now
|
||||
EditYmapGrassPanel panel = FindPanel<EditYmapGrassPanel>(x => x.CurrentBatch == CurrentGrassBatch);
|
||||
if (panel == null) return; // no panels with this batch
|
||||
|
||||
EditYmapGrassPanel batchPanel = FindPanel<EditYmapGrassPanel>(x => x.CurrentBatch == CurrentGrassBatch);
|
||||
if (batchPanel == null && DeleteGrassPanel == null) return; // no relevant panels
|
||||
|
||||
// TODO: Maybe move these functions into the batch instead of the grass panel?
|
||||
// although, the panel does have the brush settings.
|
||||
if (!erase)
|
||||
panel.CreateInstancesAtMouse(mouseRay);
|
||||
else panel.EraseInstancesAtMouse(mouseRay);
|
||||
|
||||
var mode = DeleteGrassPanel?.Mode;
|
||||
|
||||
if (CurrentGrassBatch != null && batchPanel != null && (mode == DeleteGrassPanel.DeleteGrassMode.Batch || (CurrentGrassBatch.BrushEnabled && input.ShiftPressed)))
|
||||
BulkEraseGrassInstancesAtMouse(mouseRay, (y) => y == CurrentYmapFile, (b) => b == CurrentGrassBatch);
|
||||
else if (CurrentYmapFile != null && mode == DeleteGrassPanel.DeleteGrassMode.Ymap)
|
||||
BulkEraseGrassInstancesAtMouse(mouseRay, (y) => y == CurrentYmapFile);
|
||||
else if (mode == DeleteGrassPanel.DeleteGrassMode.Project)
|
||||
BulkEraseGrassInstancesAtMouse(mouseRay, YmapExistsInProject);
|
||||
else if (mode == DeleteGrassPanel.DeleteGrassMode.Any)
|
||||
BulkEraseGrassInstancesAtMouse(mouseRay);
|
||||
else if (batchPanel != null && CurrentGrassBatch != null && CurrentGrassBatch.BrushEnabled)
|
||||
batchPanel.CreateInstancesAtMouse(mouseRay);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
@ -2400,6 +2425,7 @@ namespace CodeWalker.Project
|
||||
{
|
||||
if (CurrentProjectFile?.YmapFiles == null) return false;
|
||||
if (CurrentProjectFile.YmapFiles.Count <= 0) return false;
|
||||
if (CurrentProjectFile.YmapFiles.Contains(batch.Ymap)) return true;
|
||||
foreach (var ymapFile in CurrentProjectFile.YmapFiles)
|
||||
{
|
||||
if (ymapFile.GrassInstanceBatches == null) continue;
|
||||
@ -2412,6 +2438,53 @@ namespace CodeWalker.Project
|
||||
return false;
|
||||
}
|
||||
|
||||
public void BulkEraseGrassInstancesAtMouse(SpaceRayIntersectResult mouseRay) => BulkEraseGrassInstancesAtMouse(mouseRay, (y) => true);
|
||||
public void BulkEraseGrassInstancesAtMouse(SpaceRayIntersectResult mouseRay, Predicate<YmapFile> ymapFilter) => BulkEraseGrassInstancesAtMouse(mouseRay, ymapFilter, (b) => true);
|
||||
public void BulkEraseGrassInstancesAtMouse(SpaceRayIntersectResult mouseRay, Predicate<YmapFile> ymapFilter, Predicate<YmapGrassInstanceBatch> batchFilter)
|
||||
{
|
||||
if (!mouseRay.Hit) return;
|
||||
|
||||
float radius = DeleteGrassPanel?.BrushRadius ?? 5f;
|
||||
var mouseSphere = new BoundingSphere(mouseRay.Position, radius);
|
||||
if (WorldForm == null) return;
|
||||
lock (WorldForm.RenderSyncRoot)
|
||||
{
|
||||
foreach (var ymap in WorldForm.Renderer.VisibleYmaps)
|
||||
{
|
||||
if (ymap.GrassInstanceBatches == null) continue;
|
||||
if (!ymapFilter(ymap)) continue;
|
||||
|
||||
for (int i = 0; i < ymap.GrassInstanceBatches.Length; i++)
|
||||
{
|
||||
var gb = ymap.GrassInstanceBatches[i];
|
||||
if (!batchFilter(gb)) continue;
|
||||
|
||||
BoundingBox bbox = new BoundingBox();
|
||||
MapBox mb = new MapBox();
|
||||
mb.BBMin = gb.AABBMin;
|
||||
mb.BBMax = gb.AABBMax;
|
||||
mb.Orientation = Quaternion.Identity;
|
||||
mb.Scale = Vector3.One;
|
||||
|
||||
bbox.Minimum = mb.BBMin;
|
||||
bbox.Maximum = mb.BBMax;
|
||||
|
||||
// do not continue if mouse position + radius is not in this instance's bounding box
|
||||
if (!bbox.Intersects(mouseSphere)) continue;
|
||||
|
||||
if (gb.EraseInstancesAtMouse(gb, mouseRay, radius))
|
||||
{
|
||||
WorldForm.UpdateGrassBatchGraphics(gb);
|
||||
AddGrassBatchToProject(gb);
|
||||
|
||||
var gbp = FindPanel<EditYmapGrassPanel>(panel => panel.CurrentBatch == CurrentGrassBatch);
|
||||
gbp?.BatchChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public YmapCarGen NewCarGen(YmapCarGen copy = null, bool copyPosition = false, bool selectNew = true)
|
||||
{
|
||||
if (CurrentYmapFile == null) return null;
|
||||
@ -9538,7 +9611,10 @@ namespace CodeWalker.Project
|
||||
{
|
||||
ImportMenyooXml();
|
||||
}
|
||||
|
||||
private void ToolsDeleteGrassMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShowDeleteGrassPanel(true);
|
||||
}
|
||||
private void OptionsRenderGtavMapMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
OptionsRenderGtavMapMenu.Checked = !OptionsRenderGtavMapMenu.Checked;
|
||||
@ -9656,6 +9732,5 @@ namespace CodeWalker.Project
|
||||
{
|
||||
SaveAll();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2701,7 +2701,7 @@ namespace CodeWalker
|
||||
}
|
||||
private void UpdateMouseHits(YmapFile ymap)
|
||||
{
|
||||
//find mouse hits for things like time cycle mods and car generators in ymaps.
|
||||
//find mouse hits for things like MLOs, time cycle mods, grass batches, and car generators in ymaps.
|
||||
|
||||
BoundingBox bbox = new BoundingBox();
|
||||
Ray mray = new Ray();
|
||||
@ -6019,7 +6019,7 @@ namespace CodeWalker
|
||||
{
|
||||
if (ProjectForm != null && MouseLButtonDown)
|
||||
{
|
||||
ProjectForm.PaintGrass(MouseRayCollision, Input.ShiftPressed);
|
||||
ProjectForm.PaintGrass(MouseRayCollision, Input);
|
||||
}
|
||||
ControlBrushTimer = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user