Add tool
This commit is contained in:
parent
6fb4da17b3
commit
dbb73d165e
15
Switch_Toolbox/App.config
Normal file
15
Switch_Toolbox/App.config
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
|
||||
</startup>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<probing privatePath="lib" />
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
BIN
Switch_Toolbox/Assimp32.dll
Normal file
BIN
Switch_Toolbox/Assimp32.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Assimp64.dll
Normal file
BIN
Switch_Toolbox/Assimp64.dll
Normal file
Binary file not shown.
125
Switch_Toolbox/Config.cs
Normal file
125
Switch_Toolbox/Config.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using Switch_Toolbox.Library;
|
||||
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
//Based on
|
||||
// https://github.com/jam1garner/Smash-Forge/blob/26e0dcbd84cdf8a4ffe3fbe0b0317520a4099286/Smash%20Forge/Filetypes/Application/Config.cs
|
||||
class Config
|
||||
{
|
||||
public static void StartupFromFile(string fileName)
|
||||
{
|
||||
if (!File.Exists(fileName))
|
||||
{
|
||||
Save();
|
||||
return;
|
||||
}
|
||||
|
||||
ReadConfigFromFile(fileName);
|
||||
}
|
||||
|
||||
private static void ReadConfigFromFile(string fileName)
|
||||
{
|
||||
int discordImageKey;
|
||||
XmlDocument doc = new XmlDocument();
|
||||
doc.Load(fileName);
|
||||
Queue<XmlNode> que = new Queue<XmlNode>();
|
||||
|
||||
foreach (XmlNode node in doc.ChildNodes)
|
||||
que.Enqueue(node);
|
||||
|
||||
while (que.Count > 0)
|
||||
{
|
||||
XmlNode node = que.Dequeue();
|
||||
|
||||
foreach (XmlNode n in node.ChildNodes)
|
||||
que.Enqueue(n);
|
||||
|
||||
switch (node.Name)
|
||||
{
|
||||
case "OpenStartupWindow":
|
||||
bool.TryParse(node.InnerText, out Runtime.OpenStartupWindow);
|
||||
break;
|
||||
case "RenderModels":
|
||||
bool.TryParse(node.InnerText, out Runtime.RenderModels);
|
||||
break;
|
||||
case "RenderModelSelection":
|
||||
bool.TryParse(node.InnerText, out Runtime.RenderModelSelection);
|
||||
break;
|
||||
case "RenderModelWireframe":
|
||||
bool.TryParse(node.InnerText, out Runtime.RenderModelWireframe);
|
||||
break;
|
||||
case "viewportShading":
|
||||
if (node.ParentNode != null && node.ParentNode.Name.Equals("RENDERSETTINGS"))
|
||||
Enum.TryParse(node.InnerText, out Runtime.viewportShading);
|
||||
break;
|
||||
case "thumbnailSize":
|
||||
if (node.ParentNode != null && node.ParentNode.Name.Equals("OBJLISTSETTINGS"))
|
||||
Enum.TryParse(node.InnerText, out Runtime.thumbnailSize);
|
||||
break;
|
||||
case "stereoscopy": bool.TryParse(node.InnerText, out Runtime.stereoscopy);
|
||||
break;
|
||||
case "CameraFar":
|
||||
float.TryParse(node.InnerText, out Runtime.CameraFar);
|
||||
break;
|
||||
case "CameraNear":
|
||||
float.TryParse(node.InnerText, out Runtime.CameraNear);
|
||||
break;
|
||||
case "PreviewScale":
|
||||
float.TryParse(node.InnerText, out Runtime.previewScale);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void Save()
|
||||
{
|
||||
XmlDocument doc = CreateXmlFromSettings();
|
||||
doc.Save(MainForm.executableDir + "\\config.xml");
|
||||
}
|
||||
private static XmlDocument CreateXmlFromSettings()
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
XmlNode mainNode = doc.CreateElement("FORGECONFIG");
|
||||
doc.AppendChild(mainNode);
|
||||
|
||||
AppendMainFormSettings(doc, mainNode);
|
||||
AppendObjectlistSettings(doc, mainNode);
|
||||
AppendRenderSettings(doc, mainNode);
|
||||
|
||||
return doc;
|
||||
}
|
||||
private static void AppendMainFormSettings(XmlDocument doc, XmlNode parentNode)
|
||||
{
|
||||
XmlNode mainSettingsNode = doc.CreateElement("MAINFORM");
|
||||
parentNode.AppendChild(mainSettingsNode);
|
||||
mainSettingsNode.AppendChild(createNode(doc, "OpenStartupWindow", Runtime.OpenStartupWindow.ToString()));
|
||||
}
|
||||
|
||||
private static void AppendObjectlistSettings(XmlDocument doc, XmlNode parentNode)
|
||||
{
|
||||
XmlNode objlistSettingsNode = doc.CreateElement("OBJLISTSETTINGS");
|
||||
parentNode.AppendChild(objlistSettingsNode);
|
||||
objlistSettingsNode.AppendChild(createNode(doc, "thumbnailSize", Runtime.thumbnailSize.ToString()));
|
||||
}
|
||||
private static void AppendRenderSettings(XmlDocument doc, XmlNode parentNode)
|
||||
{
|
||||
XmlNode renderSettingsNode = doc.CreateElement("RENDERSETTINGS");
|
||||
parentNode.AppendChild(renderSettingsNode);
|
||||
renderSettingsNode.AppendChild(createNode(doc, "viewportShading", Runtime.viewportShading.ToString()));
|
||||
renderSettingsNode.AppendChild(createNode(doc, "stereoscopy", Runtime.stereoscopy.ToString()));
|
||||
renderSettingsNode.AppendChild(createNode(doc, "CameraFar", Runtime.CameraFar.ToString()));
|
||||
renderSettingsNode.AppendChild(createNode(doc, "CameraNear", Runtime.CameraNear.ToString()));
|
||||
renderSettingsNode.AppendChild(createNode(doc, "PreviewScale", Runtime.previewScale.ToString()));
|
||||
}
|
||||
public static XmlNode createNode(XmlDocument doc, string el, string v)
|
||||
{
|
||||
XmlNode floorstyle = doc.CreateElement(el);
|
||||
floorstyle.InnerText = v;
|
||||
return floorstyle;
|
||||
}
|
||||
}
|
||||
}
|
3
Switch_Toolbox/FodyWeavers.xml
Normal file
3
Switch_Toolbox/FodyWeavers.xml
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Weavers>
|
||||
</Weavers>
|
120
Switch_Toolbox/GUI/Credits.Designer.cs
generated
Normal file
120
Switch_Toolbox/GUI/Credits.Designer.cs
generated
Normal file
@ -0,0 +1,120 @@
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
partial class CreditsWindow
|
||||
{
|
||||
/// <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(CreditsWindow));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(42, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Credits!";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.ForeColor = System.Drawing.Color.White;
|
||||
this.label2.Location = new System.Drawing.Point(12, 36);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(149, 13);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Main Developer: KillzXGaming";
|
||||
this.label2.Click += new System.EventHandler(this.label2_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.ForeColor = System.Drawing.Color.White;
|
||||
this.label3.Location = new System.Drawing.Point(12, 76);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(169, 13);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "Special Thanks and Contributions:";
|
||||
this.label3.Click += new System.EventHandler(this.label3_Click);
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
this.richTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.richTextBox1.ForeColor = System.Drawing.Color.White;
|
||||
this.richTextBox1.Location = new System.Drawing.Point(15, 107);
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.Size = new System.Drawing.Size(414, 311);
|
||||
this.richTextBox1.TabIndex = 4;
|
||||
this.richTextBox1.Text = resources.GetString("richTextBox1.Text");
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = global::Switch_Toolbox.Properties.Resources.Logo;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(327, 12);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(108, 89);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pictureBox1.TabIndex = 5;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// CreditsWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.ClientSize = new System.Drawing.Size(447, 430);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.richTextBox1);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "CreditsWindow";
|
||||
this.Text = "Credits";
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
}
|
||||
}
|
35
Switch_Toolbox/GUI/Credits.cs
Normal file
35
Switch_Toolbox/GUI/Credits.cs
Normal file
@ -0,0 +1,35 @@
|
||||
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 Switch_Toolbox
|
||||
{
|
||||
public partial class CreditsWindow : Form
|
||||
{
|
||||
public CreditsWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void label2_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void label4_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void label3_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
132
Switch_Toolbox/GUI/Credits.resx
Normal file
132
Switch_Toolbox/GUI/Credits.resx
Normal file
@ -0,0 +1,132 @@
|
||||
<?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>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>- Smash Forge Devs (SMG, Ploaj, jam1garner, smb123w64gb, etc) for some code ported over. Specifically animation stuff and some rendering.
|
||||
- Assimp devs for their massive asset library!
|
||||
- Wexos (helped figure out a few things, ie format list to assign each attribute)
|
||||
- JuPaHe64 for the base 3D renderer.
|
||||
- Every File Explorer devs (Gericom) for Yaz0 stuff
|
||||
- Exelix for Byaml, Sarc and KCL library
|
||||
- Syroot for helpful IO extensions and libraies
|
||||
- GDK Chan for some DDS decode methods
|
||||
- AboodXD for BNTX texture swizzling
|
||||
- MelonSpeedruns for logo.</value>
|
||||
</data>
|
||||
</root>
|
90
Switch_Toolbox/GUI/PluginManager.Designer.cs
generated
Normal file
90
Switch_Toolbox/GUI/PluginManager.Designer.cs
generated
Normal file
@ -0,0 +1,90 @@
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
partial class PluginManager
|
||||
{
|
||||
/// <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.components = new System.ComponentModel.Container();
|
||||
this.listView1 = new System.Windows.Forms.ListView();
|
||||
this.Plugin = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.Version = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listView1
|
||||
//
|
||||
this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.listView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.Plugin,
|
||||
this.Version});
|
||||
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.listView1.ForeColor = System.Drawing.Color.White;
|
||||
this.listView1.Location = new System.Drawing.Point(0, 0);
|
||||
this.listView1.Name = "listView1";
|
||||
this.listView1.Size = new System.Drawing.Size(292, 356);
|
||||
this.listView1.TabIndex = 0;
|
||||
this.listView1.UseCompatibleStateImageBehavior = false;
|
||||
this.listView1.View = System.Windows.Forms.View.List;
|
||||
//
|
||||
// Plugin
|
||||
//
|
||||
this.Plugin.Text = "Plugin";
|
||||
this.Plugin.Width = 113;
|
||||
//
|
||||
// Version
|
||||
//
|
||||
this.Version.Text = "Version";
|
||||
this.Version.Width = 175;
|
||||
//
|
||||
// imageList1
|
||||
//
|
||||
this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
|
||||
this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
|
||||
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
|
||||
//
|
||||
// PluginManager
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.ClientSize = new System.Drawing.Size(292, 356);
|
||||
this.Controls.Add(this.listView1);
|
||||
this.Name = "PluginManager";
|
||||
this.Text = "PluginManager";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView listView1;
|
||||
private System.Windows.Forms.ColumnHeader Plugin;
|
||||
private System.Windows.Forms.ColumnHeader Version;
|
||||
private System.Windows.Forms.ImageList imageList1;
|
||||
}
|
||||
}
|
35
Switch_Toolbox/GUI/PluginManager.cs
Normal file
35
Switch_Toolbox/GUI/PluginManager.cs
Normal file
@ -0,0 +1,35 @@
|
||||
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 Switch_Toolbox.Library;
|
||||
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
public partial class PluginManager : Form
|
||||
{
|
||||
public PluginManager()
|
||||
{
|
||||
InitializeComponent();
|
||||
imageList1.Images.Add("DLL", System.Drawing.SystemIcons.Question.ToBitmap());
|
||||
imageList1.ImageSize = new Size(24, 24);
|
||||
listView1.FullRowSelect = true;
|
||||
listView1.SmallImageList = imageList1;
|
||||
|
||||
|
||||
foreach (var plugin in GenericPluginLoader._Plugins)
|
||||
{
|
||||
ListViewItem item = new ListViewItem();
|
||||
item.Text = plugin.Key;
|
||||
item.ImageKey = "DLL";
|
||||
item.SubItems.Add(plugin.Value.Version);
|
||||
listView1.Items.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
123
Switch_Toolbox/GUI/PluginManager.resx
Normal file
123
Switch_Toolbox/GUI/PluginManager.resx
Normal file
@ -0,0 +1,123 @@
|
||||
<?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>
|
||||
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
408
Switch_Toolbox/GUI/Settings.Designer.cs
generated
Normal file
408
Switch_Toolbox/GUI/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,408 @@
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
partial class Settings
|
||||
{
|
||||
/// <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.label1 = new System.Windows.Forms.Label();
|
||||
this.chkBoxSpecular = new System.Windows.Forms.CheckBox();
|
||||
this.chkBoxNormalMap = new System.Windows.Forms.CheckBox();
|
||||
this.shadingComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.chkBoxDisplayPolyCount = new System.Windows.Forms.CheckBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.camFarNumUD = new System.Windows.Forms.NumericUpDown();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.camNearNumUD = new System.Windows.Forms.NumericUpDown();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.camMoveComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.chkBoxDisplayBones = new System.Windows.Forms.CheckBox();
|
||||
this.chkBoxDisplayWireframe = new System.Windows.Forms.CheckBox();
|
||||
this.chkBoxDisplayModels = new System.Windows.Forms.CheckBox();
|
||||
this.chkBoxStereoscopy = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.GLSLVerLabel = new System.Windows.Forms.Label();
|
||||
this.openGLVerLabel = new System.Windows.Forms.Label();
|
||||
this.btnSave = new System.Windows.Forms.Button();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.previewScaleUD = new System.Windows.Forms.NumericUpDown();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.camFarNumUD)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.camNearNumUD)).BeginInit();
|
||||
this.panel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.previewScaleUD)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.Location = new System.Drawing.Point(255, 55);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(90, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Viewport Shading";
|
||||
//
|
||||
// chkBoxSpecular
|
||||
//
|
||||
this.chkBoxSpecular.AutoSize = true;
|
||||
this.chkBoxSpecular.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxSpecular.Location = new System.Drawing.Point(258, 116);
|
||||
this.chkBoxSpecular.Name = "chkBoxSpecular";
|
||||
this.chkBoxSpecular.Size = new System.Drawing.Size(104, 17);
|
||||
this.chkBoxSpecular.TabIndex = 3;
|
||||
this.chkBoxSpecular.Text = "Enable Specular";
|
||||
this.chkBoxSpecular.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkBoxNormalMap
|
||||
//
|
||||
this.chkBoxNormalMap.AutoSize = true;
|
||||
this.chkBoxNormalMap.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxNormalMap.Location = new System.Drawing.Point(258, 93);
|
||||
this.chkBoxNormalMap.Name = "chkBoxNormalMap";
|
||||
this.chkBoxNormalMap.Size = new System.Drawing.Size(124, 17);
|
||||
this.chkBoxNormalMap.TabIndex = 2;
|
||||
this.chkBoxNormalMap.Text = "Enable Normal Maps";
|
||||
this.chkBoxNormalMap.UseVisualStyleBackColor = true;
|
||||
this.chkBoxNormalMap.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
|
||||
//
|
||||
// shadingComboBox
|
||||
//
|
||||
this.shadingComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.shadingComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.shadingComboBox.ForeColor = System.Drawing.Color.White;
|
||||
this.shadingComboBox.FormattingEnabled = true;
|
||||
this.shadingComboBox.Location = new System.Drawing.Point(351, 52);
|
||||
this.shadingComboBox.Name = "shadingComboBox";
|
||||
this.shadingComboBox.Size = new System.Drawing.Size(165, 21);
|
||||
this.shadingComboBox.TabIndex = 1;
|
||||
this.shadingComboBox.SelectedIndexChanged += new System.EventHandler(this.shadingComboBox_SelectedIndexChanged);
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.label6);
|
||||
this.panel2.Controls.Add(this.previewScaleUD);
|
||||
this.panel2.Controls.Add(this.chkBoxDisplayPolyCount);
|
||||
this.panel2.Controls.Add(this.label5);
|
||||
this.panel2.Controls.Add(this.camFarNumUD);
|
||||
this.panel2.Controls.Add(this.label4);
|
||||
this.panel2.Controls.Add(this.camNearNumUD);
|
||||
this.panel2.Controls.Add(this.label3);
|
||||
this.panel2.Controls.Add(this.chkBoxSpecular);
|
||||
this.panel2.Controls.Add(this.camMoveComboBox);
|
||||
this.panel2.Controls.Add(this.chkBoxNormalMap);
|
||||
this.panel2.Controls.Add(this.chkBoxDisplayBones);
|
||||
this.panel2.Controls.Add(this.shadingComboBox);
|
||||
this.panel2.Controls.Add(this.chkBoxDisplayWireframe);
|
||||
this.panel2.Controls.Add(this.label1);
|
||||
this.panel2.Controls.Add(this.chkBoxDisplayModels);
|
||||
this.panel2.Controls.Add(this.chkBoxStereoscopy);
|
||||
this.panel2.Controls.Add(this.label2);
|
||||
this.panel2.Location = new System.Drawing.Point(12, 156);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(534, 246);
|
||||
this.panel2.TabIndex = 4;
|
||||
//
|
||||
// chkBoxDisplayPolyCount
|
||||
//
|
||||
this.chkBoxDisplayPolyCount.AutoSize = true;
|
||||
this.chkBoxDisplayPolyCount.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxDisplayPolyCount.Location = new System.Drawing.Point(120, 162);
|
||||
this.chkBoxDisplayPolyCount.Name = "chkBoxDisplayPolyCount";
|
||||
this.chkBoxDisplayPolyCount.Size = new System.Drawing.Size(114, 17);
|
||||
this.chkBoxDisplayPolyCount.TabIndex = 13;
|
||||
this.chkBoxDisplayPolyCount.Text = "Display Poly Count";
|
||||
this.chkBoxDisplayPolyCount.UseVisualStyleBackColor = true;
|
||||
this.chkBoxDisplayPolyCount.CheckedChanged += new System.EventHandler(this.chkBoxDisplayPolyCount_CheckedChanged);
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.ForeColor = System.Drawing.Color.White;
|
||||
this.label5.Location = new System.Drawing.Point(10, 222);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(61, 13);
|
||||
this.label5.TabIndex = 12;
|
||||
this.label5.Text = "Camera Far";
|
||||
//
|
||||
// camFarNumUD
|
||||
//
|
||||
this.camFarNumUD.DecimalPlaces = 3;
|
||||
this.camFarNumUD.Location = new System.Drawing.Point(110, 220);
|
||||
this.camFarNumUD.Maximum = new decimal(new int[] {
|
||||
1316134912,
|
||||
2328,
|
||||
0,
|
||||
0});
|
||||
this.camFarNumUD.Name = "camFarNumUD";
|
||||
this.camFarNumUD.Size = new System.Drawing.Size(171, 20);
|
||||
this.camFarNumUD.TabIndex = 11;
|
||||
this.camFarNumUD.ValueChanged += new System.EventHandler(this.camFarNumUD_ValueChanged);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.ForeColor = System.Drawing.Color.White;
|
||||
this.label4.Location = new System.Drawing.Point(10, 196);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(69, 13);
|
||||
this.label4.TabIndex = 10;
|
||||
this.label4.Text = "Camera Near";
|
||||
//
|
||||
// camNearNumUD
|
||||
//
|
||||
this.camNearNumUD.DecimalPlaces = 3;
|
||||
this.camNearNumUD.Increment = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.camNearNumUD.Location = new System.Drawing.Point(110, 194);
|
||||
this.camNearNumUD.Maximum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.camNearNumUD.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.camNearNumUD.Name = "camNearNumUD";
|
||||
this.camNearNumUD.Size = new System.Drawing.Size(171, 20);
|
||||
this.camNearNumUD.TabIndex = 9;
|
||||
this.camNearNumUD.Value = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.camNearNumUD.ValueChanged += new System.EventHandler(this.camNearNumUD_ValueChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.ForeColor = System.Drawing.Color.White;
|
||||
this.label3.Location = new System.Drawing.Point(3, 55);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(43, 13);
|
||||
this.label3.TabIndex = 8;
|
||||
this.label3.Text = "Camera";
|
||||
//
|
||||
// camMoveComboBox
|
||||
//
|
||||
this.camMoveComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.camMoveComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.camMoveComboBox.ForeColor = System.Drawing.Color.White;
|
||||
this.camMoveComboBox.FormattingEnabled = true;
|
||||
this.camMoveComboBox.Location = new System.Drawing.Point(59, 52);
|
||||
this.camMoveComboBox.Name = "camMoveComboBox";
|
||||
this.camMoveComboBox.Size = new System.Drawing.Size(156, 21);
|
||||
this.camMoveComboBox.TabIndex = 4;
|
||||
this.camMoveComboBox.SelectedIndexChanged += new System.EventHandler(this.camMoveComboBox_SelectedIndexChanged);
|
||||
//
|
||||
// chkBoxDisplayBones
|
||||
//
|
||||
this.chkBoxDisplayBones.AutoSize = true;
|
||||
this.chkBoxDisplayBones.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxDisplayBones.Location = new System.Drawing.Point(6, 162);
|
||||
this.chkBoxDisplayBones.Name = "chkBoxDisplayBones";
|
||||
this.chkBoxDisplayBones.Size = new System.Drawing.Size(93, 17);
|
||||
this.chkBoxDisplayBones.TabIndex = 7;
|
||||
this.chkBoxDisplayBones.Text = "Display Bones";
|
||||
this.chkBoxDisplayBones.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkBoxDisplayWireframe
|
||||
//
|
||||
this.chkBoxDisplayWireframe.AutoSize = true;
|
||||
this.chkBoxDisplayWireframe.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxDisplayWireframe.Location = new System.Drawing.Point(6, 139);
|
||||
this.chkBoxDisplayWireframe.Name = "chkBoxDisplayWireframe";
|
||||
this.chkBoxDisplayWireframe.Size = new System.Drawing.Size(111, 17);
|
||||
this.chkBoxDisplayWireframe.TabIndex = 6;
|
||||
this.chkBoxDisplayWireframe.Text = "Display Wireframe";
|
||||
this.chkBoxDisplayWireframe.UseVisualStyleBackColor = true;
|
||||
this.chkBoxDisplayWireframe.CheckedChanged += new System.EventHandler(this.chkBoxDisplayWireframe_CheckedChanged);
|
||||
//
|
||||
// chkBoxDisplayModels
|
||||
//
|
||||
this.chkBoxDisplayModels.AutoSize = true;
|
||||
this.chkBoxDisplayModels.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxDisplayModels.Location = new System.Drawing.Point(6, 116);
|
||||
this.chkBoxDisplayModels.Name = "chkBoxDisplayModels";
|
||||
this.chkBoxDisplayModels.Size = new System.Drawing.Size(97, 17);
|
||||
this.chkBoxDisplayModels.TabIndex = 5;
|
||||
this.chkBoxDisplayModels.Text = "Display Models";
|
||||
this.chkBoxDisplayModels.UseVisualStyleBackColor = true;
|
||||
this.chkBoxDisplayModels.CheckedChanged += new System.EventHandler(this.chkBoxDisplayModels_CheckedChanged);
|
||||
//
|
||||
// chkBoxStereoscopy
|
||||
//
|
||||
this.chkBoxStereoscopy.AutoSize = true;
|
||||
this.chkBoxStereoscopy.ForeColor = System.Drawing.Color.White;
|
||||
this.chkBoxStereoscopy.Location = new System.Drawing.Point(6, 93);
|
||||
this.chkBoxStereoscopy.Name = "chkBoxStereoscopy";
|
||||
this.chkBoxStereoscopy.Size = new System.Drawing.Size(121, 17);
|
||||
this.chkBoxStereoscopy.TabIndex = 4;
|
||||
this.chkBoxStereoscopy.Text = "Enable Stereoscopy";
|
||||
this.chkBoxStereoscopy.UseVisualStyleBackColor = true;
|
||||
this.chkBoxStereoscopy.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged_1);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.ForeColor = System.Drawing.Color.White;
|
||||
this.label2.Location = new System.Drawing.Point(56, 21);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(89, 13);
|
||||
this.label2.TabIndex = 4;
|
||||
this.label2.Text = "Viewport Settings";
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.GLSLVerLabel);
|
||||
this.panel1.Controls.Add(this.openGLVerLabel);
|
||||
this.panel1.Location = new System.Drawing.Point(12, 13);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(534, 137);
|
||||
this.panel1.TabIndex = 5;
|
||||
//
|
||||
// GLSLVerLabel
|
||||
//
|
||||
this.GLSLVerLabel.AutoSize = true;
|
||||
this.GLSLVerLabel.ForeColor = System.Drawing.Color.White;
|
||||
this.GLSLVerLabel.Location = new System.Drawing.Point(3, 38);
|
||||
this.GLSLVerLabel.Name = "GLSLVerLabel";
|
||||
this.GLSLVerLabel.Size = new System.Drawing.Size(72, 13);
|
||||
this.GLSLVerLabel.TabIndex = 10;
|
||||
this.GLSLVerLabel.Text = "GLSL Version";
|
||||
//
|
||||
// openGLVerLabel
|
||||
//
|
||||
this.openGLVerLabel.AutoSize = true;
|
||||
this.openGLVerLabel.ForeColor = System.Drawing.Color.White;
|
||||
this.openGLVerLabel.Location = new System.Drawing.Point(3, 13);
|
||||
this.openGLVerLabel.Name = "openGLVerLabel";
|
||||
this.openGLVerLabel.Size = new System.Drawing.Size(91, 13);
|
||||
this.openGLVerLabel.TabIndex = 9;
|
||||
this.openGLVerLabel.Text = "Open GL Version:";
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Location = new System.Drawing.Point(397, 408);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(149, 23);
|
||||
this.btnSave.TabIndex = 6;
|
||||
this.btnSave.Text = "Save";
|
||||
this.btnSave.UseVisualStyleBackColor = true;
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.ForeColor = System.Drawing.Color.White;
|
||||
this.label6.Location = new System.Drawing.Point(285, 196);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(75, 13);
|
||||
this.label6.TabIndex = 15;
|
||||
this.label6.Text = "Preview Scale";
|
||||
//
|
||||
// previewScaleUD
|
||||
//
|
||||
this.previewScaleUD.DecimalPlaces = 3;
|
||||
this.previewScaleUD.Increment = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.previewScaleUD.Location = new System.Drawing.Point(363, 194);
|
||||
this.previewScaleUD.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
131072});
|
||||
this.previewScaleUD.Name = "previewScaleUD";
|
||||
this.previewScaleUD.Size = new System.Drawing.Size(171, 20);
|
||||
this.previewScaleUD.TabIndex = 14;
|
||||
this.previewScaleUD.Value = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.previewScaleUD.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged);
|
||||
//
|
||||
// Settings
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.ClientSize = new System.Drawing.Size(551, 443);
|
||||
this.Controls.Add(this.btnSave);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Name = "Settings";
|
||||
this.Text = "Settings";
|
||||
this.Load += new System.EventHandler(this.Settings_Load);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.camFarNumUD)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.camNearNumUD)).EndInit();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.previewScaleUD)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckBox chkBoxSpecular;
|
||||
private System.Windows.Forms.CheckBox chkBoxNormalMap;
|
||||
private System.Windows.Forms.ComboBox shadingComboBox;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.CheckBox chkBoxStereoscopy;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.CheckBox chkBoxDisplayBones;
|
||||
private System.Windows.Forms.CheckBox chkBoxDisplayWireframe;
|
||||
private System.Windows.Forms.CheckBox chkBoxDisplayModels;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ComboBox camMoveComboBox;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Label openGLVerLabel;
|
||||
private System.Windows.Forms.Label GLSLVerLabel;
|
||||
private System.Windows.Forms.Button btnSave;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.NumericUpDown camFarNumUD;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.NumericUpDown camNearNumUD;
|
||||
private System.Windows.Forms.CheckBox chkBoxDisplayPolyCount;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.NumericUpDown previewScaleUD;
|
||||
}
|
||||
}
|
131
Switch_Toolbox/GUI/Settings.cs
Normal file
131
Switch_Toolbox/GUI/Settings.cs
Normal file
@ -0,0 +1,131 @@
|
||||
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 Switch_Toolbox.Library;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using GL_Core;
|
||||
using GL_Core.Public_Interfaces;
|
||||
using GL_Core.Cameras;
|
||||
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
public partial class Settings : Form
|
||||
{
|
||||
MainForm mainForm;
|
||||
|
||||
public Settings(MainForm main)
|
||||
{
|
||||
mainForm = main;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
foreach (Runtime.ViewportShading shading in Enum.GetValues(typeof(Runtime.ViewportShading)))
|
||||
{
|
||||
shadingComboBox.Items.Add(shading.ToString());
|
||||
}
|
||||
foreach (Runtime.CameraMovement shading in Enum.GetValues(typeof(Runtime.CameraMovement)))
|
||||
{
|
||||
camMoveComboBox.Items.Add(shading.ToString());
|
||||
}
|
||||
|
||||
chkBoxNormalMap.Checked = Runtime.useNormalMap;
|
||||
chkBoxDisplayModels.Checked = Runtime.RenderModels;
|
||||
chkBoxDisplayWireframe.Checked = Runtime.RenderModelWireframe;
|
||||
chkBoxSpecular.Checked = Runtime.renderSpecular;
|
||||
chkBoxStereoscopy.Checked = Runtime.stereoscopy;
|
||||
chkBoxDisplayPolyCount.Checked = Runtime.DisplayPolyCount;
|
||||
camNearNumUD.Value = (decimal)Runtime.CameraNear;
|
||||
camFarNumUD.Value = (decimal)Runtime.CameraFar;
|
||||
previewScaleUD.Value = (decimal)Runtime.previewScale;
|
||||
|
||||
GLSLVerLabel.Text = $"Open GL Version: {Runtime.GLSLVersion}";
|
||||
openGLVerLabel.Text = $"GLSL Version: {Runtime.openGLVersion}";
|
||||
|
||||
shadingComboBox.SelectedIndex = (int)Runtime.viewportShading;
|
||||
camMoveComboBox.SelectedIndex = (int)Runtime.cameraMovement;
|
||||
}
|
||||
|
||||
private void shadingComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.viewportShading = (Runtime.ViewportShading)shadingComboBox.SelectedIndex;
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void checkBox1_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.useNormalMap = chkBoxNormalMap.Checked;
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void chkBoxDisplayModels_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.RenderModels = chkBoxDisplayModels.Checked;
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void chkBoxDisplayWireframe_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.RenderModelWireframe = chkBoxDisplayWireframe.Checked;
|
||||
Viewport.Instance.LoadViewportRuntimeValues();
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void camMoveComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.cameraMovement = (Runtime.CameraMovement)camMoveComboBox.SelectedIndex;
|
||||
Viewport.Instance.LoadViewportRuntimeValues();
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void checkBox1_CheckedChanged_1(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.stereoscopy = chkBoxStereoscopy.Checked;
|
||||
Viewport.Instance.LoadViewportRuntimeValues();
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
private void camNearNumUD_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.CameraNear = (float)camNearNumUD.Value;
|
||||
Viewport.Instance.LoadViewportRuntimeValues();
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void camFarNumUD_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.CameraFar = (float)camFarNumUD.Value;
|
||||
Viewport.Instance.LoadViewportRuntimeValues();
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
Viewport.Instance.UpdateViewport();
|
||||
|
||||
Config.Save();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void chkBoxDisplayPolyCount_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.DisplayPolyCount = chkBoxDisplayPolyCount.Checked;
|
||||
}
|
||||
|
||||
private void Settings_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.previewScale = (float)previewScaleUD.Value;
|
||||
Viewport.Instance.LoadViewportRuntimeValues();
|
||||
Viewport.Instance.UpdateViewport();
|
||||
}
|
||||
}
|
||||
}
|
120
Switch_Toolbox/GUI/Settings.resx
Normal file
120
Switch_Toolbox/GUI/Settings.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>
|
141
Switch_Toolbox/GUI/Startup Window.Designer.cs
generated
Normal file
141
Switch_Toolbox/GUI/Startup Window.Designer.cs
generated
Normal file
@ -0,0 +1,141 @@
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
partial class Startup_Window
|
||||
{
|
||||
/// <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.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.listView1 = new System.Windows.Forms.ListView();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(12, 364);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(127, 17);
|
||||
this.checkBox1.TabIndex = 0;
|
||||
this.checkBox1.Text = "Don\'t show this again";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.richTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55)))));
|
||||
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.richTextBox1.ForeColor = System.Drawing.Color.White;
|
||||
this.richTextBox1.Location = new System.Drawing.Point(12, 25);
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.ReadOnly = true;
|
||||
this.richTextBox1.Size = new System.Drawing.Size(590, 86);
|
||||
this.richTextBox1.TabIndex = 1;
|
||||
this.richTextBox1.Text = "";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(13, 6);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(59, 13);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.Text = "Useful tips!";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(9, 123);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(137, 13);
|
||||
this.label2.TabIndex = 3;
|
||||
this.label2.Text = "Recent (Not Working ATM)";
|
||||
//
|
||||
// listView1
|
||||
//
|
||||
this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55)))));
|
||||
this.listView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.listView1.ForeColor = System.Drawing.Color.White;
|
||||
this.listView1.Location = new System.Drawing.Point(12, 140);
|
||||
this.listView1.Name = "listView1";
|
||||
this.listView1.Size = new System.Drawing.Size(694, 218);
|
||||
this.listView1.TabIndex = 4;
|
||||
this.listView1.UseCompatibleStateImageBehavior = false;
|
||||
this.listView1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.listView1_MouseClick);
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = global::Switch_Toolbox.Properties.Resources.Logo;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(608, 25);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(98, 86);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pictureBox1.TabIndex = 5;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// Startup_Window
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.ClientSize = new System.Drawing.Size(718, 393);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.listView1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.richTextBox1);
|
||||
this.Controls.Add(this.checkBox1);
|
||||
this.ForeColor = System.Drawing.Color.White;
|
||||
this.Name = "Startup_Window";
|
||||
this.Text = "Startup";
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ListView listView1;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
}
|
||||
}
|
52
Switch_Toolbox/GUI/Startup Window.cs
Normal file
52
Switch_Toolbox/GUI/Startup Window.cs
Normal file
@ -0,0 +1,52 @@
|
||||
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 Switch_Toolbox.Library;
|
||||
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
public partial class Startup_Window : Form
|
||||
{
|
||||
public Startup_Window()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
CreateTipList();
|
||||
richTextBox1.Text = GetRandomTip();
|
||||
}
|
||||
List<string> Tips = new List<string>();
|
||||
private void CreateTipList()
|
||||
{
|
||||
Tips.Add("You can view every model and texture in a .bea file by right clicking it in the tree and clicking ''Preview''.");
|
||||
Tips.Add("Bfres materials have an option to be copied when right clicked on. Use this to easily transfer new materials!");
|
||||
Tips.Add("Most sections in a bfres can be exported and replaced!");
|
||||
Tips.Add("For MK8D and Splatoon 2, in the material editor, if the gsys_pass in render info is set to seal on an object ontop of another, you can prevent z fighting!");
|
||||
}
|
||||
private string GetRandomTip()
|
||||
{
|
||||
var shuffledTips = Tips.OrderBy(a => Guid.NewGuid()).ToList();
|
||||
return shuffledTips[0];
|
||||
}
|
||||
|
||||
private void checkBox1_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Runtime.OpenStartupWindow = !checkBox1.Checked;
|
||||
Config.Save();
|
||||
}
|
||||
|
||||
private void listView1_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (listView1.SelectedItems.Count > 0)
|
||||
{
|
||||
string fileName = listView1.SelectedItems[0].Text;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
120
Switch_Toolbox/GUI/Startup Window.resx
Normal file
120
Switch_Toolbox/GUI/Startup Window.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>
|
BIN
Switch_Toolbox/Lib/AssimpNet.dll
Normal file
BIN
Switch_Toolbox/Lib/AssimpNet.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/AssimpNet.pdb
Normal file
BIN
Switch_Toolbox/Lib/AssimpNet.pdb
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/BarsLibrary.dll
Normal file
BIN
Switch_Toolbox/Lib/BarsLibrary.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/BezelEngineArchive_Lib.dll
Normal file
BIN
Switch_Toolbox/Lib/BezelEngineArchive_Lib.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/ByamlExt.dll
Normal file
BIN
Switch_Toolbox/Lib/ByamlExt.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/Costura.dll
Normal file
BIN
Switch_Toolbox/Lib/Costura.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/CsvHelper.dll
Normal file
BIN
Switch_Toolbox/Lib/CsvHelper.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/EditorCoreCommon.dll
Normal file
BIN
Switch_Toolbox/Lib/EditorCoreCommon.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/GL_Core.dll
Normal file
BIN
Switch_Toolbox/Lib/GL_Core.dll
Normal file
Binary file not shown.
78
Switch_Toolbox/Lib/Licenses/Assimp COPYRIGHT.txt
Normal file
78
Switch_Toolbox/Lib/Licenses/Assimp COPYRIGHT.txt
Normal file
@ -0,0 +1,78 @@
|
||||
Open Asset Import Library (assimp)
|
||||
|
||||
Copyright (c) 2006-2016, assimp team
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use of this software in source and binary forms,
|
||||
with or without modification, are permitted provided that the
|
||||
following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above
|
||||
copyright notice, this list of conditions and the
|
||||
following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
|
||||
* Neither the name of the assimp team, nor the names of its
|
||||
contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior
|
||||
written permission of the assimp team.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
|
||||
******************************************************************************
|
||||
|
||||
AN EXCEPTION applies to all files in the ./test/models-nonbsd folder.
|
||||
These are 3d models for testing purposes, from various free sources
|
||||
on the internet. They are - unless otherwise stated - copyright of
|
||||
their respective creators, which may impose additional requirements
|
||||
on the use of their work. For any of these models, see
|
||||
<model-name>.source.txt for more legal information. Contact us if you
|
||||
are a copyright holder and believe that we credited you inproperly or
|
||||
if you don't want your files to appear in the repository.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors
|
||||
http://code.google.com/p/poly2tri/
|
||||
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of Poly2Tri nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
21
Switch_Toolbox/Lib/Licenses/SFGraphics COPYRIGHT.txt
Normal file
21
Switch_Toolbox/Lib/Licenses/SFGraphics COPYRIGHT.txt
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 SMG
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
21
Switch_Toolbox/Lib/Licenses/SmashForge COPYRIGHT.txt
Normal file
21
Switch_Toolbox/Lib/Licenses/SmashForge COPYRIGHT.txt
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 jam1garner
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
30
Switch_Toolbox/Lib/Licenses/ZSTD NET COPYRIGHT.txt
Normal file
30
Switch_Toolbox/Lib/Licenses/ZSTD NET COPYRIGHT.txt
Normal file
@ -0,0 +1,30 @@
|
||||
BSD License
|
||||
|
||||
For ZstdNet software
|
||||
|
||||
Copyright (c) 2016-2018, SKB Kontur. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name SKB Kontur nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
BIN
Switch_Toolbox/Lib/NAudio.dll
Normal file
BIN
Switch_Toolbox/Lib/NAudio.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/Octokit.dll
Normal file
BIN
Switch_Toolbox/Lib/Octokit.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/OpenTK.GLControl.dll
Normal file
BIN
Switch_Toolbox/Lib/OpenTK.GLControl.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/OpenTK.dll
Normal file
BIN
Switch_Toolbox/Lib/OpenTK.dll
Normal file
Binary file not shown.
1
Switch_Toolbox/Lib/Plugins/Blank.txt
Normal file
1
Switch_Toolbox/Lib/Plugins/Blank.txt
Normal file
@ -0,0 +1 @@
|
||||
|
1
Switch_Toolbox/Lib/README.txt
Normal file
1
Switch_Toolbox/Lib/README.txt
Normal file
@ -0,0 +1 @@
|
||||
Note if you hae an issue with your libray being in this repo please contact me and i will remove it!.
|
BIN
Switch_Toolbox/Lib/SARCExt.dll
Normal file
BIN
Switch_Toolbox/Lib/SARCExt.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/SFGraphics.Utils.dll
Normal file
BIN
Switch_Toolbox/Lib/SFGraphics.Utils.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/SFGraphics.dll
Normal file
BIN
Switch_Toolbox/Lib/SFGraphics.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/Switch_Toolbox.Library.dll
Normal file
BIN
Switch_Toolbox/Lib/Switch_Toolbox.Library.dll
Normal file
Binary file not shown.
11
Switch_Toolbox/Lib/Switch_Toolbox.Library.dll.config
Normal file
11
Switch_Toolbox/Lib/Switch_Toolbox.Library.dll.config
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
BIN
Switch_Toolbox/Lib/Switch_Toolbox.Library.pdb
Normal file
BIN
Switch_Toolbox/Lib/Switch_Toolbox.Library.pdb
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/Syroot.BinaryData.dll
Normal file
BIN
Switch_Toolbox/Lib/Syroot.BinaryData.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/Syroot.Maths.dll
Normal file
BIN
Switch_Toolbox/Lib/Syroot.Maths.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/VGAudio.dll
Normal file
BIN
Switch_Toolbox/Lib/VGAudio.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/VisualStudioTabControl.dll
Normal file
BIN
Switch_Toolbox/Lib/VisualStudioTabControl.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll
Normal file
BIN
Switch_Toolbox/Lib/WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/WeifenLuo.WinFormsUI.Docking.dll
Normal file
BIN
Switch_Toolbox/Lib/WeifenLuo.WinFormsUI.Docking.dll
Normal file
Binary file not shown.
BIN
Switch_Toolbox/Lib/ZstdNet.dll
Normal file
BIN
Switch_Toolbox/Lib/ZstdNet.dll
Normal file
Binary file not shown.
377
Switch_Toolbox/MainForm.Designer.cs
generated
Normal file
377
Switch_Toolbox/MainForm.Designer.cs
generated
Normal file
@ -0,0 +1,377 @@
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <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(MainForm));
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.menuStrip1 = new Switch_Toolbox.Library.Forms.ContextMenuStripDark();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.recentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.exportShaderErrorsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveConfigToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.clearWorkspaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.windowsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.compressionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.yaz0ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.yaz0DecompressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.yaz0CompressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.gzipToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.gzipCompressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.gzipDecompressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pluginsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.experimentalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.showObjectlistToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.dockPanel1 = new Switch_Toolbox.Library.Forms.DockPanelCustom();
|
||||
this.panel1.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.menuStrip1);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(779, 38);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35)))));
|
||||
this.menuStrip1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.menuStrip1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem,
|
||||
this.editToolStripMenuItem,
|
||||
this.windowsToolStripMenuItem,
|
||||
this.toolsToolStripMenuItem,
|
||||
this.pluginsToolStripMenuItem,
|
||||
this.settingsToolStripMenuItem,
|
||||
this.aboutToolStripMenuItem,
|
||||
this.experimentalToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(779, 38);
|
||||
this.menuStrip1.TabIndex = 0;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
this.menuStrip1.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.menuStrip1_ItemClicked_1);
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem,
|
||||
this.openToolStripMenuItem,
|
||||
this.recentToolStripMenuItem,
|
||||
this.exportShaderErrorsToolStripMenuItem,
|
||||
this.saveConfigToolStripMenuItem,
|
||||
this.saveToolStripMenuItem,
|
||||
this.saveAsToolStripMenuItem,
|
||||
this.exitToolStripMenuItem,
|
||||
this.clearWorkspaceToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.fileToolStripMenuItem.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 34);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
this.fileToolStripMenuItem.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
//
|
||||
// newToolStripMenuItem
|
||||
//
|
||||
this.newToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.newToolStripMenuItem.Text = "New";
|
||||
//
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
this.openToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.openToolStripMenuItem.Text = "Open";
|
||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
|
||||
//
|
||||
// recentToolStripMenuItem
|
||||
//
|
||||
this.recentToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.recentToolStripMenuItem.Name = "recentToolStripMenuItem";
|
||||
this.recentToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.recentToolStripMenuItem.Text = "Recent";
|
||||
//
|
||||
// exportShaderErrorsToolStripMenuItem
|
||||
//
|
||||
this.exportShaderErrorsToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.exportShaderErrorsToolStripMenuItem.Name = "exportShaderErrorsToolStripMenuItem";
|
||||
this.exportShaderErrorsToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.exportShaderErrorsToolStripMenuItem.Text = "Export Shader Errors";
|
||||
this.exportShaderErrorsToolStripMenuItem.Click += new System.EventHandler(this.exportShaderErrorsToolStripMenuItem_Click);
|
||||
//
|
||||
// saveConfigToolStripMenuItem
|
||||
//
|
||||
this.saveConfigToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.saveConfigToolStripMenuItem.Name = "saveConfigToolStripMenuItem";
|
||||
this.saveConfigToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.saveConfigToolStripMenuItem.Text = "Save Config";
|
||||
this.saveConfigToolStripMenuItem.Click += new System.EventHandler(this.saveConfigToolStripMenuItem_Click);
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Enabled = false;
|
||||
this.saveToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.saveToolStripMenuItem.Text = "Save";
|
||||
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
|
||||
//
|
||||
// saveAsToolStripMenuItem
|
||||
//
|
||||
this.saveAsToolStripMenuItem.Enabled = false;
|
||||
this.saveAsToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
|
||||
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.saveAsToolStripMenuItem.Text = "Save As";
|
||||
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click);
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
this.exitToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.exitToolStripMenuItem.Text = "Exit";
|
||||
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click_1);
|
||||
//
|
||||
// clearWorkspaceToolStripMenuItem
|
||||
//
|
||||
this.clearWorkspaceToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.clearWorkspaceToolStripMenuItem.Name = "clearWorkspaceToolStripMenuItem";
|
||||
this.clearWorkspaceToolStripMenuItem.Size = new System.Drawing.Size(179, 22);
|
||||
this.clearWorkspaceToolStripMenuItem.Text = "Clear Workspace";
|
||||
this.clearWorkspaceToolStripMenuItem.Click += new System.EventHandler(this.clearWorkspaceToolStripMenuItem_Click);
|
||||
//
|
||||
// editToolStripMenuItem
|
||||
//
|
||||
this.editToolStripMenuItem.Checked = true;
|
||||
this.editToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.editToolStripMenuItem.Enabled = false;
|
||||
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||
this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 34);
|
||||
this.editToolStripMenuItem.Text = "Edit";
|
||||
//
|
||||
// windowsToolStripMenuItem
|
||||
//
|
||||
this.windowsToolStripMenuItem.Name = "windowsToolStripMenuItem";
|
||||
this.windowsToolStripMenuItem.Size = new System.Drawing.Size(68, 34);
|
||||
this.windowsToolStripMenuItem.Text = "Windows";
|
||||
//
|
||||
// toolsToolStripMenuItem
|
||||
//
|
||||
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.compressionToolStripMenuItem});
|
||||
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
|
||||
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 34);
|
||||
this.toolsToolStripMenuItem.Text = "Tools";
|
||||
//
|
||||
// compressionToolStripMenuItem
|
||||
//
|
||||
this.compressionToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.yaz0ToolStripMenuItem,
|
||||
this.gzipToolStripMenuItem});
|
||||
this.compressionToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.compressionToolStripMenuItem.Name = "compressionToolStripMenuItem";
|
||||
this.compressionToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
|
||||
this.compressionToolStripMenuItem.Text = "Compression";
|
||||
//
|
||||
// yaz0ToolStripMenuItem
|
||||
//
|
||||
this.yaz0ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.yaz0DecompressToolStripMenuItem,
|
||||
this.yaz0CompressToolStripMenuItem});
|
||||
this.yaz0ToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.yaz0ToolStripMenuItem.Name = "yaz0ToolStripMenuItem";
|
||||
this.yaz0ToolStripMenuItem.Size = new System.Drawing.Size(99, 22);
|
||||
this.yaz0ToolStripMenuItem.Text = "Yaz0";
|
||||
//
|
||||
// yaz0DecompressToolStripMenuItem
|
||||
//
|
||||
this.yaz0DecompressToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.yaz0DecompressToolStripMenuItem.Name = "yaz0DecompressToolStripMenuItem";
|
||||
this.yaz0DecompressToolStripMenuItem.Size = new System.Drawing.Size(139, 22);
|
||||
this.yaz0DecompressToolStripMenuItem.Text = "Decompress";
|
||||
this.yaz0DecompressToolStripMenuItem.Click += new System.EventHandler(this.yaz0DecompressToolStripMenuItem_Click);
|
||||
//
|
||||
// yaz0CompressToolStripMenuItem
|
||||
//
|
||||
this.yaz0CompressToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.yaz0CompressToolStripMenuItem.Name = "yaz0CompressToolStripMenuItem";
|
||||
this.yaz0CompressToolStripMenuItem.Size = new System.Drawing.Size(139, 22);
|
||||
this.yaz0CompressToolStripMenuItem.Text = "Compress";
|
||||
this.yaz0CompressToolStripMenuItem.Click += new System.EventHandler(this.yaz0CompressToolStripMenuItem_Click);
|
||||
//
|
||||
// gzipToolStripMenuItem
|
||||
//
|
||||
this.gzipToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.gzipCompressToolStripMenuItem,
|
||||
this.gzipDecompressToolStripMenuItem});
|
||||
this.gzipToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.gzipToolStripMenuItem.Name = "gzipToolStripMenuItem";
|
||||
this.gzipToolStripMenuItem.Size = new System.Drawing.Size(99, 22);
|
||||
this.gzipToolStripMenuItem.Text = "GZIP";
|
||||
//
|
||||
// gzipCompressToolStripMenuItem
|
||||
//
|
||||
this.gzipCompressToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.gzipCompressToolStripMenuItem.Name = "gzipCompressToolStripMenuItem";
|
||||
this.gzipCompressToolStripMenuItem.Size = new System.Drawing.Size(139, 22);
|
||||
this.gzipCompressToolStripMenuItem.Text = "Compress";
|
||||
this.gzipCompressToolStripMenuItem.Click += new System.EventHandler(this.gzipCompressToolStripMenuItem_Click);
|
||||
//
|
||||
// gzipDecompressToolStripMenuItem
|
||||
//
|
||||
this.gzipDecompressToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.gzipDecompressToolStripMenuItem.Name = "gzipDecompressToolStripMenuItem";
|
||||
this.gzipDecompressToolStripMenuItem.Size = new System.Drawing.Size(139, 22);
|
||||
this.gzipDecompressToolStripMenuItem.Text = "Decompress";
|
||||
this.gzipDecompressToolStripMenuItem.Click += new System.EventHandler(this.gzipDecompressToolStripMenuItem_Click);
|
||||
//
|
||||
// pluginsToolStripMenuItem
|
||||
//
|
||||
this.pluginsToolStripMenuItem.Name = "pluginsToolStripMenuItem";
|
||||
this.pluginsToolStripMenuItem.Size = new System.Drawing.Size(58, 34);
|
||||
this.pluginsToolStripMenuItem.Text = "Plugins";
|
||||
this.pluginsToolStripMenuItem.Click += new System.EventHandler(this.pluginsToolStripMenuItem_Click);
|
||||
//
|
||||
// settingsToolStripMenuItem
|
||||
//
|
||||
this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
|
||||
this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 34);
|
||||
this.settingsToolStripMenuItem.Text = "Settings";
|
||||
this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click);
|
||||
//
|
||||
// aboutToolStripMenuItem
|
||||
//
|
||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 34);
|
||||
this.aboutToolStripMenuItem.Text = "About";
|
||||
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
||||
//
|
||||
// experimentalToolStripMenuItem
|
||||
//
|
||||
this.experimentalToolStripMenuItem.Name = "experimentalToolStripMenuItem";
|
||||
this.experimentalToolStripMenuItem.Size = new System.Drawing.Size(87, 34);
|
||||
this.experimentalToolStripMenuItem.Text = "Experimental";
|
||||
//
|
||||
// showObjectlistToolStripMenuItem
|
||||
//
|
||||
this.showObjectlistToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.showObjectlistToolStripMenuItem.Name = "showObjectlistToolStripMenuItem";
|
||||
this.showObjectlistToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.showObjectlistToolStripMenuItem.Text = "Show Objectlist";
|
||||
this.showObjectlistToolStripMenuItem.Click += new System.EventHandler(this.showObjectlistToolStripMenuItem_Click);
|
||||
//
|
||||
// dockPanel1
|
||||
//
|
||||
this.dockPanel1.AllowDrop = true;
|
||||
this.dockPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.dockPanel1.DockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48)))));
|
||||
this.dockPanel1.Location = new System.Drawing.Point(0, 38);
|
||||
this.dockPanel1.Name = "dockPanel1";
|
||||
this.dockPanel1.Padding = new System.Windows.Forms.Padding(6);
|
||||
this.dockPanel1.ShowAutoHideContentOnHover = false;
|
||||
this.dockPanel1.Size = new System.Drawing.Size(780, 422);
|
||||
this.dockPanel1.TabIndex = 1;
|
||||
this.dockPanel1.DockChanged += new System.EventHandler(this.dockPanel1_DockChanged);
|
||||
this.dockPanel1.DragDrop += new System.Windows.Forms.DragEventHandler(this.dockPanel1_DragDrop);
|
||||
this.dockPanel1.DragEnter += new System.Windows.Forms.DragEventHandler(this.dockPanel1_DragEnter);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.ClientSize = new System.Drawing.Size(779, 460);
|
||||
this.Controls.Add(this.dockPanel1);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.IsMdiContainer = true;
|
||||
this.KeyPreview = true;
|
||||
this.Name = "MainForm";
|
||||
this.Text = "Switch Toolbox";
|
||||
this.Load += new System.EventHandler(this.Form4_Load);
|
||||
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown);
|
||||
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private Switch_Toolbox.Library.Forms.ContextMenuStripDark menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem recentToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
|
||||
private Switch_Toolbox.Library.Forms.DockPanelCustom dockPanel1;
|
||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem pluginsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem windowsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem showObjectlistToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveConfigToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem exportShaderErrorsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem clearWorkspaceToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem compressionToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem yaz0ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem yaz0DecompressToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem yaz0CompressToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem gzipToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem gzipCompressToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem gzipDecompressToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem experimentalToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
||||
}
|
||||
}
|
598
Switch_Toolbox/MainForm.cs
Normal file
598
Switch_Toolbox/MainForm.cs
Normal file
@ -0,0 +1,598 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Switch_Toolbox.Library.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Switch_Toolbox.Library;
|
||||
using Smash_Forge.Rendering;
|
||||
using Switch_Toolbox.Library.IO;
|
||||
using System.Net;
|
||||
|
||||
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public static string executableDir = null;
|
||||
public DockContentST dockContent;
|
||||
public string LatestUpdateUrl = "";
|
||||
|
||||
List<string> RecentFiles = new List<string>();
|
||||
|
||||
public ObjectList objectList = null;
|
||||
IFileFormat[] SupportedFormats;
|
||||
IFileMenuExtension[] FileMenuExtensions;
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
ShaderTools.executableDir = executableDir;
|
||||
|
||||
Config.StartupFromFile(MainForm.executableDir + "\\config.xml");
|
||||
dockContent = new DockContentST();
|
||||
dockContent = Viewport.Instance;
|
||||
|
||||
GenericPluginLoader.LoadPlugin();
|
||||
|
||||
foreach (var plugin in GenericPluginLoader._Plugins)
|
||||
{
|
||||
plugin.Value.MainForm = this;
|
||||
plugin.Value.DockedEditor = dockContent;
|
||||
plugin.Value.Load();
|
||||
LoadPluginContextMenus(plugin.Value.Types);
|
||||
}
|
||||
Settings settings = new Settings(this);
|
||||
settings.Close();
|
||||
Reload();
|
||||
LoadPluginFileContextMenus();
|
||||
}
|
||||
private List<IMenuExtension> menuExtentions = new List<IMenuExtension>();
|
||||
private void LoadPluginContextMenus(Type[] types)
|
||||
{
|
||||
foreach (Type T in types)
|
||||
{
|
||||
Type[] interfaces_array = T.GetInterfaces();
|
||||
for (int i = 0; i < interfaces_array.Length; i++)
|
||||
{
|
||||
if (interfaces_array[i] == typeof(IMenuExtension))
|
||||
{
|
||||
menuExtentions.Add((IMenuExtension)Activator.CreateInstance(T));
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (IMenuExtension ext in menuExtentions)
|
||||
{
|
||||
if (ext.FileMenuExtensions != null)
|
||||
RegisterMenuExtIndex(fileToolStripMenuItem, ext.FileMenuExtensions, fileToolStripMenuItem.DropDownItems.Count); //last items are separator and settings
|
||||
if (ext.ToolsMenuExtensions != null)
|
||||
RegisterMenuExtIndex(toolsToolStripMenuItem, ext.ToolsMenuExtensions);
|
||||
if (ext.TitleBarExtensions != null)
|
||||
RegisterMenuExtIndex(menuStrip1, ext.TitleBarExtensions, menuStrip1.Items.Count);
|
||||
|
||||
}
|
||||
}
|
||||
private void LoadPluginFileContextMenus()
|
||||
{
|
||||
foreach (IFileMenuExtension ext in FileMenuExtensions)
|
||||
{
|
||||
if (ext.NewFileMenuExtensions != null)
|
||||
RegisterMenuExtIndex(newToolStripMenuItem, ext.NewFileMenuExtensions, newToolStripMenuItem.DropDownItems.Count);
|
||||
if (ext.ToolsMenuExtensions != null)
|
||||
RegisterMenuExtIndex(toolsToolStripMenuItem, ext.ToolsMenuExtensions);
|
||||
if (ext.TitleBarExtensions != null)
|
||||
RegisterMenuExtIndex(menuStrip1, ext.TitleBarExtensions, menuStrip1.Items.Count);
|
||||
if (ext.ExperimentalMenuExtensions != null)
|
||||
RegisterMenuExtIndex(experimentalToolStripMenuItem, ext.ExperimentalMenuExtensions, experimentalToolStripMenuItem.DropDownItems.Count);
|
||||
if (ext.CompressionMenuExtensions != null)
|
||||
RegisterMenuExtIndex(compressionToolStripMenuItem, ext.CompressionMenuExtensions, compressionToolStripMenuItem.DropDownItems.Count);
|
||||
}
|
||||
}
|
||||
void RegisterMenuExtIndex(ToolStripMenuItem target, ToolStripItemDark[] list, int index = 0)
|
||||
{
|
||||
foreach (var i in list)
|
||||
target.DropDownItems.Insert(index++, i);
|
||||
}
|
||||
void RegisterMenuExtIndex(ToolStrip target, ToolStripItemDark[] list, int index = 0)
|
||||
{
|
||||
foreach (var i in list)
|
||||
target.Items.Insert(index++, i);
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
SupportedFormats = FileManager.GetFileFormats();
|
||||
FileMenuExtensions = FileManager.GetMenuExtensions();
|
||||
}
|
||||
|
||||
private void Form4_Load(object sender, EventArgs e)
|
||||
{
|
||||
LoadObjectList();
|
||||
LoadRecentList();
|
||||
foreach (string item in RecentFiles)
|
||||
{
|
||||
ToolStripMenuItem fileRecent = new ToolStripMenuItem();
|
||||
fileRecent.Click += RecentFile_click;
|
||||
fileRecent.Text = item;
|
||||
fileRecent.Size = new System.Drawing.Size(170, 40);
|
||||
fileRecent.AutoSize = true;
|
||||
fileRecent.Image = null;
|
||||
fileRecent.ForeColor = Color.White;
|
||||
recentToolStripMenuItem.DropDownItems.Add(fileRecent); //add the menu to "recent" menu
|
||||
}
|
||||
dockContent.Show(dockPanel1, DockState.Document);
|
||||
|
||||
if (OpenTK.Graphics.GraphicsContext.CurrentContext != null)
|
||||
{
|
||||
OpenTKSharedResources.InitializeSharedResources();
|
||||
}
|
||||
|
||||
if (Runtime.OpenStartupWindow)
|
||||
{
|
||||
Startup_Window window = new Startup_Window();
|
||||
window.TopMost = true;
|
||||
window.Show();
|
||||
}
|
||||
}
|
||||
const int MRUnumber = 6;
|
||||
private void SaveRecentFile(string path)
|
||||
{
|
||||
recentToolStripMenuItem.DropDownItems.Clear();
|
||||
LoadRecentList(); //load list from file
|
||||
if (!(RecentFiles.Contains(path))) //prevent duplication on recent list
|
||||
RecentFiles.Insert(0, path); //insert given path into list
|
||||
|
||||
//keep list number not exceeded the given value
|
||||
while (RecentFiles.Count > MRUnumber)
|
||||
{
|
||||
RecentFiles.RemoveAt(MRUnumber);
|
||||
}
|
||||
foreach (string item in RecentFiles)
|
||||
{
|
||||
//create new menu for each item in list
|
||||
ToolStripMenuItem fileRecent = new ToolStripMenuItem();
|
||||
fileRecent.Click += RecentFile_click;
|
||||
fileRecent.Text = item;
|
||||
fileRecent.Size = new System.Drawing.Size(170, 40);
|
||||
fileRecent.AutoSize = true;
|
||||
fileRecent.Image = null;
|
||||
fileRecent.ForeColor = Color.White;
|
||||
|
||||
//add the menu to "recent" menu
|
||||
recentToolStripMenuItem.DropDownItems.Add(fileRecent);
|
||||
}
|
||||
//writing menu list to file
|
||||
//create file called "Recent.txt" located on app folder
|
||||
StreamWriter stringToWrite =
|
||||
new StreamWriter(System.Environment.CurrentDirectory + "\\Recent.txt");
|
||||
foreach (string item in RecentFiles)
|
||||
{
|
||||
stringToWrite.WriteLine(item); //write list to stream
|
||||
}
|
||||
stringToWrite.Flush(); //write stream to file
|
||||
stringToWrite.Close(); //close the stream and reclaim memory
|
||||
}
|
||||
private void LoadRecentList()
|
||||
{//try to load file. If file isn't found, do nothing
|
||||
RecentFiles.Clear();
|
||||
try
|
||||
{
|
||||
StreamReader listToRead = new StreamReader(System.Environment.CurrentDirectory + "\\Recent.txt"); //read file stream
|
||||
string line;
|
||||
while ((line = listToRead.ReadLine()) != null) //read each line until end of file
|
||||
{
|
||||
if (File.Exists(line))
|
||||
RecentFiles.Add(line); //insert to list
|
||||
}
|
||||
listToRead.Close(); //close the stream
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
//throw;
|
||||
}
|
||||
|
||||
}
|
||||
private void LoadObjectList()
|
||||
{
|
||||
objectList = new ObjectList();
|
||||
objectList.Show(dockPanel1, Runtime.objectListDockState);
|
||||
}
|
||||
public void SaveFile(IFileFormat format, string FileName)
|
||||
{
|
||||
byte[] data = format.Save();
|
||||
int Alignment = format.Alignment;
|
||||
Console.WriteLine(Alignment);
|
||||
|
||||
SaveCompressFile(data, FileName, Alignment);
|
||||
}
|
||||
private void SaveCompressFile(byte[] data, string FileName, int Alignment = 0, bool EnableDialog = true)
|
||||
{
|
||||
if (EnableDialog)
|
||||
{
|
||||
DialogResult save = MessageBox.Show("Compress file?", "File Save", MessageBoxButtons.YesNo);
|
||||
|
||||
if (save == DialogResult.Yes)
|
||||
data = EveryFileExplorer.YAZ0.Compress(data, 3, (uint)Alignment);
|
||||
}
|
||||
File.WriteAllBytes(FileName, data);
|
||||
MessageBox.Show($"File has been saved to {FileName}");
|
||||
Cursor.Current = Cursors.Default;
|
||||
}
|
||||
public void OpenFile(string FileName, byte[] data = null, bool Compressed = false,
|
||||
CompressionType CompType = CompressionType.None)
|
||||
{
|
||||
if (data == null)
|
||||
data = File.ReadAllBytes(FileName);
|
||||
|
||||
if (File.Exists(FileName))
|
||||
SaveRecentFile(FileName);
|
||||
|
||||
FileReader f = new FileReader(data);
|
||||
string Magic = f.ReadMagic(0, 4);
|
||||
string Magic2 = f.ReadMagic(0, 2);
|
||||
|
||||
//Determine if the file is compressed or not
|
||||
if (Magic == "Yaz0")
|
||||
{
|
||||
data = EveryFileExplorer.YAZ0.Decompress(data).ToArray();
|
||||
OpenFile(FileName, data, true, CompressionType.Yaz0);
|
||||
return;
|
||||
}
|
||||
if (Magic == "ZLIB")
|
||||
{
|
||||
data = FileReader.InflateZLIB(f.getSection(64, data.Length - 64));
|
||||
OpenFile(FileName, data, true, CompressionType.Zlib);
|
||||
return;
|
||||
}
|
||||
|
||||
f.Dispose();
|
||||
f.Close();
|
||||
|
||||
foreach (IFileFormat format in SupportedFormats)
|
||||
{
|
||||
Console.WriteLine(format.Magic.Reverse());
|
||||
Console.WriteLine(Magic2);
|
||||
|
||||
if (format.Magic == Magic || format.Magic == Magic2 || format.Magic.Reverse() == Magic2)
|
||||
{
|
||||
format.CompressionType = CompType;
|
||||
format.FileIsCompressed = Compressed;
|
||||
format.Data = data;
|
||||
format.FileName = Path.GetFileName(FileName);
|
||||
format.Load();
|
||||
format.FilePath = FileName;
|
||||
|
||||
if (format.EditorRoot != null)
|
||||
{
|
||||
objectList.treeView1.Nodes.Add(format.EditorRoot);
|
||||
}
|
||||
|
||||
if (format.CanSave)
|
||||
{
|
||||
saveAsToolStripMenuItem.Enabled = true;
|
||||
saveToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
if (format.UseEditMenu)
|
||||
editToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
if (format.Magic == String.Empty) //Load by extension if magic isn't defined
|
||||
{
|
||||
foreach (string ext in format.Extension)
|
||||
{
|
||||
if (ext.Remove(0, 1) == Path.GetExtension(FileName))
|
||||
{
|
||||
format.CompressionType = CompType;
|
||||
format.FileIsCompressed = Compressed;
|
||||
format.Data = data;
|
||||
format.FileName = Path.GetFileName(FileName);
|
||||
format.FilePath = FileName;
|
||||
format.Load();
|
||||
|
||||
if (format.EditorRoot != null)
|
||||
{
|
||||
objectList.treeView1.Nodes.Add(format.EditorRoot);
|
||||
}
|
||||
|
||||
if (format.CanSave)
|
||||
{
|
||||
saveAsToolStripMenuItem.Enabled = true;
|
||||
saveToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
if (format.UseEditMenu)
|
||||
editToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void DisposeControls()
|
||||
{
|
||||
|
||||
}
|
||||
private void RecentFile_click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFile(sender.ToString());
|
||||
}
|
||||
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void menuStrip1_ItemClicked_1(object sender, ToolStripItemClickedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void exitToolStripMenuItem_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void pluginsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
PluginManager pluginManager = new PluginManager();
|
||||
pluginManager.Show();
|
||||
}
|
||||
|
||||
private void openToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.Filter = Utils.GetAllFilters(SupportedFormats);
|
||||
ofd.Multiselect = true;
|
||||
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
foreach (string file in ofd.FileNames)
|
||||
OpenFile(file);
|
||||
}
|
||||
}
|
||||
|
||||
private void showObjectlistToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (objectList == null)
|
||||
LoadObjectList();
|
||||
}
|
||||
|
||||
private void dockPanel1_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
foreach (string filename in files)
|
||||
{
|
||||
OpenFile(filename);
|
||||
}
|
||||
}
|
||||
|
||||
private void dockPanel1_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||
e.Effect = DragDropEffects.All;
|
||||
else
|
||||
{
|
||||
String[] strGetFormats = e.Data.GetFormats();
|
||||
e.Effect = DragDropEffects.None;
|
||||
}
|
||||
}
|
||||
|
||||
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFile(true);
|
||||
}
|
||||
|
||||
private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void SaveFile(bool UseSaveDialog)
|
||||
{
|
||||
foreach (IFileFormat format in SupportedFormats)
|
||||
{
|
||||
if (format.CanSave)
|
||||
{
|
||||
List<IFileFormat> f = new List<IFileFormat>();
|
||||
f.Add(format);
|
||||
|
||||
if (UseSaveDialog)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = Utils.GetAllFilters(f);
|
||||
sfd.FileName = format.FileName;
|
||||
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
SaveFile(format, sfd.FileName);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveFile(format, format.FilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void MainForm_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.Control && e.KeyCode == Keys.S) // Ctrl-S Save
|
||||
{
|
||||
// Do what you want here
|
||||
SaveFile(true);
|
||||
|
||||
e.SuppressKeyPress = true; // Stops other controls on the form receiving event.
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFile(false);
|
||||
}
|
||||
|
||||
private void saveConfigToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Config.Save();
|
||||
|
||||
// dockPanel1.SaveAsXml("DockStates/" + dockPanel1.Text + ".xml");
|
||||
}
|
||||
|
||||
private void dockPanel1_DockChanged(object sender, EventArgs e)
|
||||
{
|
||||
Console.WriteLine(e.ToString());
|
||||
}
|
||||
|
||||
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Settings settings = new Settings(this);
|
||||
settings.Show();
|
||||
}
|
||||
|
||||
private void exportShaderErrorsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShaderTools.SaveErrorLogs();
|
||||
}
|
||||
|
||||
private void clearWorkspaceToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var plugin in GenericPluginLoader._Plugins)
|
||||
{
|
||||
plugin.Value.Unload();
|
||||
|
||||
foreach (IFileFormat format in SupportedFormats)
|
||||
{
|
||||
if (format.IsActive)
|
||||
{
|
||||
format.Unload();
|
||||
}
|
||||
}
|
||||
}
|
||||
Viewport.Instance.Dispose();
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
public void CompressData(CompressionType CompressionType, byte[] data)
|
||||
{
|
||||
switch (CompressionType)
|
||||
{
|
||||
case CompressionType.Yaz0:
|
||||
SaveFileForCompression(EveryFileExplorer.YAZ0.Compress(data));
|
||||
break;
|
||||
case CompressionType.Zlib:
|
||||
break;
|
||||
case CompressionType.Gzip:
|
||||
SaveFileForCompression(STLibraryCompression.GZIP.Compress(data));
|
||||
break;
|
||||
case CompressionType.Zstb:
|
||||
break;
|
||||
}
|
||||
}
|
||||
public void DecompressData(CompressionType CompressionType, byte[] data)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (CompressionType)
|
||||
{
|
||||
case CompressionType.Yaz0:
|
||||
SaveFileForCompression(EveryFileExplorer.YAZ0.Decompress(data));
|
||||
break;
|
||||
case CompressionType.Zlib:
|
||||
break;
|
||||
case CompressionType.Gzip:
|
||||
SaveFileForCompression(STLibraryCompression.GZIP.Decompress(data));
|
||||
break;
|
||||
case CompressionType.Zstb:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show($"File not compressed with {CompressionType} compression!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void yaz0DecompressToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileForCompression(CompressionType.Yaz0, false);
|
||||
}
|
||||
private void yaz0CompressToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileForCompression(CompressionType.Yaz0, true);
|
||||
}
|
||||
private void gzipCompressToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileForCompression(CompressionType.Gzip, true);
|
||||
}
|
||||
private void gzipDecompressToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileForCompression(CompressionType.Gzip, false);
|
||||
}
|
||||
|
||||
private void SaveFileForCompression(byte[] data)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = "All files(*.*)|*.*";
|
||||
|
||||
Cursor.Current = Cursors.Default;
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
SaveCompressFile(data, sfd.FileName, 0, false);
|
||||
}
|
||||
}
|
||||
private void OpenFileForCompression(CompressionType compressionType, bool Compress)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.Filter = "All files(*.*)|*.*";
|
||||
ofd.Multiselect = true;
|
||||
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
foreach (string file in ofd.FileNames)
|
||||
{
|
||||
if (Compress)
|
||||
CompressData(compressionType, File.ReadAllBytes(ofd.FileName));
|
||||
else
|
||||
DecompressData(compressionType, File.ReadAllBytes(ofd.FileName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkUpdatesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (LatestUpdateUrl == "")
|
||||
return;
|
||||
|
||||
using (var webClient = new WebClient())
|
||||
{
|
||||
webClient.DownloadFile(LatestUpdateUrl, "update.zip");
|
||||
webClient.DownloadDataCompleted += UpdateDownloadCompleted;
|
||||
}
|
||||
}
|
||||
void UpdateDownloadCompleted(object sender, DownloadDataCompletedEventArgs e)
|
||||
{
|
||||
MessageBox.Show("Update downloaded!");
|
||||
|
||||
System.IO.Compression.ZipFile.ExtractToDirectory("update.zip", "update/");
|
||||
}
|
||||
|
||||
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
CreditsWindow credits = new CreditsWindow();
|
||||
credits.TopMost = true;
|
||||
credits.Show();
|
||||
}
|
||||
}
|
||||
}
|
2502
Switch_Toolbox/MainForm.resx
Normal file
2502
Switch_Toolbox/MainForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
24
Switch_Toolbox/Program.cs
Normal file
24
Switch_Toolbox/Program.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Switch_Toolbox
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
MainForm.executableDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
1
Switch_Toolbox/Projects/Recent/DUMMY.txt
Normal file
1
Switch_Toolbox/Projects/Recent/DUMMY.txt
Normal file
@ -0,0 +1 @@
|
||||
|
36
Switch_Toolbox/Properties/AssemblyInfo.cs
Normal file
36
Switch_Toolbox/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Switch_Toolbox")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Switch_Toolbox")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("e861c28b-b039-48f7-9a4f-c83f67c0adde")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
83
Switch_Toolbox/Properties/Resources.Designer.cs
generated
Normal file
83
Switch_Toolbox/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,83 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Switch_Toolbox.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Switch_Toolbox.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Logo {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Logo", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Tool {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Tool", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
127
Switch_Toolbox/Properties/Resources.resx
Normal file
127
Switch_Toolbox/Properties/Resources.resx
Normal file
@ -0,0 +1,127 @@
|
||||
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Tool" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Tool.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
26
Switch_Toolbox/Properties/Settings.Designer.cs
generated
Normal file
26
Switch_Toolbox/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Switch_Toolbox.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
Switch_Toolbox/Properties/Settings.settings
Normal file
7
Switch_Toolbox/Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
BIN
Switch_Toolbox/Resources/Logo.png
Normal file
BIN
Switch_Toolbox/Resources/Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
152
Switch_Toolbox/Shader/Bfres/BFRES.frag
Normal file
152
Switch_Toolbox/Shader/Bfres/BFRES.frag
Normal file
@ -0,0 +1,152 @@
|
||||
#version 330
|
||||
|
||||
in vec2 f_texcoord0;
|
||||
in vec2 f_texcoord1;
|
||||
in vec2 f_texcoord2;
|
||||
in vec2 f_texcoord3;
|
||||
|
||||
in vec3 objectPosition;
|
||||
|
||||
in vec3 normal;
|
||||
in vec3 viewNormal;
|
||||
in vec4 vertexColor;
|
||||
in vec3 tangent;
|
||||
in vec3 bitangent;
|
||||
|
||||
in vec3 boneWeightsColored;
|
||||
|
||||
uniform sampler2D DiffuseMap;
|
||||
uniform sampler2D BakeShadowMap;
|
||||
uniform sampler2D SpecularMap;
|
||||
uniform sampler2D NormalMap;
|
||||
uniform sampler2D BakeLightMap;
|
||||
uniform sampler2D UVTestPattern;
|
||||
uniform sampler2D TransparencyMap;
|
||||
uniform sampler2D EmissionMap;
|
||||
uniform sampler2D DiffuseLayer;
|
||||
uniform sampler2D MetalnessMap;
|
||||
uniform sampler2D RoughnessMap;
|
||||
uniform sampler2D MRA;
|
||||
uniform sampler2D BOTWSpecularMap;
|
||||
uniform sampler2D SphereMap;
|
||||
uniform sampler2D SubSurfaceScatteringMap;
|
||||
|
||||
// Viewport Camera/Lighting
|
||||
uniform mat4 mvpMatrix;
|
||||
uniform vec3 difLightDirection;
|
||||
|
||||
// Viewport Settings
|
||||
uniform int uvChannel;
|
||||
uniform int renderType;
|
||||
uniform int useNormalMap;
|
||||
uniform vec4 colorSamplerUV;
|
||||
uniform int renderVertColor;
|
||||
uniform vec3 difLightColor;
|
||||
uniform vec3 ambLightColor;
|
||||
uniform int colorOverride;
|
||||
uniform float DefaultMetalness;
|
||||
uniform float DefaultRoughness;
|
||||
|
||||
uniform int isTransparent;
|
||||
|
||||
// Texture Map Toggles
|
||||
uniform int HasDiffuse;
|
||||
uniform int HasNormalMap;
|
||||
uniform int HasSpecularMap;
|
||||
uniform int HasShadowMap;
|
||||
uniform int HasAmbientOcclusionMap;
|
||||
uniform int HasLightMap;
|
||||
uniform int HasTransparencyMap;
|
||||
uniform int HasEmissionMap;
|
||||
uniform int HasDiffuseLayer;
|
||||
uniform int HasMetalnessMap;
|
||||
uniform int HasRoughnessMap;
|
||||
uniform int HasMRA;
|
||||
uniform int HasSubSurfaceScatteringMap;
|
||||
|
||||
uniform vec4 const_color0;
|
||||
uniform vec4 base_color_mul_color;
|
||||
|
||||
struct VertexAttributes {
|
||||
vec3 objectPosition;
|
||||
vec2 texCoord;
|
||||
vec2 texCoord2;
|
||||
vec2 texCoord3;
|
||||
vec4 vertexColor;
|
||||
vec3 normal;
|
||||
vec3 viewNormal;
|
||||
vec3 tangent;
|
||||
vec3 bitangent;
|
||||
};
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
#define gamma 2.2
|
||||
|
||||
// Defined in Utility.frag.
|
||||
float Luminance(vec3 rgb);
|
||||
|
||||
vec3 CalcBumpedNormal(vec3 normal, sampler2D normalMap, VertexAttributes vert, float texCoordIndex);
|
||||
|
||||
void main()
|
||||
{
|
||||
fragColor = vec4(vec3(0), 1);
|
||||
|
||||
VertexAttributes vert;
|
||||
vert.objectPosition = objectPosition;
|
||||
vert.texCoord = f_texcoord0;
|
||||
vert.texCoord2 = f_texcoord1;
|
||||
vert.texCoord3 = f_texcoord2;
|
||||
vert.vertexColor = vertexColor;
|
||||
vert.normal = normal;
|
||||
vert.viewNormal = viewNormal;
|
||||
vert.tangent = tangent;
|
||||
vert.bitangent = bitangent;
|
||||
|
||||
// Wireframe color.
|
||||
if (colorOverride == 1)
|
||||
{
|
||||
if (renderVertColor == 1)
|
||||
fragColor = vec4(vertexColor);
|
||||
else
|
||||
fragColor = vec4(1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate shading vectors.
|
||||
vec3 I = vec3(0,0,-1) * mat3(mvpMatrix);
|
||||
|
||||
vec3 N = normal;
|
||||
if (HasNormalMap == 1 && useNormalMap == 1)
|
||||
N = CalcBumpedNormal(normal, NormalMap, vert, 0);
|
||||
|
||||
// Diffuse lighting.
|
||||
float halfLambert = dot(difLightDirection, N) * 0.5 + 0.5;
|
||||
|
||||
vec4 diffuseMapColor = vec4(texture(DiffuseMap, f_texcoord0).rgb, 1);
|
||||
diffuseMapColor *= halfLambert;
|
||||
|
||||
// vec3 displayNormal = (N * 0.5) + 0.5;
|
||||
|
||||
|
||||
// fragColor = vec4(displayNormal,1);
|
||||
|
||||
fragColor.rgb += diffuseMapColor.rgb;
|
||||
|
||||
vec3 color = vec3(1);
|
||||
vec3 normal = texture(NormalMap, f_texcoord0).rgb;
|
||||
vec3 specular = texture(SpecularMap, f_texcoord0).rgb;
|
||||
|
||||
fragColor.a *= texture(DiffuseMap, f_texcoord0).a;
|
||||
|
||||
if (renderVertColor == 1)
|
||||
fragColor *= min(vert.vertexColor, vec4(1));
|
||||
|
||||
fragColor *= min(const_color0, vec4(1));
|
||||
fragColor *= min(base_color_mul_color, vec4(1));
|
||||
|
||||
|
||||
// if (isTransparent != 1)
|
||||
// fragColor.a = 1;
|
||||
}
|
129
Switch_Toolbox/Shader/Bfres/BFRES.vert
Normal file
129
Switch_Toolbox/Shader/Bfres/BFRES.vert
Normal file
@ -0,0 +1,129 @@
|
||||
#version 330
|
||||
|
||||
uniform mat4 mvpMatrix;
|
||||
|
||||
in vec3 vPosition;
|
||||
in vec3 vNormal;
|
||||
in vec3 vTangent;
|
||||
in vec3 vBitangent;
|
||||
in vec2 vUV0;
|
||||
in vec4 vColor;
|
||||
in vec4 vBone;
|
||||
in vec4 vWeight;
|
||||
in vec2 vUV1;
|
||||
in vec2 vUV2;
|
||||
in vec3 vPosition2;
|
||||
in vec3 vPosition3;
|
||||
|
||||
out vec2 f_texcoord0;
|
||||
out vec2 f_texcoord1;
|
||||
out vec2 f_texcoord2;
|
||||
out vec2 f_texcoord3;
|
||||
|
||||
out vec3 objectPosition;
|
||||
|
||||
out vec3 normal;
|
||||
out vec3 viewNormal;
|
||||
out vec4 vertexColor;
|
||||
out vec3 tangent;
|
||||
out vec3 bitangent;
|
||||
|
||||
out vec3 boneWeightsColored;
|
||||
|
||||
// Shader Options
|
||||
uniform vec4 gsys_bake_st0;
|
||||
uniform vec4 gsys_bake_st1;
|
||||
|
||||
// Skinning uniforms
|
||||
uniform mat4 bones[200];
|
||||
//Meshes have a bone index and will use their transform depending on skin influence amount
|
||||
uniform mat4 singleBoneBindTransform;
|
||||
uniform int NoSkinning;
|
||||
uniform int RigidSkinning;
|
||||
|
||||
vec4 skin(vec3 pos, ivec4 index)
|
||||
{
|
||||
vec4 newPosition = vec4(pos.xyz, 1.0);
|
||||
|
||||
newPosition = bones[index.x] * vec4(pos, 1.0) * vWeight.x;
|
||||
newPosition += bones[index.y] * vec4(pos, 1.0) * vWeight.y;
|
||||
newPosition += bones[index.z] * vec4(pos, 1.0) * vWeight.z;
|
||||
if (vWeight.w < 1) //Necessary. Bones may scale weirdly without
|
||||
newPosition += bones[index.w] * vec4(pos, 1.0) * vWeight.w;
|
||||
|
||||
return newPosition;
|
||||
}
|
||||
|
||||
vec3 skinNRM(vec3 nr, ivec4 index)
|
||||
{
|
||||
vec3 newNormal = vec3(0);
|
||||
|
||||
newNormal = mat3(bones[index.x]) * nr * vWeight.x;
|
||||
newNormal += mat3(bones[index.y]) * nr * vWeight.y;
|
||||
newNormal += mat3(bones[index.z]) * nr * vWeight.z;
|
||||
newNormal += mat3(bones[index.w]) * nr * vWeight.w;
|
||||
|
||||
return newNormal;
|
||||
}
|
||||
|
||||
vec2 rotateUV(vec2 uv, float rotation)
|
||||
{
|
||||
float mid = 0.5;
|
||||
return vec2(
|
||||
cos(rotation) * (uv.x - mid) + sin(rotation) * (uv.y - mid) + mid,
|
||||
cos(rotation) * (uv.y - mid) - sin(rotation) * (uv.x - mid) + mid
|
||||
);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
ivec4 index = ivec4(vBone);
|
||||
|
||||
vec4 objPos = vec4(vPosition.xyz, 1.0);
|
||||
objectPosition = vPosition.xyz;
|
||||
if (vBone.x != -1.0)
|
||||
objPos = skin(vPosition, index);
|
||||
|
||||
gl_Position = mvpMatrix * vec4(objPos.xyz, 1.0);
|
||||
|
||||
normal = vNormal;
|
||||
|
||||
if(vBone.x != -1.0)
|
||||
normal = normalize((skinNRM(vNormal.xyz, index)).xyz);
|
||||
|
||||
|
||||
|
||||
if (RigidSkinning == 1)
|
||||
{
|
||||
gl_Position = mvpMatrix * bones[index.x] * vec4(vPosition, 1.0);
|
||||
normal = vNormal;
|
||||
normal = mat3(bones[index.x]) * vNormal.xyz * 1;
|
||||
}
|
||||
if (NoSkinning == 1)
|
||||
{
|
||||
gl_Position = mvpMatrix * singleBoneBindTransform * vec4(vPosition, 1.0);
|
||||
normal = mat3(singleBoneBindTransform) * vNormal.xyz * 1;
|
||||
normal = normalize(normal);
|
||||
}
|
||||
|
||||
f_texcoord0 = vUV0;
|
||||
|
||||
vec4 sampler2 = gsys_bake_st0;
|
||||
vec4 sampler3 = gsys_bake_st1;
|
||||
|
||||
if (sampler2.x != 0 && sampler2.y != 0)
|
||||
f_texcoord1 = vec2((vUV1 * sampler2.xy) + sampler2.zw);
|
||||
else
|
||||
f_texcoord1 = vec2((vUV1 * vec2(1)) + sampler2.zw);
|
||||
|
||||
if (sampler3.x != 0 && sampler3.y != 0)
|
||||
f_texcoord2 = vec2((vUV1 * sampler3.xy) + sampler3.zw);
|
||||
else
|
||||
f_texcoord2 = vec2((vUV1 * vec2(1)) + sampler3.zw);
|
||||
|
||||
f_texcoord3 = vUV2;
|
||||
|
||||
tangent = vTangent;
|
||||
bitangent = vBitangent;
|
||||
vertexColor = vColor;
|
||||
}
|
352
Switch_Toolbox/Shader/Bfres/BFRES_Botw.frag
Normal file
352
Switch_Toolbox/Shader/Bfres/BFRES_Botw.frag
Normal file
@ -0,0 +1,352 @@
|
||||
#version 330
|
||||
|
||||
in vec2 f_texcoord0;
|
||||
in vec2 f_texcoord1;
|
||||
in vec2 f_texcoord2;
|
||||
in vec2 f_texcoord3;
|
||||
|
||||
in vec3 objectPosition;
|
||||
|
||||
in vec3 normal;
|
||||
in vec4 vertexColor;
|
||||
in vec3 tangent;
|
||||
in vec3 bitangent;
|
||||
|
||||
in vec3 boneWeightsColored;
|
||||
|
||||
// Viewport Camera/Lighting
|
||||
uniform mat4 mvpMatrix;
|
||||
uniform vec3 specLightDirection;
|
||||
uniform vec3 difLightDirection;
|
||||
uniform mat4 projMatrix;
|
||||
uniform mat4 normalMatrix;
|
||||
uniform mat4 modelViewMatrix;
|
||||
uniform mat4 rotationMatrix;
|
||||
|
||||
uniform int useImageBasedLighting;
|
||||
uniform int enableCellShading;
|
||||
|
||||
uniform vec3 camPos;
|
||||
|
||||
uniform vec3 light1Pos;
|
||||
|
||||
const float levels = 3.0;
|
||||
|
||||
// Viewport Settings
|
||||
uniform int uvChannel;
|
||||
uniform int renderType;
|
||||
uniform int useNormalMap;
|
||||
uniform vec4 colorSamplerUV;
|
||||
uniform int renderVertColor;
|
||||
uniform vec3 difLightColor;
|
||||
uniform vec3 ambLightColor;
|
||||
uniform int colorOverride;
|
||||
uniform float DefaultMetalness;
|
||||
uniform float DefaultRoughness;
|
||||
|
||||
// Channel Toggles
|
||||
uniform int renderR;
|
||||
uniform int renderG;
|
||||
uniform int renderB;
|
||||
uniform int renderAlpha;
|
||||
|
||||
// Texture Samplers
|
||||
uniform sampler2D tex0;
|
||||
uniform sampler2D BakeShadowMap;
|
||||
uniform sampler2D normalMap;
|
||||
uniform sampler2D BakeLightMap;
|
||||
uniform sampler2D UVTestPattern;
|
||||
uniform sampler2D TransparencyMap;
|
||||
uniform sampler2D EmissionMap;
|
||||
uniform sampler2D SpecularMap;
|
||||
uniform sampler2D DiffuseLayer;
|
||||
uniform sampler2D MetalnessMap;
|
||||
uniform sampler2D RoughnessMap;
|
||||
uniform sampler2D MRA;
|
||||
uniform sampler2D TeamColorMap;
|
||||
uniform sampler2D SphereMap;
|
||||
|
||||
uniform samplerCube irradianceMap;
|
||||
uniform samplerCube specularIbl;
|
||||
uniform sampler2D brdfLUT;
|
||||
|
||||
// Shader Params
|
||||
uniform float normal_map_weight;
|
||||
uniform float ao_density;
|
||||
uniform float emission_intensity;
|
||||
uniform vec4 fresnelParams;
|
||||
uniform vec4 base_color_mul_color;
|
||||
uniform vec3 emission_color;
|
||||
uniform vec3 specular_color;
|
||||
|
||||
// Shader Options
|
||||
uniform float uking_texture2_texcoord;
|
||||
uniform float bake_shadow_type;
|
||||
uniform float enable_fresnel;
|
||||
uniform float enable_emission;
|
||||
uniform float cSpecularType;
|
||||
|
||||
// Texture Map Toggles
|
||||
uniform int HasDiffuse;
|
||||
uniform int HasNormalMap;
|
||||
uniform int HasSpecularMap;
|
||||
uniform int HasShadowMap;
|
||||
uniform int HasAmbientOcclusionMap;
|
||||
uniform int HasLightMap;
|
||||
uniform int HasTransparencyMap;
|
||||
uniform int HasEmissionMap;
|
||||
uniform int HasDiffuseLayer;
|
||||
uniform int HasMetalnessMap;
|
||||
uniform int HasRoughnessMap;
|
||||
uniform int HasMRA;
|
||||
|
||||
uniform int roughnessAmount;
|
||||
|
||||
uniform int UseAOMap;
|
||||
uniform int UseCavityMap;
|
||||
uniform int UseMetalnessMap;
|
||||
uniform int UseRoughnessMap;
|
||||
|
||||
int isTransparent;
|
||||
|
||||
uniform int renderDiffuse;
|
||||
uniform int renderSpecular;
|
||||
uniform int renderFresnel;
|
||||
|
||||
struct VertexAttributes
|
||||
{
|
||||
vec3 objectPosition;
|
||||
vec2 texCoord;
|
||||
vec2 texCoord2;
|
||||
vec2 texCoord3;
|
||||
vec4 vertexColor;
|
||||
vec3 normal;
|
||||
vec3 viewNormal;
|
||||
vec3 tangent;
|
||||
vec3 bitangent;
|
||||
};
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
#define gamma 2.2
|
||||
const float PI = 3.14159265359;
|
||||
|
||||
// Defined in BFRES_Utility.frag.
|
||||
vec3 CalcBumpedNormal(vec3 normal, sampler2D normalMap, VertexAttributes vert, float uking_texture2_texcoord);
|
||||
float AmbientOcclusionBlend(sampler2D BakeShadowMap, VertexAttributes vert, float ao_density);
|
||||
vec3 EmissionPass(sampler2D EmissionMap, float emission_intensity, VertexAttributes vert, float uking_texture2_texcoord, vec3 emission_color);
|
||||
|
||||
// Shader code adapted from learnopengl.com's PBR tutorial:
|
||||
// https://learnopengl.com/PBR/Theory
|
||||
|
||||
vec3 fresnelSchlick(float cosTheta, vec3 F0)
|
||||
{
|
||||
return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
|
||||
}
|
||||
|
||||
vec3 fresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness)
|
||||
{
|
||||
return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(1.0 - cosTheta, 5.0);
|
||||
}
|
||||
|
||||
float DistributionGGX(vec3 N, vec3 H, float roughness)
|
||||
{
|
||||
float a = roughness*roughness;
|
||||
float a2 = a*a;
|
||||
float NdotH = max(dot(N, H), 0.0);
|
||||
float NdotH2 = NdotH*NdotH;
|
||||
|
||||
float num = a2;
|
||||
float denom = (NdotH2 * (a2 - 1.0) + 1.0);
|
||||
denom = PI * denom * denom;
|
||||
|
||||
return num / denom;
|
||||
}
|
||||
|
||||
float GeometrySchlickGGX(float NdotV, float roughness)
|
||||
{
|
||||
float r = (roughness + 1.0);
|
||||
float k = (r*r) / 8.0;
|
||||
|
||||
float num = NdotV;
|
||||
float denom = NdotV * (1.0 - k) + k;
|
||||
|
||||
return num / denom;
|
||||
}
|
||||
|
||||
float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness)
|
||||
{
|
||||
float NdotV = max(dot(N, V), 0.0);
|
||||
float NdotL = max(dot(N, L), 0.0);
|
||||
float ggx2 = GeometrySchlickGGX(NdotV, roughness);
|
||||
float ggx1 = GeometrySchlickGGX(NdotL, roughness);
|
||||
|
||||
return ggx1 * ggx2;
|
||||
}
|
||||
|
||||
vec3 saturation(vec3 rgb, float adjustment)
|
||||
{
|
||||
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
||||
vec3 intensity = vec3(dot(rgb, W));
|
||||
return mix(intensity, rgb, adjustment);
|
||||
}
|
||||
|
||||
vec3 DiffusePass(vec3 albedo, vec3 N, vec3 L, vec3 R)
|
||||
{
|
||||
float lambert = max(dot(N, L), 0.0);
|
||||
|
||||
// Higher blend values make the dark region smoother and larger.
|
||||
float smoothness = 0.1;
|
||||
float center = 0.5;
|
||||
float edgeL = center;
|
||||
float edgeR = center + (smoothness * 0.5);
|
||||
float smoothLambert = smoothstep(edgeL, edgeR, lambert);
|
||||
|
||||
float ambient = 0.6;
|
||||
smoothLambert = clamp(smoothLambert + ambient, 0, 1);
|
||||
|
||||
vec3 diffuseTerm = albedo;
|
||||
diffuseTerm *= smoothLambert;
|
||||
|
||||
return diffuseTerm * 1.5;
|
||||
}
|
||||
|
||||
vec3 SpecularPass(vec3 albedo, vec3 N, vec3 H, vec3 R, float metallic, float specularMapIntensity)
|
||||
{
|
||||
// Specular pass
|
||||
vec3 specularTerm = vec3(0);
|
||||
|
||||
// TODO: Metalness
|
||||
vec3 specularColor = albedo;
|
||||
|
||||
specularTerm = specularColor;
|
||||
|
||||
// Hack something together for now.
|
||||
vec3 specularLighting = texture(irradianceMap, R).rrr;
|
||||
float center = 0.375;
|
||||
float smoothness = 0.035;
|
||||
specularLighting = smoothstep(vec3(center - smoothness), vec3(center + smoothness), specularLighting);
|
||||
|
||||
specularTerm *= specularLighting;
|
||||
specularTerm *= specularMapIntensity;
|
||||
|
||||
return specularTerm;
|
||||
}
|
||||
|
||||
vec3 FresnelPass(vec3 N, vec3 I)
|
||||
{
|
||||
// Fake edge lighting
|
||||
float nDotI = clamp(dot(N, I), 0, 1);
|
||||
float fresnel = 1 - nDotI;
|
||||
|
||||
// TODO: Extract cel shade function.
|
||||
float center = 0.75;
|
||||
float smoothness = 0.015;
|
||||
fresnel = smoothstep(center - smoothness, center + smoothness, fresnel);
|
||||
|
||||
vec3 fresnelTerm = vec3(1, 1, 0.75) * fresnel * 0.2;
|
||||
return fresnelTerm;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
|
||||
// Create a struct for passing all the vertex attributes to other functions.
|
||||
VertexAttributes vert;
|
||||
vert.objectPosition = objectPosition;
|
||||
vert.texCoord = f_texcoord0;
|
||||
vert.texCoord2 = f_texcoord1;
|
||||
vert.texCoord3 = f_texcoord2;
|
||||
vert.vertexColor = vertexColor;
|
||||
vert.normal = normal;
|
||||
vert.tangent = tangent;
|
||||
vert.bitangent = bitangent;
|
||||
|
||||
vec3 lightColor = vec3(10);
|
||||
|
||||
// Wireframe color.
|
||||
if (colorOverride == 1)
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
return;
|
||||
}
|
||||
|
||||
vec3 albedo = pow(texture(tex0, f_texcoord0).rgb, vec3(gamma));
|
||||
|
||||
float metallic = DefaultMetalness;
|
||||
if (HasMetalnessMap == 1)
|
||||
metallic = texture(MetalnessMap, f_texcoord0).r;
|
||||
|
||||
float roughness = DefaultRoughness;
|
||||
if (HasRoughnessMap == 1)
|
||||
roughness = texture(RoughnessMap, f_texcoord0).r;
|
||||
|
||||
float ao = 1;
|
||||
if (HasShadowMap == 1 && UseAOMap == 1)
|
||||
ao = texture(BakeShadowMap, f_texcoord1).r;
|
||||
|
||||
float shadow = 1;
|
||||
if (HasShadowMap == 1)
|
||||
shadow = texture(BakeShadowMap, f_texcoord1).g;
|
||||
|
||||
float cavity = 1;
|
||||
|
||||
vec3 lightMapColor = vec3(1);
|
||||
float lightMapIntensity = 0;
|
||||
if (HasLightMap == 1)
|
||||
{
|
||||
lightMapColor = texture(BakeLightMap, f_texcoord1).rgb;
|
||||
lightMapIntensity = texture(BakeLightMap, f_texcoord1).a;
|
||||
}
|
||||
|
||||
// TODO: Extract function.
|
||||
float specularMapIntensity = 1;
|
||||
if (HasSpecularMap == 1)
|
||||
{
|
||||
if (uking_texture2_texcoord == 1)
|
||||
{
|
||||
metallic = texture(SpecularMap, f_texcoord1).g;
|
||||
specularMapIntensity = texture(SpecularMap, f_texcoord1).r;
|
||||
}
|
||||
else
|
||||
{
|
||||
metallic = texture(SpecularMap, f_texcoord0).g;
|
||||
specularMapIntensity = texture(SpecularMap, f_texcoord0).r;
|
||||
}
|
||||
}
|
||||
|
||||
vec3 I = vec3(0,0,-1) * mat3(mvpMatrix);
|
||||
|
||||
vec3 N = normal;
|
||||
if (HasNormalMap == 1 && useNormalMap == 1)
|
||||
N = CalcBumpedNormal(normal, normalMap, vert, uking_texture2_texcoord);
|
||||
|
||||
vec3 V = normalize(I); //Eye View
|
||||
vec3 L = normalize(specLightDirection); //Light
|
||||
vec3 H = normalize(specLightDirection + I); //Half Angle
|
||||
vec3 R = reflect(I, N); // reflection
|
||||
|
||||
// Render passes
|
||||
vec3 outputColor = vec3(0);
|
||||
float kDiffuse = clamp(1.0 - metallic, 0, 1);
|
||||
outputColor += DiffusePass(albedo, N, L, R) * renderDiffuse;
|
||||
outputColor += SpecularPass(albedo, N, H, R, metallic, specularMapIntensity) * renderSpecular;
|
||||
outputColor += FresnelPass(N, I) * renderFresnel;
|
||||
if (HasEmissionMap == 1 || enable_emission == 1) //Can be without texture map
|
||||
outputColor.rgb += EmissionPass(EmissionMap, emission_intensity, vert, uking_texture2_texcoord, emission_color);
|
||||
|
||||
outputColor *= ao;
|
||||
outputColor *= (0.6 + shadow);
|
||||
|
||||
float cavityStrength = 1.0;
|
||||
outputColor *= cavity * cavityStrength + (1.0 - cavityStrength);
|
||||
|
||||
// TODO: Renders as black?
|
||||
// if (renderVertColor == 1)
|
||||
// fragColor *= min(vertexColor, vec4(1));
|
||||
|
||||
outputColor = pow(outputColor, vec3(1.0 / gamma));
|
||||
float alpha = texture(tex0, f_texcoord0).a;
|
||||
fragColor = vec4(outputColor, alpha);
|
||||
}
|
304
Switch_Toolbox/Shader/Bfres/BFRES_Debug.frag
Normal file
304
Switch_Toolbox/Shader/Bfres/BFRES_Debug.frag
Normal file
@ -0,0 +1,304 @@
|
||||
#version 330
|
||||
|
||||
in vec2 f_texcoord0;
|
||||
in vec2 f_texcoord1;
|
||||
in vec2 f_texcoord2;
|
||||
in vec2 f_texcoord3;
|
||||
|
||||
in vec3 objectPosition;
|
||||
|
||||
in vec3 normal;
|
||||
in vec3 viewNormal;
|
||||
in vec4 vertexColor;
|
||||
in vec3 tangent;
|
||||
in vec3 bitangent;
|
||||
|
||||
in vec3 boneWeightsColored;
|
||||
|
||||
// Viewport Camera/Lighting
|
||||
uniform mat4 mvpMatrix;
|
||||
uniform vec3 specLightDirection;
|
||||
uniform vec3 difLightDirection;
|
||||
uniform mat4 projMatrix;
|
||||
uniform mat4 normalMatrix;
|
||||
uniform mat4 modelViewMatrix;
|
||||
uniform mat4 rotationMatrix;
|
||||
|
||||
uniform int useImageBasedLighting;
|
||||
uniform int enableCellShading;
|
||||
|
||||
uniform vec3 camPos;
|
||||
|
||||
uniform vec3 light1Pos;
|
||||
|
||||
const float levels = 3.0;
|
||||
|
||||
// Viewport Settings
|
||||
uniform int uvChannel;
|
||||
uniform int renderType;
|
||||
uniform int useNormalMap;
|
||||
uniform vec4 colorSamplerUV;
|
||||
uniform int renderVertColor;
|
||||
uniform vec3 difLightColor;
|
||||
uniform vec3 ambLightColor;
|
||||
uniform int colorOverride;
|
||||
uniform float DefaultMetalness;
|
||||
uniform float DefaultRoughness;
|
||||
|
||||
// Channel Toggles
|
||||
uniform int renderR;
|
||||
uniform int renderG;
|
||||
uniform int renderB;
|
||||
uniform int renderAlpha;
|
||||
|
||||
// Texture Samplers
|
||||
uniform sampler2D DiffuseMap;
|
||||
uniform sampler2D BakeShadowMap;
|
||||
uniform sampler2D NormalMap;
|
||||
uniform sampler2D BakeLightMap;
|
||||
uniform sampler2D UVTestPattern;
|
||||
uniform sampler2D TransparencyMap;
|
||||
uniform sampler2D EmissionMap;
|
||||
uniform sampler2D SpecularMap;
|
||||
uniform sampler2D DiffuseLayer;
|
||||
uniform sampler2D MetalnessMap;
|
||||
uniform sampler2D RoughnessMap;
|
||||
uniform sampler2D MRA;
|
||||
uniform sampler2D TeamColorMap;
|
||||
uniform sampler2D SphereMap;
|
||||
uniform sampler2D SubSurfaceScatteringMap;
|
||||
|
||||
uniform samplerCube irradianceMap;
|
||||
uniform samplerCube specularIbl;
|
||||
uniform sampler2D brdfLUT;
|
||||
|
||||
// Shader Params
|
||||
uniform float normal_map_weight;
|
||||
uniform float ao_density;
|
||||
uniform float emission_intensity;
|
||||
uniform vec4 fresnelParams;
|
||||
uniform vec4 base_color_mul_color;
|
||||
uniform vec3 emission_color;
|
||||
uniform vec3 specular_color;
|
||||
|
||||
// Shader Options
|
||||
uniform float uking_texture2_texcoord;
|
||||
uniform float bake_shadow_type;
|
||||
uniform float enable_fresnel;
|
||||
uniform float enable_emission;
|
||||
uniform float cSpecularType;
|
||||
|
||||
|
||||
// Texture Map Toggles
|
||||
uniform int HasDiffuse;
|
||||
uniform int HasNormalMap;
|
||||
uniform int HasSpecularMap;
|
||||
uniform int HasShadowMap;
|
||||
uniform int HasAmbientOcclusionMap;
|
||||
uniform int HasLightMap;
|
||||
uniform int HasTransparencyMap;
|
||||
uniform int HasEmissionMap;
|
||||
uniform int HasDiffuseLayer;
|
||||
uniform int HasMetalnessMap;
|
||||
uniform int HasRoughnessMap;
|
||||
uniform int HasMRA;
|
||||
uniform int HasSubSurfaceScatteringMap;
|
||||
|
||||
uniform int roughnessAmount;
|
||||
|
||||
uniform int UseAOMap;
|
||||
uniform int UseCavityMap;
|
||||
uniform int UseMetalnessMap;
|
||||
uniform int UseRoughnessMap;
|
||||
|
||||
int isTransparent;
|
||||
|
||||
struct VertexAttributes {
|
||||
vec3 objectPosition;
|
||||
vec2 texCoord;
|
||||
vec2 texCoord2;
|
||||
vec2 texCoord3;
|
||||
vec4 vertexColor;
|
||||
vec3 normal;
|
||||
vec3 viewNormal;
|
||||
vec3 tangent;
|
||||
vec3 bitangent;
|
||||
};
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
#define gamma 2.2
|
||||
|
||||
// Defined in Utility.frag.
|
||||
float Luminance(vec3 rgb);
|
||||
|
||||
// Defined in BFRES_Utility.frag.
|
||||
vec3 CalcBumpedNormal(vec3 normal, sampler2D normalMap, VertexAttributes vert, float texCoordIndex);
|
||||
float AmbientOcclusionBlend(sampler2D BakeShadowMap, VertexAttributes vert, float ao_density);
|
||||
vec3 EmissionPass(sampler2D EmissionMap, float emission_intensity, VertexAttributes vert, float texCoordIndex, vec3 emission_color);
|
||||
|
||||
vec2 displayTexCoord = f_texcoord0;
|
||||
|
||||
void main()
|
||||
{
|
||||
fragColor = vec4(vec3(0), 1);
|
||||
|
||||
// Create a struct for passing all the vertex attributes to other functions.
|
||||
VertexAttributes vert;
|
||||
vert.objectPosition = objectPosition;
|
||||
vert.texCoord = f_texcoord0;
|
||||
vert.texCoord2 = f_texcoord1;
|
||||
vert.texCoord3 = f_texcoord2;
|
||||
vert.vertexColor = vertexColor;
|
||||
vert.normal = normal;
|
||||
vert.viewNormal = viewNormal;
|
||||
vert.tangent = tangent;
|
||||
vert.bitangent = bitangent;
|
||||
|
||||
vec3 N = normal;
|
||||
if (HasNormalMap == 1 && useNormalMap == 1)
|
||||
N = CalcBumpedNormal(normal, NormalMap, vert, uking_texture2_texcoord);
|
||||
|
||||
if (renderType == 1) // normals vertexColor
|
||||
{
|
||||
vec3 displayNormal = (N * 0.5) + 0.5;
|
||||
fragColor = vec4(displayNormal,1);
|
||||
}
|
||||
else if (renderType == 2) // Lighting
|
||||
{
|
||||
float halfLambert = dot(difLightDirection, N) * 0.5 + 0.5;
|
||||
fragColor = vec4(vec3(halfLambert), 1);
|
||||
}
|
||||
else if (renderType == 4) //Display Normal
|
||||
{
|
||||
if (uking_texture2_texcoord == 1)
|
||||
fragColor.rgb = texture(NormalMap, f_texcoord1).rgb;
|
||||
else
|
||||
fragColor.rgb = texture(NormalMap, displayTexCoord).rgb;
|
||||
}
|
||||
else if (renderType == 3) //DiffuseColor
|
||||
fragColor = vec4(texture(DiffuseMap, displayTexCoord).rgb, 1);
|
||||
else if (renderType == 5) // vertexColor
|
||||
fragColor = vertexColor;
|
||||
else if (renderType == 6) //Display Ambient Occlusion
|
||||
{
|
||||
if (HasShadowMap == 1)
|
||||
{
|
||||
float ambientOcclusionBlend = AmbientOcclusionBlend(BakeShadowMap, vert, ao_density);
|
||||
fragColor = vec4(vec3(ambientOcclusionBlend), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
else if (renderType == 7) // uv coords
|
||||
fragColor = vec4(displayTexCoord.x, displayTexCoord.y, 1, 1);
|
||||
else if (renderType == 8) // uv test pattern
|
||||
{
|
||||
fragColor = vec4(texture(UVTestPattern, displayTexCoord).rgb, 1);
|
||||
}
|
||||
else if (renderType == 9) //Display tangents
|
||||
{
|
||||
vec3 displayTangent = (tangent * 0.5) + 0.5;
|
||||
if (dot(tangent, vec3(1)) == 0)
|
||||
displayTangent = vec3(0);
|
||||
|
||||
fragColor = vec4(displayTangent,1);
|
||||
}
|
||||
else if (renderType == 10) //Display bitangents
|
||||
{
|
||||
vec3 displayBitangent = (bitangent * 0.5) + 0.5;
|
||||
if (dot(bitangent, vec3(1)) == 0)
|
||||
displayBitangent = vec3(0);
|
||||
|
||||
fragColor = vec4(displayBitangent,1);
|
||||
}
|
||||
|
||||
else if (renderType == 12)
|
||||
{
|
||||
fragColor.rgb = boneWeightsColored;
|
||||
}
|
||||
else if (renderType == 11) //Light map
|
||||
{
|
||||
if (HasLightMap == 1)
|
||||
{
|
||||
vec3 lightMap = texture(BakeLightMap, f_texcoord2).rgb;
|
||||
fragColor = vec4(lightMap, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
else if (renderType == 14) //Shadow
|
||||
{
|
||||
if (HasShadowMap == 1)
|
||||
{
|
||||
float Shadow = texture(BakeShadowMap, f_texcoord1).g;
|
||||
fragColor = vec4(vec3(Shadow), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
else if (renderType == 15) //MetalnessMap
|
||||
{
|
||||
if (HasMetalnessMap == 1)
|
||||
{
|
||||
float mtl = texture(MetalnessMap, displayTexCoord).r;
|
||||
fragColor = vec4(vec3(mtl), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
else if (renderType == 16) //RoughnessMap
|
||||
{
|
||||
if (HasRoughnessMap == 1)
|
||||
{
|
||||
float rgh = texture(RoughnessMap, displayTexCoord).r;
|
||||
fragColor = vec4(vec3(rgh), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
else if (renderType == 17) //SubSurfaceScatteringMap
|
||||
{
|
||||
if (HasSubSurfaceScatteringMap == 1)
|
||||
{
|
||||
vec3 sss = texture(SubSurfaceScatteringMap, displayTexCoord).rgb;
|
||||
fragColor = vec4(sss, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
else if (renderType == 18) //EmmissionMap
|
||||
{
|
||||
if (HasEmissionMap == 1)
|
||||
{
|
||||
vec3 emm = texture(EmissionMap, displayTexCoord).rgb;
|
||||
fragColor = vec4(emm, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Toggles rendering of individual color channels for all render modes.
|
||||
fragColor.rgb *= vec3(renderR, renderG, renderB);
|
||||
if (renderR == 1 && renderG == 0 && renderB == 0)
|
||||
fragColor.rgb = fragColor.rrr;
|
||||
else if (renderG == 1 && renderR == 0 && renderB == 0)
|
||||
fragColor.rgb = fragColor.ggg;
|
||||
else if (renderB == 1 && renderR == 0 && renderG == 0)
|
||||
fragColor.rgb = fragColor.bbb;
|
||||
|
||||
}
|
307
Switch_Toolbox/Shader/Bfres/BFRES_PBR.frag
Normal file
307
Switch_Toolbox/Shader/Bfres/BFRES_PBR.frag
Normal file
@ -0,0 +1,307 @@
|
||||
#version 330
|
||||
|
||||
in vec2 f_texcoord0;
|
||||
in vec2 f_texcoord1;
|
||||
in vec2 f_texcoord2;
|
||||
in vec2 f_texcoord3;
|
||||
|
||||
in vec3 objectPosition;
|
||||
|
||||
in vec3 normal;
|
||||
in vec4 vertexColor;
|
||||
in vec3 tangent;
|
||||
in vec3 bitangent;
|
||||
|
||||
in vec3 boneWeightsColored;
|
||||
|
||||
// Viewport Camera/Lighting
|
||||
uniform mat4 mvpMatrix;
|
||||
uniform vec3 specLightDirection;
|
||||
uniform vec3 difLightDirection;
|
||||
uniform mat4 projMatrix;
|
||||
uniform mat4 normalMatrix;
|
||||
uniform mat4 modelViewMatrix;
|
||||
uniform mat4 rotationMatrix;
|
||||
|
||||
uniform int useImageBasedLighting;
|
||||
uniform int enableCellShading;
|
||||
|
||||
uniform vec3 camPos;
|
||||
|
||||
uniform vec3 light1Pos;
|
||||
|
||||
const float levels = 3.0;
|
||||
|
||||
// Viewport Settings
|
||||
uniform int uvChannel;
|
||||
uniform int renderType;
|
||||
uniform int useNormalMap;
|
||||
uniform vec4 colorSamplerUV;
|
||||
uniform int renderVertColor;
|
||||
uniform vec3 difLightColor;
|
||||
uniform vec3 ambLightColor;
|
||||
uniform int colorOverride;
|
||||
uniform float DefaultMetalness;
|
||||
uniform float DefaultRoughness;
|
||||
|
||||
// Channel Toggles
|
||||
uniform int renderR;
|
||||
uniform int renderG;
|
||||
uniform int renderB;
|
||||
uniform int renderAlpha;
|
||||
|
||||
// Texture Samplers
|
||||
uniform sampler2D tex0;
|
||||
uniform sampler2D BakeShadowMap;
|
||||
uniform sampler2D spl;
|
||||
uniform sampler2D normalMap;
|
||||
uniform sampler2D BakeLightMap;
|
||||
uniform sampler2D UVTestPattern;
|
||||
uniform sampler2D TransparencyMap;
|
||||
uniform sampler2D EmissionMap;
|
||||
uniform sampler2D SpecularMap;
|
||||
uniform sampler2D DiffuseLayer;
|
||||
uniform sampler2D MetalnessMap;
|
||||
uniform sampler2D RoughnessMap;
|
||||
uniform sampler2D MRA;
|
||||
uniform sampler2D BOTWSpecularMap;
|
||||
uniform sampler2D SphereMap;
|
||||
uniform sampler2D SubSurfaceScatteringMap;
|
||||
|
||||
uniform samplerCube irradianceMap;
|
||||
uniform samplerCube specularIbl;
|
||||
uniform sampler2D brdfLUT;
|
||||
|
||||
// Shader Params
|
||||
uniform float normal_map_weight;
|
||||
uniform float ao_density;
|
||||
uniform float emission_intensity;
|
||||
uniform vec4 fresnelParams;
|
||||
uniform vec4 base_color_mul_color;
|
||||
uniform vec3 emission_color;
|
||||
uniform vec3 specular_color;
|
||||
|
||||
// Shader Options
|
||||
uniform float uking_texture2_texcoord;
|
||||
uniform float bake_shadow_type;
|
||||
uniform float enable_fresnel;
|
||||
uniform float enable_emission;
|
||||
uniform float cSpecularType;
|
||||
|
||||
|
||||
// Texture Map Toggles
|
||||
uniform int HasDiffuse;
|
||||
uniform int HasNormalMap;
|
||||
uniform int HasSpecularMap;
|
||||
uniform int HasShadowMap;
|
||||
uniform int HasAmbientOcclusionMap;
|
||||
uniform int HasLightMap;
|
||||
uniform int HasTransparencyMap;
|
||||
uniform int HasEmissionMap;
|
||||
uniform int HasDiffuseLayer;
|
||||
uniform int HasMetalnessMap;
|
||||
uniform int HasRoughnessMap;
|
||||
uniform int HasMRA;
|
||||
uniform int HasBOTWSpecularMap;
|
||||
uniform int HasSubSurfaceScatteringMap;
|
||||
|
||||
uniform int roughnessAmount;
|
||||
|
||||
uniform int UseAOMap;
|
||||
uniform int UseCavityMap;
|
||||
uniform int UseMetalnessMap;
|
||||
uniform int UseRoughnessMap;
|
||||
|
||||
int isTransparent;
|
||||
|
||||
struct VertexAttributes {
|
||||
vec3 objectPosition;
|
||||
vec2 texCoord;
|
||||
vec2 texCoord2;
|
||||
vec2 texCoord3;
|
||||
vec4 vertexColor;
|
||||
vec3 normal;
|
||||
vec3 viewNormal;
|
||||
vec3 tangent;
|
||||
vec3 bitangent;
|
||||
};
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
#define gamma 2.2
|
||||
const float PI = 3.14159265359;
|
||||
|
||||
// Defined in BFRES_Utility.frag.
|
||||
vec3 CalcBumpedNormal(vec3 normal, sampler2D normalMap, VertexAttributes vert, float texCoordIndex);
|
||||
float AmbientOcclusionBlend(sampler2D BakeShadowMap, VertexAttributes vert, float ao_density);
|
||||
vec3 EmissionPass(sampler2D EmissionMap, float emission_intensity, VertexAttributes vert, float texCoordIndex, vec3 emission_color);
|
||||
|
||||
// Shader code adapted from learnopengl.com's PBR tutorial:
|
||||
// https://learnopengl.com/PBR/Theory
|
||||
|
||||
vec3 FresnelSchlick(float cosTheta, vec3 F0)
|
||||
{
|
||||
return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
|
||||
}
|
||||
|
||||
vec3 FresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness)
|
||||
{
|
||||
return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(1.0 - cosTheta, 5.0);
|
||||
}
|
||||
|
||||
float DistributionGGX(vec3 N, vec3 H, float roughness)
|
||||
{
|
||||
float a = roughness*roughness;
|
||||
float a2 = a*a;
|
||||
float NdotH = max(dot(N, H), 0.0);
|
||||
float NdotH2 = NdotH*NdotH;
|
||||
|
||||
float num = a2;
|
||||
float denom = (NdotH2 * (a2 - 1.0) + 1.0);
|
||||
denom = PI * denom * denom;
|
||||
|
||||
return num / denom;
|
||||
}
|
||||
|
||||
float GeometrySchlickGGX(float NdotV, float roughness)
|
||||
{
|
||||
float r = (roughness + 1.0);
|
||||
float k = (r*r) / 8.0;
|
||||
|
||||
float num = NdotV;
|
||||
float denom = NdotV * (1.0 - k) + k;
|
||||
|
||||
return num / denom;
|
||||
}
|
||||
|
||||
float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness)
|
||||
{
|
||||
float NdotV = max(dot(N, V), 0.0);
|
||||
float NdotL = max(dot(N, L), 0.0);
|
||||
float ggx2 = GeometrySchlickGGX(NdotV, roughness);
|
||||
float ggx1 = GeometrySchlickGGX(NdotL, roughness);
|
||||
|
||||
return ggx1 * ggx2;
|
||||
}
|
||||
|
||||
vec3 saturation(vec3 rgb, float adjustment)
|
||||
{
|
||||
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
||||
vec3 intensity = vec3(dot(rgb, W));
|
||||
return mix(intensity, rgb, adjustment);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
|
||||
// Create a struct for passing all the vertex attributes to other functions.
|
||||
VertexAttributes vert;
|
||||
vert.objectPosition = objectPosition;
|
||||
vert.texCoord = f_texcoord0;
|
||||
vert.texCoord2 = f_texcoord1;
|
||||
vert.texCoord3 = f_texcoord2;
|
||||
vert.vertexColor = vertexColor;
|
||||
vert.normal = normal;
|
||||
vert.tangent = tangent;
|
||||
vert.bitangent = bitangent;
|
||||
|
||||
vec3 lightColor = vec3(10);
|
||||
|
||||
// Wireframe color.
|
||||
if (colorOverride == 1)
|
||||
{
|
||||
fragColor = vec4(1);
|
||||
return;
|
||||
}
|
||||
|
||||
vec3 albedo = vec3(1);
|
||||
if (HasDiffuse == 1)
|
||||
albedo = pow(texture(tex0, f_texcoord0).rgb, vec3(gamma));
|
||||
|
||||
float metallic = 0;
|
||||
if (HasMetalnessMap == 1)
|
||||
metallic = texture(MetalnessMap, f_texcoord0).r;
|
||||
|
||||
float roughness = 0.5;
|
||||
if (HasRoughnessMap == 1)
|
||||
roughness = texture(RoughnessMap, f_texcoord0).r;
|
||||
|
||||
float ao = 1;
|
||||
if (HasShadowMap == 1 && UseAOMap == 1)
|
||||
ao = texture(BakeShadowMap, f_texcoord1).r;
|
||||
|
||||
float shadow = 1;
|
||||
if (HasShadowMap == 1)
|
||||
shadow = texture(BakeShadowMap, f_texcoord1).g;
|
||||
|
||||
float cavity = 1;
|
||||
|
||||
vec3 emission = vec3(0);
|
||||
if (HasEmissionMap == 1 || enable_emission == 1) //Can be without texture map
|
||||
emission.rgb += EmissionPass(EmissionMap, emission_intensity, vert, 0, emission_color);
|
||||
|
||||
vec3 lightMapColor = vec3(1);
|
||||
float lightMapIntensity = 0;
|
||||
if (HasLightMap == 1)
|
||||
{
|
||||
lightMapColor = texture(BakeLightMap, f_texcoord1).rgb;
|
||||
lightMapIntensity = texture(BakeLightMap, f_texcoord1).a;
|
||||
}
|
||||
|
||||
float specIntensity = 0;
|
||||
|
||||
if (HasMRA == 1) //Kirby Star Allies PBR map
|
||||
{
|
||||
//Note KSA has no way to tell if one gets unused or not because shaders :(
|
||||
//Usually it's just metalness with roughness and works fine
|
||||
metallic = texture(MRA, f_texcoord0).r;
|
||||
roughness = texture(MRA, f_texcoord0).g;
|
||||
specIntensity = texture(MRA, f_texcoord0).b;
|
||||
ao = texture(MRA, f_texcoord0).a;
|
||||
}
|
||||
|
||||
// Calculate shading vectors.
|
||||
vec3 I = vec3(0,0,-1) * mat3(mvpMatrix);
|
||||
vec3 N = normal;
|
||||
if (HasNormalMap == 1 && useNormalMap == 1)
|
||||
N = CalcBumpedNormal(normal, normalMap, vert, 0);
|
||||
|
||||
vec3 V = normalize(I); // view
|
||||
vec3 L = normalize(specLightDirection); // Light
|
||||
vec3 H = normalize(specLightDirection + I); // half angle
|
||||
vec3 R = reflect(I, N); // reflection
|
||||
|
||||
// Diffuse pass
|
||||
vec3 diffuseIblColor = texture(irradianceMap, N).rgb;
|
||||
vec3 diffuseTerm = albedo * diffuseIblColor;
|
||||
diffuseTerm *= cavity;
|
||||
diffuseTerm *= ao;
|
||||
diffuseTerm *= shadow;
|
||||
|
||||
// Adjust for metalness.
|
||||
diffuseTerm *= clamp(1 - metallic, 0, 1);
|
||||
|
||||
// Specular pass.
|
||||
int maxSpecularLod = 8;
|
||||
vec3 specularIblColor = textureLod(specularIbl, R, roughness * maxSpecularLod).rgb;
|
||||
vec3 f0 = mix(vec3(0.04), albedo, metallic); // dialectric
|
||||
vec3 kS = FresnelSchlickRoughness(max(dot(N, H), 0.0), f0, roughness);
|
||||
|
||||
vec3 specularTerm = specularIblColor * kS;
|
||||
|
||||
// Add render passes.
|
||||
fragColor.rgb = vec3(0);
|
||||
fragColor.rgb += diffuseTerm;
|
||||
fragColor.rgb += specularTerm;
|
||||
|
||||
// Global brightness adjustment.
|
||||
fragColor.rgb *= 2.5;
|
||||
|
||||
// Convert back to sRGB.
|
||||
fragColor.rgb = pow(fragColor.rgb, vec3(1 / gamma));
|
||||
|
||||
// Alpha calculations.
|
||||
float alpha = texture(tex0, f_texcoord0).a;
|
||||
fragColor.a = alpha;
|
||||
}
|
135
Switch_Toolbox/Shader/Bfres/BFRES_utility.frag
Normal file
135
Switch_Toolbox/Shader/Bfres/BFRES_utility.frag
Normal file
@ -0,0 +1,135 @@
|
||||
#version 330
|
||||
|
||||
// A struct is used for what would normally be attributes from the vert/geom shader.
|
||||
struct VertexAttributes
|
||||
{
|
||||
vec3 objectPosition;
|
||||
vec2 texCoord;
|
||||
vec2 texCoord2;
|
||||
vec2 texCoord3;
|
||||
vec4 vertexColor;
|
||||
vec3 normal;
|
||||
vec3 viewNormal;
|
||||
vec3 tangent;
|
||||
vec3 bitangent;
|
||||
};
|
||||
|
||||
uniform mat4 sphereMatrix;
|
||||
uniform sampler2D SphereMap;
|
||||
uniform samplerCube specularIbl;
|
||||
uniform int HasSphereMap;
|
||||
uniform int hasTangents;
|
||||
|
||||
// Defined in Utility.frag.
|
||||
float Luminance(vec3 rgb);
|
||||
|
||||
vec3 SpecularPass(vec3 I, vec3 normal, int HasSpecularMap, sampler2D SpecularMap, vec3 SpecColor, VertexAttributes vert, float texcoord2)
|
||||
{
|
||||
float specBrdf = max(dot(I, normal), 0);
|
||||
float exponent = 8;
|
||||
|
||||
if (SpecColor == vec3(0)) //Color shouldn't be black unless it's not set
|
||||
SpecColor = vec3(1);
|
||||
|
||||
if (HasSpecularMap == 0)
|
||||
{
|
||||
return 0.1 * SpecColor * pow(specBrdf, exponent);
|
||||
}
|
||||
|
||||
// TODO: Different games use the channels for separate textures.
|
||||
vec3 specularTex = vec3(1);
|
||||
if (texcoord2 == 1)
|
||||
specularTex = texture(SpecularMap, vert.texCoord2).rrr;
|
||||
else
|
||||
specularTex = texture(SpecularMap, vert.texCoord).rrr;
|
||||
|
||||
vec3 result = specularTex * SpecColor * pow(specBrdf, exponent);
|
||||
result *= SpecColor.rgb;
|
||||
|
||||
float intensity = 0.3;
|
||||
return result * intensity;
|
||||
}
|
||||
|
||||
vec3 EmissionPass(sampler2D EmissionMap, float emission_intensity, VertexAttributes vert, float texCoordIndex, vec3 emission_color)
|
||||
{
|
||||
vec3 result = vec3(0);
|
||||
|
||||
// BOTW somtimes uses second uv channel for emission map
|
||||
vec3 emission = vec3(1);
|
||||
if (texCoordIndex == 1)
|
||||
emission = texture2D(EmissionMap, vert.texCoord2).rgb;
|
||||
else
|
||||
emission = texture2D(EmissionMap, vert.texCoord).rgb;
|
||||
|
||||
// If tex is empty then use full brightness.
|
||||
//Some emissive mats have emission but no texture
|
||||
// if (Luminance(emission.rgb) < 0.01)
|
||||
// result += vec3(emission_intensity) * emission_color;
|
||||
|
||||
result += emission.rgb;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
vec3 SphereMapColor(vec3 viewNormal, sampler2D spheremap) {
|
||||
// Calculate UVs based on view space normals.
|
||||
vec2 sphereTexcoord = vec2(viewNormal.x, (1 - viewNormal.y));
|
||||
return texture(spheremap, sphereTexcoord * 0.5 + 0.5).rgb;
|
||||
}
|
||||
|
||||
vec3 ReflectionPass(vec3 N, vec3 I, vec4 diffuseMap, float aoBlend, vec3 tintColor, VertexAttributes vert) {
|
||||
vec3 reflectionPass = vec3(0);
|
||||
// cubemap reflection
|
||||
vec3 R = reflect(I, N);
|
||||
R.y *= -1.0;
|
||||
|
||||
vec3 cubeColor = texture(specularIbl, R).aaa;
|
||||
|
||||
// reflectionPass += diffuseMap.aaa * cubeColor * tintColor;
|
||||
|
||||
vec3 viewNormal = mat3(sphereMatrix) * normalize(N.xyz);
|
||||
vec3 sphereMapColor = SphereMapColor(vert.viewNormal, SphereMap);
|
||||
|
||||
reflectionPass += sphereMapColor * HasSphereMap;
|
||||
reflectionPass = max(reflectionPass, vec3(0));
|
||||
|
||||
return reflectionPass;
|
||||
}
|
||||
|
||||
float AmbientOcclusionBlend(sampler2D BakeShadowMap, VertexAttributes vert, float ao_density)
|
||||
{
|
||||
float aoMap = texture(BakeShadowMap, vert.texCoord2).r;
|
||||
return mix(aoMap, 1, ao_density);
|
||||
}
|
||||
|
||||
vec3 CalcBumpedNormal(vec3 inputNormal, sampler2D normalMap, VertexAttributes vert, float texCoordIndex)
|
||||
{
|
||||
if (hasTangents == 0)
|
||||
return inputNormal;
|
||||
|
||||
float normalIntensity = 1;
|
||||
|
||||
//if (normal_map_weight != 0) //MK8 and splatoon 1/2 uses this param
|
||||
// normalIntensity = normal_map_weight;
|
||||
|
||||
// Calculate the resulting normal map and intensity.
|
||||
vec3 normalMapColor = vec3(1);
|
||||
if (texCoordIndex == 1)
|
||||
normalMapColor = vec3(texture(normalMap, vert.texCoord2).rg, 1);
|
||||
else
|
||||
normalMapColor = vec3(texture(normalMap, vert.texCoord).rg, 1);
|
||||
normalMapColor = mix(vec3(0.5, 0.5, 1), normalMapColor, normalIntensity);
|
||||
|
||||
// Remap the normal map to the correct range.
|
||||
vec3 normalMapNormal = 2.0 * normalMapColor - vec3(1);
|
||||
|
||||
// TBN Matrix.
|
||||
vec3 T = vert.tangent;
|
||||
vec3 B = vert. bitangent;
|
||||
if (Luminance(B) < 0.01)
|
||||
B = normalize(cross(T, vert.normal));
|
||||
mat3 tbnMatrix = mat3(T, B, vert.normal);
|
||||
|
||||
vec3 newNormal = tbnMatrix * normalMapNormal;
|
||||
return normalize(newNormal);
|
||||
}
|
7
Switch_Toolbox/Shader/Bfres/Normals.frag
Normal file
7
Switch_Toolbox/Shader/Bfres/Normals.frag
Normal file
@ -0,0 +1,7 @@
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
FragColor = vec4(1.0, 1.0, 0.0, 1.0);
|
||||
}
|
25
Switch_Toolbox/Shader/Bfres/Normals.geom
Normal file
25
Switch_Toolbox/Shader/Bfres/Normals.geom
Normal file
@ -0,0 +1,25 @@
|
||||
#version 330 core
|
||||
layout (triangles) in;
|
||||
layout (line_strip, max_vertices = 6) out;
|
||||
|
||||
in VS_OUT {
|
||||
vec3 normal;
|
||||
} gs_in[];
|
||||
|
||||
const float MAGNITUDE = 0.4;
|
||||
|
||||
void GenerateLine(int index)
|
||||
{
|
||||
gl_Position = gl_in[index].gl_Position;
|
||||
EmitVertex();
|
||||
gl_Position = gl_in[index].gl_Position + vec4(gs_in[index].normal, 0.0) * MAGNITUDE;
|
||||
EmitVertex();
|
||||
EndPrimitive();
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
GenerateLine(0); // first vertex normal
|
||||
GenerateLine(1); // second vertex normal
|
||||
GenerateLine(2); // third vertex normal
|
||||
}
|
29
Switch_Toolbox/Shader/Bfres/Normals.vert
Normal file
29
Switch_Toolbox/Shader/Bfres/Normals.vert
Normal file
@ -0,0 +1,29 @@
|
||||
#version 330 core
|
||||
|
||||
in vec3 vPosition;
|
||||
in vec3 vNormal;
|
||||
in vec3 vTangent;
|
||||
in vec3 vBitangent;
|
||||
in vec2 vUV0;
|
||||
in vec4 vColor;
|
||||
in vec4 vBone;
|
||||
in vec4 vWeight;
|
||||
in vec2 vUV1;
|
||||
in vec2 vUV2;
|
||||
in vec3 vPosition2;
|
||||
in vec3 vPosition3;
|
||||
|
||||
out VS_OUT {
|
||||
vec3 normal;
|
||||
} vs_out;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
uniform mat4 model;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = projection * view * model * vec4(vPosition, 1.0);
|
||||
mat3 normalMatrix = mat3(transpose(inverse(view * model)));
|
||||
vs_out.normal = normalize(vec3(projection * vec4(normalMatrix * vNormal, 0.0)));
|
||||
}
|
16
Switch_Toolbox/Shader/HDRSkyBox/HDRSkyBox.frag
Normal file
16
Switch_Toolbox/Shader/HDRSkyBox/HDRSkyBox.frag
Normal file
@ -0,0 +1,16 @@
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
|
||||
in vec3 TexCoords;
|
||||
|
||||
uniform samplerCube environmentMap;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 envColor = textureLod(environmentMap, TexCoords, 0.0).rgb;
|
||||
|
||||
envColor = envColor / (envColor + vec3(1.0));
|
||||
envColor = pow(envColor, vec3(1.0/2.2));
|
||||
|
||||
FragColor = vec4(envColor, 1.0);
|
||||
}
|
15
Switch_Toolbox/Shader/HDRSkyBox/HDRSkyBox.vert
Normal file
15
Switch_Toolbox/Shader/HDRSkyBox/HDRSkyBox.vert
Normal file
@ -0,0 +1,15 @@
|
||||
#version 330 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 rotView;
|
||||
|
||||
out vec3 TexCoords;
|
||||
|
||||
void main()
|
||||
{
|
||||
TexCoords = aPos;
|
||||
vec4 clipPos = rotView * projection * vec4(aPos, 1.0);
|
||||
|
||||
gl_Position = clipPos.xyww;
|
||||
}
|
36
Switch_Toolbox/Shader/Legacy/BFRES.frag
Normal file
36
Switch_Toolbox/Shader/Legacy/BFRES.frag
Normal file
@ -0,0 +1,36 @@
|
||||
#version 110
|
||||
|
||||
varying vec2 f_texcoord0;
|
||||
varying vec2 f_texcoord1;
|
||||
varying vec2 f_texcoord2;
|
||||
varying vec2 f_texcoord3;
|
||||
|
||||
varying vec3 objectPosition;
|
||||
|
||||
varying vec3 normal;
|
||||
varying vec3 viewNormal;
|
||||
varying vec4 vertexColor;
|
||||
varying vec3 tangent;
|
||||
varying vec3 bitangent;
|
||||
|
||||
varying vec3 boneWeightsColored;
|
||||
|
||||
uniform sampler2D DiffuseMap;
|
||||
|
||||
|
||||
uniform int isTransparent;
|
||||
|
||||
#define gamma 2.2
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 fragColor = vec4(vec3(0), 1);
|
||||
vec4 diffuseMapColor = vec4(texture2D(DiffuseMap, f_texcoord0).rgb, 1);
|
||||
fragColor.rgb += diffuseMapColor.rgb;
|
||||
fragColor.a *= texture2D(DiffuseMap, f_texcoord0).a;
|
||||
|
||||
if (isTransparent != 1)
|
||||
fragColor.a = 1.0;
|
||||
|
||||
gl_FragColor = fragColor;
|
||||
}
|
50
Switch_Toolbox/Shader/Legacy/BFRES.vert
Normal file
50
Switch_Toolbox/Shader/Legacy/BFRES.vert
Normal file
@ -0,0 +1,50 @@
|
||||
#version 110
|
||||
|
||||
uniform mat4 mvpMatrix;
|
||||
|
||||
attribute vec3 vPosition;
|
||||
attribute vec3 vNormal;
|
||||
attribute vec3 vTangent;
|
||||
attribute vec3 vBitangent;
|
||||
attribute vec2 vUV0;
|
||||
attribute vec4 vColor;
|
||||
attribute vec4 vBone;
|
||||
attribute vec4 vWeight;
|
||||
attribute vec2 vUV1;
|
||||
attribute vec2 vUV2;
|
||||
attribute vec3 vPosition2;
|
||||
attribute vec3 vPosition3;
|
||||
|
||||
varying vec2 f_texcoord0;
|
||||
varying vec2 f_texcoord1;
|
||||
varying vec2 f_texcoord2;
|
||||
varying vec2 f_texcoord3;
|
||||
|
||||
varying vec3 normal;
|
||||
varying vec4 vertexColor;
|
||||
varying vec3 tangent;
|
||||
varying vec3 bitangent;
|
||||
|
||||
// Shader Options
|
||||
uniform vec4 gsys_bake_st0;
|
||||
uniform vec4 gsys_bake_st1;
|
||||
|
||||
// Skinning uniforms
|
||||
uniform mat4 bones[200];
|
||||
//Meshes have a bone index and will use their transform depending on skin influence amount
|
||||
uniform mat4 singleBoneBindTransform;
|
||||
uniform int NoSkinning;
|
||||
uniform int RigidSkinning;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = mvpMatrix * vec4(vPosition.xyz, 1.0);
|
||||
normal = vNormal;
|
||||
f_texcoord0 = vUV0;
|
||||
f_texcoord1 = vUV1;
|
||||
f_texcoord2 = vUV1;
|
||||
f_texcoord3 = vUV2;
|
||||
tangent = vTangent;
|
||||
bitangent = vBitangent;
|
||||
vertexColor = vColor;
|
||||
}
|
21
Switch_Toolbox/Shader/Utility/Utility.frag
Normal file
21
Switch_Toolbox/Shader/Utility/Utility.frag
Normal file
@ -0,0 +1,21 @@
|
||||
#version 330
|
||||
|
||||
float Luminance(vec3 rgb)
|
||||
{
|
||||
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
||||
return dot(rgb, W);
|
||||
}
|
||||
|
||||
// The hardware conversion doesn't work on all drivers.
|
||||
// http://entropymine.com/imageworsener/srgbformula/
|
||||
float SrgbToLinear(float x)
|
||||
{
|
||||
if (x < 0.03928)
|
||||
return x * 0.0773993808; // 1.0 / 12.92
|
||||
else
|
||||
return pow((x + 0.055) / 1.055, 2.4);
|
||||
}
|
||||
|
||||
vec3 SrgbToLinear(vec3 color) {
|
||||
return vec3(SrgbToLinear(color.r), SrgbToLinear(color.g), SrgbToLinear(color.b));
|
||||
}
|
16
Switch_Toolbox/Shader/Utility/Wireframe.frag
Normal file
16
Switch_Toolbox/Shader/Utility/Wireframe.frag
Normal file
@ -0,0 +1,16 @@
|
||||
#version 330
|
||||
|
||||
float WireframeIntensity(vec3 distanceToEdges) {
|
||||
float minDistance = min(min(distanceToEdges.x, distanceToEdges.y), distanceToEdges.z);
|
||||
|
||||
// Constant wireframe thickness relative to the screen size.
|
||||
float thickness = 0.5;
|
||||
float smoothAmount = 0.5;
|
||||
|
||||
float delta = fwidth(minDistance);
|
||||
float edge0 = delta * thickness;
|
||||
float edge1 = edge0 + (delta * smoothAmount);
|
||||
float smoothedDistance = smoothstep(edge0, edge1, minDistance);
|
||||
|
||||
return 1 - smoothedDistance;
|
||||
}
|
374
Switch_Toolbox/Switch_Toolbox.csproj
Normal file
374
Switch_Toolbox/Switch_Toolbox.csproj
Normal file
@ -0,0 +1,374 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Costura.Fody.3.1.4\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.3.1.4\build\Costura.Fody.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{E861C28B-B039-48F7-9A4F-C83F67C0ADDE}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>Switch_Toolbox</RootNamespace>
|
||||
<AssemblyName>Switch_Toolbox</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Tool.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="BarsLibrary, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\ConsoleApp1\BarsLibrary\bin\Release\BarsLibrary.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="BevelEngineArchive_Lib">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\BevelEngineArchive_Lib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="ByamlExt">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\ByamlExt.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Costura, Version=3.1.4.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Costura.Fody.3.1.4\lib\net46\Costura.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="CsvHelper, Version=8.0.0.0, Culture=neutral, PublicKeyToken=8c4959082be5c823, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\CsvHelper.8.0.0-beta01\lib\net45\CsvHelper.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="EditorCoreCommon">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\EditorCoreCommon.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="NAudio">
|
||||
<HintPath>..\Switch_FileFormatsMain\Externals\NAudio.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="OpenTK">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\OpenTK.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="OpenTK.GLControl">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\OpenTK.GLControl.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="SARCExt">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\SARCExt.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="SFGraphics">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\SFGraphics.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="SFGraphics.Utils">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\SFGraphics.Utils.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Syroot.BinaryData">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\Syroot.BinaryData.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Syroot.Maths">
|
||||
<HintPath>..\..\..\..\Documents\Visual Studio 2017\Projects\WindowsFormsApp2\WindowsFormsApp2\Lib\Syroot.Maths.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Syroot.NintenTools.NSW.Bfres, Version=1.2.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Switch_FileFormatsMain\Externals\Syroot.NintenTools.NSW.Bfres.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Syroot.NintenTools.NSW.Bntx, Version=1.2.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\Documents\GitHub\Nintendo_Switch_BFRES_Library\src - Copy (2)\Syroot.NintenTools.Bntx\bin\Release\net45\Syroot.NintenTools.NSW.Bntx.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="VGAudio">
|
||||
<HintPath>..\Switch_FileFormatsMain\Externals\VGAudio.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking, Version=3.0.4.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.3.0.4\lib\net40\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2015, Version=3.0.4.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2015.3.0.4\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Config.cs" />
|
||||
<Compile Include="GUI\Credits.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Credits.Designer.cs">
|
||||
<DependentUpon>Credits.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GUI\NodeWrappers.cs" />
|
||||
<Compile Include="GUI\Settings.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Settings.Designer.cs">
|
||||
<DependentUpon>Settings.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Startup Window.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Startup Window.Designer.cs">
|
||||
<DependentUpon>Startup Window.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GUI\PluginManager.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GUI\PluginManager.Designer.cs">
|
||||
<DependentUpon>PluginManager.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="GUI\Credits.resx">
|
||||
<DependentUpon>Credits.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GUI\Settings.resx">
|
||||
<DependentUpon>Settings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GUI\Startup Window.resx">
|
||||
<DependentUpon>Startup Window.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GUI\PluginManager.resx">
|
||||
<DependentUpon>PluginManager.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<None Include="Shader\Bfres\BFRES.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\BFRES.vert">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\BFRES_Botw.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\BFRES_Debug.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\BFRES_PBR.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\BFRES_utility.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\Normals.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\Normals.geom">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Bfres\Normals.vert">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\HDRSkyBox\HDRSkyBox.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\HDRSkyBox\HDRSkyBox.vert">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Legacy\BFRES.frag" />
|
||||
<None Include="Shader\Legacy\BFRES.vert" />
|
||||
<None Include="Shader\Utility\Utility.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Shader\Utility\Wireframe.frag">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Rendering\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\GL_EditorFramework-master\GL_Core\GL_Core.csproj">
|
||||
<Project>{29647ba5-2859-46f0-a99e-c3a387a9447a}</Project>
|
||||
<Name>GL_Core</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Switch_Toolbox_Library\Switch_Toolbox_Library.csproj">
|
||||
<Project>{96820047-2a39-4e5a-bfa4-e84fff5c66cf}</Project>
|
||||
<Name>Switch_Toolbox_Library</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Updater\Updater.csproj">
|
||||
<Project>{d82a2c08-2a65-43af-bda6-a36cc27aa003}</Project>
|
||||
<Name>Updater</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="libzstd.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\AssimpNet.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\BarsLibrary.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\BezelEngineArchive_Lib.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\ByamlExt.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Costura.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\CsvHelper.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\EditorCoreCommon.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Licenses\Assimp COPYRIGHT.txt" />
|
||||
<Content Include="Lib\Licenses\SFGraphics COPYRIGHT.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Licenses\SmashForge COPYRIGHT.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\NAudio.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Octokit.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\OpenTK.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\OpenTK.GLControl.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Plugins\Blank.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\SARCExt.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\SFGraphics.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\SFGraphics.Utils.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Switch_Toolbox.Library.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Syroot.BinaryData.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Syroot.Maths.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\VGAudio.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\VisualStudioTabControl.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\WeifenLuo.WinFormsUI.Docking.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\ZstdNet.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Lib\Licenses\ZSTD NET COPYRIGHT.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Projects\Recent\DUMMY.txt" />
|
||||
<None Include="Resources\Logo.png" />
|
||||
<Content Include="Tool.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Fody.3.2.9\build\Fody.targets" Condition="Exists('..\packages\Fody.3.2.9\build\Fody.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Fody.3.2.9\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.3.2.9\build\Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.3.1.4\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.3.1.4\build\Costura.Fody.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.3.1.4\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.3.1.4\build\Costura.Fody.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Costura.Fody.3.1.4\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.3.1.4\build\Costura.Fody.targets')" />
|
||||
</Project>
|
BIN
Switch_Toolbox/Tool.ico
Normal file
BIN
Switch_Toolbox/Tool.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 139 KiB |
BIN
Switch_Toolbox/libzstd.dll
Normal file
BIN
Switch_Toolbox/libzstd.dll
Normal file
Binary file not shown.
9
Switch_Toolbox/packages.config
Normal file
9
Switch_Toolbox/packages.config
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="3.1.4" targetFramework="net461" />
|
||||
<package id="CsvHelper" version="8.0.0-beta01" targetFramework="net462" />
|
||||
<package id="DockPanelSuite" version="3.0.4" targetFramework="net461" />
|
||||
<package id="DockPanelSuite.ThemeVS2015" version="3.0.4" targetFramework="net461" />
|
||||
<package id="Fody" version="3.2.9" targetFramework="net461" developmentDependency="true" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
</packages>
|
Loading…
Reference in New Issue
Block a user