mirror of
https://github.com/KillzXGaming/Switch-Toolbox
synced 2024-11-10 15:14:55 +00:00
Cleanup muunt and camera mini map stuff. Add game path settings
This commit is contained in:
parent
44860c2a0b
commit
fff3d58cb3
37 changed files with 421 additions and 684 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -204,8 +204,6 @@ namespace FirstPlugin
|
|||
|
||||
if (!IsLoaded)
|
||||
{
|
||||
bfresEditor.UpdateVertexData = BFRESRender.UpdateVertexData;
|
||||
bfresEditor.UpdateTextureMaps = BFRESRender.UpdateTextureMaps;
|
||||
bfresEditor.OnLoadedTab();
|
||||
}
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ namespace FirstPlugin
|
|||
|
||||
uint SectionSize = reader.ReadUInt32();
|
||||
uint NameLength = reader.ReadUInt32();
|
||||
|
||||
|
||||
if (header.Version >= 13)
|
||||
{
|
||||
ushort vertexUnk1 = reader.ReadUInt16();
|
||||
|
@ -216,6 +216,7 @@ namespace FirstPlugin
|
|||
AttributeVariables.Read(reader);
|
||||
}
|
||||
|
||||
|
||||
reader.Seek(SectionSize + pos, System.IO.SeekOrigin.Begin);
|
||||
}
|
||||
}
|
||||
|
@ -247,7 +248,9 @@ namespace FirstPlugin
|
|||
uint CodeLength = reader.ReadUInt32();
|
||||
uint CodeLength2 = reader.ReadUInt32(); //?????
|
||||
Text = reader.ReadString((int)FileNameLength);
|
||||
Code = reader.ReadString((int)CodeLength);
|
||||
// Code = reader.ReadString((int)CodeLength, Encoding.UTF32);
|
||||
byte[] CodeData = reader.ReadBytes((int)CodeLength);
|
||||
Code = Encoding.Unicode.GetString(Encoding.Convert(Encoding.Default, Encoding.Unicode, CodeData));
|
||||
|
||||
reader.Seek(SectioSize + pos, System.IO.SeekOrigin.Begin);
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ using System.Threading.Tasks;
|
|||
using Switch_Toolbox.Library.IO;
|
||||
using Switch_Toolbox.Library;
|
||||
using FirstPlugin.Forms;
|
||||
using OpenTK;
|
||||
|
||||
namespace FirstPlugin.Turbo
|
||||
{
|
||||
|
@ -62,18 +63,18 @@ namespace FirstPlugin.Turbo
|
|||
|
||||
public class CameraData
|
||||
{
|
||||
public float MapPosX { get; set; }
|
||||
public float MapPosY { get; set; }
|
||||
public float MapPosZ { get; set; }
|
||||
public float MapPos2X { get; set; }
|
||||
public float MapPos2Y { get; set; }
|
||||
public float MapPos2Z { get; set; }
|
||||
public float PositionX { get; set; }
|
||||
public float PositionY { get; set; }
|
||||
public float PositionZ { get; set; }
|
||||
public float TargetX { get; set; }
|
||||
public float TargetY { get; set; }
|
||||
public float TargetZ { get; set; }
|
||||
|
||||
public float Unk { get; set; }
|
||||
public float Unk2 { get; set; }
|
||||
public float Unk3 { get; set; }
|
||||
public float Unk4 { get; set; }
|
||||
public float Unk5 { get; set; }
|
||||
public float BoundingWidth { get; set; }
|
||||
public float BoundingHeight { get; set; }
|
||||
public byte Unk6 { get; set; }
|
||||
}
|
||||
|
||||
|
@ -97,18 +98,21 @@ namespace FirstPlugin.Turbo
|
|||
reader.Position = 0;
|
||||
|
||||
cameraData = new CameraData();
|
||||
cameraData.MapPosX = reader.ReadSingle();
|
||||
cameraData.MapPosY = reader.ReadSingle();
|
||||
cameraData.MapPosZ = reader.ReadSingle();
|
||||
cameraData.MapPos2X = reader.ReadSingle();
|
||||
cameraData.MapPos2Y = reader.ReadSingle();
|
||||
cameraData.MapPos2Z = reader.ReadSingle();
|
||||
cameraData.PositionX = reader.ReadSingle();
|
||||
cameraData.PositionY = reader.ReadSingle();
|
||||
cameraData.PositionZ = reader.ReadSingle();
|
||||
cameraData.TargetX = reader.ReadSingle();
|
||||
cameraData.TargetY = reader.ReadSingle();
|
||||
cameraData.TargetZ = reader.ReadSingle();
|
||||
cameraData.Unk = reader.ReadSingle();
|
||||
cameraData.Unk2 = reader.ReadSingle();
|
||||
cameraData.Unk3 = reader.ReadSingle();
|
||||
cameraData.Unk4 = reader.ReadSingle();
|
||||
cameraData.Unk5 = reader.ReadSingle();
|
||||
cameraData.BoundingWidth = reader.ReadSingle();
|
||||
cameraData.BoundingHeight = reader.ReadSingle();
|
||||
cameraData.Unk6 = reader.ReadByte();
|
||||
|
||||
reader.Close();
|
||||
reader.Dispose();
|
||||
}
|
||||
public void Write(FileWriter writer)
|
||||
{
|
||||
|
@ -117,18 +121,22 @@ namespace FirstPlugin.Turbo
|
|||
else
|
||||
writer.ByteOrder = Syroot.BinaryData.ByteOrder.LittleEndian;
|
||||
|
||||
writer.Write(cameraData.MapPosX);
|
||||
writer.Write(cameraData.MapPosY);
|
||||
writer.Write(cameraData.MapPosZ);
|
||||
writer.Write(cameraData.MapPos2X);
|
||||
writer.Write(cameraData.MapPos2Y);
|
||||
writer.Write(cameraData.MapPos2Z);
|
||||
writer.Write(cameraData.PositionX);
|
||||
writer.Write(cameraData.PositionY);
|
||||
writer.Write(cameraData.PositionZ);
|
||||
writer.Write(cameraData.TargetX);
|
||||
writer.Write(cameraData.TargetY);
|
||||
writer.Write(cameraData.TargetZ);
|
||||
writer.Write(cameraData.Unk);
|
||||
writer.Write(cameraData.Unk2);
|
||||
writer.Write(cameraData.Unk3);
|
||||
writer.Write(cameraData.Unk4);
|
||||
writer.Write(cameraData.Unk5);
|
||||
writer.Write(cameraData.BoundingWidth);
|
||||
writer.Write(cameraData.BoundingHeight);
|
||||
writer.Write(cameraData.Unk6);
|
||||
|
||||
writer.Flush();
|
||||
writer.Close();
|
||||
writer.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,11 @@ namespace FirstPlugin
|
|||
{
|
||||
GL.GenBuffers(1, out vbo_position);
|
||||
GL.GenBuffers(1, out ibo_elements);
|
||||
|
||||
UpdateVertexData();
|
||||
UpdateTextureMaps();
|
||||
}
|
||||
|
||||
public void LoadFile(ResU.ResFile resFileU)
|
||||
{
|
||||
ResFileNode.Load(resFileU);
|
||||
|
|
|
@ -134,9 +134,6 @@ namespace FirstPlugin.Forms
|
|||
animationPanel.ClosePanel();
|
||||
}
|
||||
|
||||
public Action UpdateVertexData;
|
||||
public Action UpdateTextureMaps;
|
||||
|
||||
public void OnLoadedTab()
|
||||
{
|
||||
//If a model was loaded we don't need to load the drawables again
|
||||
|
@ -155,9 +152,6 @@ namespace FirstPlugin.Forms
|
|||
viewport.LoadObjects();
|
||||
|
||||
IsLoaded = true;
|
||||
|
||||
UpdateVertexData();
|
||||
UpdateTextureMaps();
|
||||
}
|
||||
|
||||
private void stTabControl1_TabIndexChanged(object sender, EventArgs e)
|
||||
|
|
|
@ -17,8 +17,8 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[DisplayName("Effect Index")]
|
||||
public int EffectSW
|
||||
{
|
||||
get { return root["EffectSW"]; }
|
||||
set { root["EffectSW"] = value; }
|
||||
get { return (root["EffectSW"] != null) ? root["EffectSW"] : -255; }
|
||||
set { if (value != -255) root["EffectSW"] = value; }
|
||||
}
|
||||
|
||||
[Description("Enables or disables headlights for the course.")]
|
||||
|
@ -52,7 +52,7 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
}
|
||||
private string FirstCurve
|
||||
{
|
||||
get { return root["FirstCurve"]; }
|
||||
get { return (root["FirstCurve"] != null) ? root["FirstCurve"] : "left"; }
|
||||
set { root["FirstCurve"] = value; }
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[DisplayName("IsJugemAbove")]
|
||||
public bool IsJugemAbove
|
||||
{
|
||||
get { return root["IsJugemAbove"]; }
|
||||
get { return (root["IsJugemAbove"] != null) ? root["IsJugemAbove"] : false; }
|
||||
set { root["IsJugemAbove"] = value; }
|
||||
}
|
||||
|
||||
|
@ -70,8 +70,8 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[DisplayName("JugemAbove")]
|
||||
public int JugemAbove
|
||||
{
|
||||
get { return root["JugemAbove"]; }
|
||||
set { root["JugemAbove"] = value; }
|
||||
get { return (root["JugemAbove"] != null) ? root["JugemAbove"] : -1; }
|
||||
set { if (value != -1) root["JugemAbove"] = value; }
|
||||
}
|
||||
|
||||
[Description("Unknown Value")]
|
||||
|
@ -79,8 +79,8 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[DisplayName("LapJugemPos")]
|
||||
public int LapJugemPos
|
||||
{
|
||||
get { return root["LapJugemPos"]; }
|
||||
set { root["LapJugemPos"] = value; }
|
||||
get { return (root["LapJugemPos"] != null) ? root["LapJugemPos"] : -1; }
|
||||
set { if (value != -1) root["LapJugemPos"] = value; }
|
||||
}
|
||||
|
||||
[Description("The number of laps to be finished during the track.")]
|
||||
|
@ -88,8 +88,8 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[DisplayName("LapNumber")]
|
||||
public int LapNumber
|
||||
{
|
||||
get { return root["LapNumber"]; }
|
||||
set { root["LapNumber"] = value; }
|
||||
get { return (root["LapNumber"] != null) ? root["LapNumber"] : -1; }
|
||||
set { if (value != -1) root["LapNumber"] = value; }
|
||||
}
|
||||
|
||||
[Description("The number of pattern sets picked randomly at start.")]
|
||||
|
@ -97,8 +97,8 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[DisplayName("PatternNum")]
|
||||
public int PatternNum
|
||||
{
|
||||
get { return root["PatternNum"]; }
|
||||
set { root["PatternNum"] = value; }
|
||||
get { return (root["PatternNum"] != null) ? root["PatternNum"] : -1; }
|
||||
set { if (value != -1) root["PatternNum"] = value; }
|
||||
}
|
||||
|
||||
|
||||
|
@ -304,7 +304,9 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
return;
|
||||
|
||||
KCL kcl = (KCL)Switch_Toolbox.Library.IO.STFileLoader.OpenFileFormat(FilePath);
|
||||
KclObjects.Add(kcl);
|
||||
|
||||
if (kcl != null)
|
||||
KclObjects.Add(kcl);
|
||||
}
|
||||
|
||||
public void AddRenderableBfres(string FilePath)
|
||||
|
@ -313,7 +315,9 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
return;
|
||||
|
||||
BFRES bfres = (BFRES)Switch_Toolbox.Library.IO.STFileLoader.OpenFileFormat(FilePath);
|
||||
BfresObjects.Add(bfres);
|
||||
|
||||
if (bfres != null)
|
||||
BfresObjects.Add(bfres);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
get
|
||||
{
|
||||
if (renderablePoint == null)
|
||||
renderablePoint = new RenderablePathPoint(new Vector4(1f, 0f, 0f, 1f), Translate, Rotate, new OpenTK.Vector3(30), this);
|
||||
renderablePoint = new RenderablePathPoint(new Vector4(0f, 1f, 1f, 1f), Translate, Rotate, new OpenTK.Vector3(30), this);
|
||||
return renderablePoint;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,43 +86,43 @@ namespace FirstPlugin.Turbo.CourseMuuntStructs
|
|||
[Category("Properties")]
|
||||
public int CheckPoint
|
||||
{
|
||||
get { return this["CheckPoint"]; }
|
||||
set { this["CheckPoint"] = value; }
|
||||
get { return this["CheckPoint"] != null ? this["CheckPoint"] : -255; }
|
||||
set { if (value != -255) this["CheckPoint"] = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
public int ClipIdx
|
||||
{
|
||||
get { return this["ClipIdx"]; }
|
||||
set { this["ClipIdx"] = value; }
|
||||
get { return this["ClipIdx"] != null ? this["ClipIdx"] : -255; }
|
||||
set { if (value != -255) this["ClipIdx"] = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
public bool HeadLightSW
|
||||
{
|
||||
get { return this["HeadLightSW"]; }
|
||||
get { return this["HeadLightSW"] != null ? this["HeadLightSW"] : false; }
|
||||
set { this["HeadLightSW"] = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
public int LapCheck
|
||||
{
|
||||
get { return this["LapCheck"]; }
|
||||
set { this["LapCheck"] = value; }
|
||||
get { return this["LapCheck"] != null ? this["LapCheck"] : -255; }
|
||||
set { if (value != -255) this["LapCheck"] = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
public int MapCameraFovy
|
||||
{
|
||||
get { return this["MapCameraFovy"]; }
|
||||
set { this["MapCameraFovy"] = value; }
|
||||
get { return this["MapCameraFovy"] != null ? this["MapCameraFovy"] : -255; }
|
||||
set { if (value != -255) this["MapCameraFovy"] = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
public int MapCameraY
|
||||
{
|
||||
get { return this["MapCameraY"]; }
|
||||
set { this["MapCameraY"] = value; }
|
||||
get { return this["MapCameraY"] != null ? this["MapCameraY"] : -255; }
|
||||
set { if (value != -255) this["MapCameraY"] = value; }
|
||||
}
|
||||
|
||||
public LapPathPoint(dynamic bymlNode)
|
||||
|
|
|
@ -34,9 +34,9 @@ namespace FirstPlugin.Forms
|
|||
viewport.scene.SelectionChanged += Scene_SelectionChanged;
|
||||
stPanel4.Controls.Add(viewport);
|
||||
|
||||
// viewport2D = new GLControl2D();
|
||||
// viewport2D.Dock = DockStyle.Fill;
|
||||
// stPanel3.Controls.Add(viewport2D);
|
||||
viewport2D = new GLControl2D();
|
||||
viewport2D.Dock = DockStyle.Fill;
|
||||
stPanel3.Controls.Add(viewport2D);
|
||||
}
|
||||
|
||||
|
||||
|
@ -65,25 +65,9 @@ namespace FirstPlugin.Forms
|
|||
|
||||
if (File.Exists($"{CourseFolder}/course_model.szs"))
|
||||
{
|
||||
// scene.AddRenderableBfres($"{CourseFolder}/course_model.szs");
|
||||
|
||||
|
||||
|
||||
scene.AddRenderableBfres($"{CourseFolder}/course_model.szs");
|
||||
}
|
||||
|
||||
foreach (var kcl in scene.KclObjects)
|
||||
{
|
||||
// viewport.AddDrawable(kcl.Renderer);
|
||||
// kcl.Renderer.UpdateVertexData();
|
||||
}
|
||||
|
||||
foreach (var bfres in scene.BfresObjects)
|
||||
{
|
||||
viewport.AddDrawable(bfres.BFRESRender);
|
||||
|
||||
bfres.BFRESRender.UpdateVertexData();
|
||||
bfres.BFRESRender.UpdateTextureMaps();
|
||||
}
|
||||
viewport.AddDrawable(new GL_EditorFramework.EditorDrawables.SingleObject(new OpenTK.Vector3(0)));
|
||||
|
||||
viewport.LoadObjects();
|
||||
|
@ -123,7 +107,20 @@ namespace FirstPlugin.Forms
|
|||
if (scene.IntroCameras.Count > 0) {
|
||||
AddPathDrawable("IntroCamera", scene.IntroCameras, Color.Pink);
|
||||
}
|
||||
|
||||
|
||||
foreach (var kcl in scene.KclObjects)
|
||||
{
|
||||
viewport.AddDrawable(kcl.Renderer);
|
||||
treeView1.Nodes.Add(kcl);
|
||||
kcl.Checked = true;
|
||||
}
|
||||
|
||||
foreach (var bfres in scene.BfresObjects)
|
||||
{
|
||||
viewport.AddDrawable(bfres.BFRESRender);
|
||||
treeView1.Nodes.Add(bfres);
|
||||
bfres.Checked = true;
|
||||
}
|
||||
|
||||
IsLoaded = true;
|
||||
}
|
||||
|
@ -211,11 +208,15 @@ namespace FirstPlugin.Forms
|
|||
{
|
||||
List<EditableObject> newSelection = new List<EditableObject>();
|
||||
|
||||
TreeNode node = treeView1.SelectedNode;
|
||||
TreeNode node = treeView1.SelectedNode;
|
||||
if (node == null)
|
||||
return;
|
||||
|
||||
if (node is PathCollectionNode)
|
||||
if (node.Text == "Scene")
|
||||
{
|
||||
stPropertyGrid1.LoadProperty(scene, OnPropertyChanged);
|
||||
}
|
||||
else if (node is PathCollectionNode)
|
||||
{
|
||||
foreach (var group in ((PathCollectionNode)node).Nodes)
|
||||
{
|
||||
|
@ -225,14 +226,14 @@ namespace FirstPlugin.Forms
|
|||
}
|
||||
}
|
||||
}
|
||||
if (node is PathGroupNode)
|
||||
else if (node is PathGroupNode)
|
||||
{
|
||||
foreach (var point in ((PathGroupNode)node).Nodes)
|
||||
{
|
||||
newSelection.Add(((PathPointNode)point).PathPoint.RenderablePoint);
|
||||
}
|
||||
}
|
||||
if (node is PathPointNode)
|
||||
else if (node is PathPointNode)
|
||||
{
|
||||
newSelection.Add(((PathPointNode)node).PathPoint.RenderablePoint);
|
||||
}
|
||||
|
|
|
@ -1,94 +0,0 @@
|
|||
namespace FirstPlugin.Turbo
|
||||
{
|
||||
partial class CourseMunntEditor
|
||||
{
|
||||
/// <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.stTabControl1 = new Switch_Toolbox.Library.Forms.STTabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.contentContainer.SuspendLayout();
|
||||
this.stTabControl1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// contentContainer
|
||||
//
|
||||
this.contentContainer.Controls.Add(this.stTabControl1);
|
||||
this.contentContainer.Controls.SetChildIndex(this.stTabControl1, 0);
|
||||
//
|
||||
// stTabControl1
|
||||
//
|
||||
this.stTabControl1.Controls.Add(this.tabPage1);
|
||||
this.stTabControl1.Controls.Add(this.tabPage2);
|
||||
this.stTabControl1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.stTabControl1.Location = new System.Drawing.Point(0, 25);
|
||||
this.stTabControl1.myBackColor = System.Drawing.Color.Empty;
|
||||
this.stTabControl1.Name = "stTabControl1";
|
||||
this.stTabControl1.SelectedIndex = 0;
|
||||
this.stTabControl1.Size = new System.Drawing.Size(215, 368);
|
||||
this.stTabControl1.TabIndex = 11;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(207, 339);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(207, 339);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// CourseMunntEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(549, 398);
|
||||
this.Name = "CourseMunntEditor";
|
||||
this.Text = "CourseMunntEditor";
|
||||
this.contentContainer.ResumeLayout(false);
|
||||
this.stTabControl1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Switch_Toolbox.Library.Forms.STTabControl stTabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
}
|
||||
}
|
|
@ -1,136 +0,0 @@
|
|||
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.Forms;
|
||||
using FirstPlugin.Turbo.CourseMuuntStructs;
|
||||
using ByamlExt.Byaml;
|
||||
|
||||
namespace FirstPlugin.Turbo
|
||||
{
|
||||
public partial class CourseMunntEditor : STForm
|
||||
{
|
||||
static Dictionary<int, string> ObjIDNameList = new Dictionary<int, string>();
|
||||
|
||||
public CourseMunntEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public void LoadObjList()
|
||||
{
|
||||
if (PluginRuntime.Mk8GamePath == "")
|
||||
{
|
||||
FolderSelectDialog dlg = new FolderSelectDialog();
|
||||
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
PluginRuntime.Mk8GamePath = dlg.SelectedPath;
|
||||
}
|
||||
}
|
||||
|
||||
var byml = ByamlFile.LoadN($"{PluginRuntime.Mk8GamePath}/Data/Objflow.byaml", true).RootNode;
|
||||
foreach (var item in byml)
|
||||
{
|
||||
int ID = item["ObjId"];
|
||||
List<string> files = ((IList<object>)item["ResName"]).Cast<string>().ToList();
|
||||
ObjIDNameList.Add(ID, files[0]);
|
||||
|
||||
Console.WriteLine(ID + " " + files[0]);
|
||||
}
|
||||
byml = null;
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
public void LoadData(dynamic byaml)
|
||||
{
|
||||
LoadObjList();
|
||||
|
||||
if (byaml.ContainsKey("Area"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("Clip"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("ClipArea"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("ClipPattern"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("CurrentArea"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("EffectArea"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("EnemyPath"))
|
||||
{
|
||||
LoadEnemyPaths(byaml);
|
||||
}
|
||||
if (byaml.ContainsKey("FirstCurve"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("GravityPath"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("IntroCamera"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("JugemPath"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("LapPath"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("MapObjIdList"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("MapObjResList"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("Path"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("ReplayCamera"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("SoundObj"))
|
||||
{
|
||||
|
||||
}
|
||||
if (byaml.ContainsKey("SoundObj"))
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
private void LoadEnemyPaths(dynamic byaml)
|
||||
{
|
||||
foreach (dynamic group in byaml["EnemyPath"])
|
||||
{
|
||||
foreach (dynamic path in group)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -28,54 +28,39 @@
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MK8MapCameraEditor));
|
||||
this.stPropertyGrid1 = new Switch_Toolbox.Library.Forms.STPropertyGrid();
|
||||
this.pictureBoxCustom1 = new Switch_Toolbox.Library.Forms.PictureBoxCustom();
|
||||
this.leBtnRadio = new System.Windows.Forms.RadioButton();
|
||||
this.beBtnRadio = new System.Windows.Forms.RadioButton();
|
||||
this.glControl2D1 = new Switch_Toolbox.Library.Forms.GLControl2D();
|
||||
this.contentContainer.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// contentContainer
|
||||
//
|
||||
this.contentContainer.Controls.Add(this.glControl2D1);
|
||||
this.contentContainer.Controls.Add(this.beBtnRadio);
|
||||
this.contentContainer.Controls.Add(this.leBtnRadio);
|
||||
this.contentContainer.Controls.Add(this.pictureBoxCustom1);
|
||||
this.contentContainer.Controls.Add(this.stPropertyGrid1);
|
||||
this.contentContainer.Size = new System.Drawing.Size(570, 397);
|
||||
this.contentContainer.Controls.SetChildIndex(this.stPropertyGrid1, 0);
|
||||
this.contentContainer.Controls.SetChildIndex(this.pictureBoxCustom1, 0);
|
||||
this.contentContainer.Controls.SetChildIndex(this.leBtnRadio, 0);
|
||||
this.contentContainer.Controls.SetChildIndex(this.beBtnRadio, 0);
|
||||
this.contentContainer.Controls.SetChildIndex(this.glControl2D1, 0);
|
||||
//
|
||||
// stPropertyGrid1
|
||||
//
|
||||
this.stPropertyGrid1.AutoScroll = true;
|
||||
this.stPropertyGrid1.DisableHintDisplay = true;
|
||||
this.stPropertyGrid1.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.stPropertyGrid1.Location = new System.Drawing.Point(346, 25);
|
||||
this.stPropertyGrid1.Location = new System.Drawing.Point(272, 25);
|
||||
this.stPropertyGrid1.Name = "stPropertyGrid1";
|
||||
this.stPropertyGrid1.Size = new System.Drawing.Size(224, 372);
|
||||
this.stPropertyGrid1.Size = new System.Drawing.Size(298, 372);
|
||||
this.stPropertyGrid1.TabIndex = 11;
|
||||
//
|
||||
// pictureBoxCustom1
|
||||
//
|
||||
this.pictureBoxCustom1.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.pictureBoxCustom1.BackColor = System.Drawing.Color.Empty;
|
||||
this.pictureBoxCustom1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBoxCustom1.BackgroundImage")));
|
||||
this.pictureBoxCustom1.Location = new System.Drawing.Point(3, 56);
|
||||
this.pictureBoxCustom1.Name = "pictureBoxCustom1";
|
||||
this.pictureBoxCustom1.Size = new System.Drawing.Size(337, 341);
|
||||
this.pictureBoxCustom1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pictureBoxCustom1.TabIndex = 12;
|
||||
this.pictureBoxCustom1.TabStop = false;
|
||||
//
|
||||
// leBtnRadio
|
||||
//
|
||||
this.leBtnRadio.AutoSize = true;
|
||||
this.leBtnRadio.Location = new System.Drawing.Point(249, 32);
|
||||
this.leBtnRadio.Location = new System.Drawing.Point(154, 31);
|
||||
this.leBtnRadio.Name = "leBtnRadio";
|
||||
this.leBtnRadio.Size = new System.Drawing.Size(83, 17);
|
||||
this.leBtnRadio.TabIndex = 13;
|
||||
|
@ -86,7 +71,7 @@
|
|||
// beBtnRadio
|
||||
//
|
||||
this.beBtnRadio.AutoSize = true;
|
||||
this.beBtnRadio.Location = new System.Drawing.Point(167, 32);
|
||||
this.beBtnRadio.Location = new System.Drawing.Point(72, 31);
|
||||
this.beBtnRadio.Name = "beBtnRadio";
|
||||
this.beBtnRadio.Size = new System.Drawing.Size(76, 17);
|
||||
this.beBtnRadio.TabIndex = 14;
|
||||
|
@ -95,6 +80,18 @@
|
|||
this.beBtnRadio.UseVisualStyleBackColor = true;
|
||||
this.beBtnRadio.CheckedChanged += new System.EventHandler(this.beBtnRadio_CheckedChanged);
|
||||
//
|
||||
// glControl2D1
|
||||
//
|
||||
this.glControl2D1.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.glControl2D1.BackColor = System.Drawing.Color.Black;
|
||||
this.glControl2D1.Location = new System.Drawing.Point(3, 54);
|
||||
this.glControl2D1.Name = "glControl2D1";
|
||||
this.glControl2D1.Size = new System.Drawing.Size(263, 343);
|
||||
this.glControl2D1.TabIndex = 15;
|
||||
this.glControl2D1.VSync = false;
|
||||
//
|
||||
// MK8MapCameraEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -103,7 +100,6 @@
|
|||
this.Name = "MK8MapCameraEditor";
|
||||
this.contentContainer.ResumeLayout(false);
|
||||
this.contentContainer.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCustom1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
@ -111,8 +107,8 @@
|
|||
#endregion
|
||||
|
||||
private Switch_Toolbox.Library.Forms.STPropertyGrid stPropertyGrid1;
|
||||
private Switch_Toolbox.Library.Forms.PictureBoxCustom pictureBoxCustom1;
|
||||
private System.Windows.Forms.RadioButton beBtnRadio;
|
||||
private System.Windows.Forms.RadioButton leBtnRadio;
|
||||
private Switch_Toolbox.Library.Forms.GLControl2D glControl2D1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,13 +8,19 @@ using System.Text;
|
|||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Switch_Toolbox.Library.Forms;
|
||||
using Switch_Toolbox.Library;
|
||||
using ByamlExt.Byaml;
|
||||
using ByamlExt;
|
||||
|
||||
namespace FirstPlugin.Turbo
|
||||
{
|
||||
public partial class MK8MapCameraEditor : STForm
|
||||
public partial class MK8MapCameraEditor : STForm, IFIleEditor
|
||||
{
|
||||
public List<IFileFormat> GetFileFormats()
|
||||
{
|
||||
return new List<IFileFormat>() { activeCameraFile };
|
||||
}
|
||||
|
||||
public MK8MapCameraEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -25,12 +31,19 @@ namespace FirstPlugin.Turbo
|
|||
{
|
||||
activeCameraFile = mapCamera;
|
||||
|
||||
var cam = mapCamera.cameraData;
|
||||
|
||||
if (activeCameraFile.BigEndian)
|
||||
beBtnRadio.Checked = true;
|
||||
else
|
||||
leBtnRadio.Checked = true;
|
||||
|
||||
stPropertyGrid1.LoadProperty(activeCameraFile.cameraData, OnPropertyChanged);
|
||||
|
||||
glControl2D1.AddCircle(new OpenTK.Vector2(cam.PositionX, cam.PositionZ));
|
||||
glControl2D1.AddCircle(new OpenTK.Vector2(cam.TargetX, cam.TargetZ));
|
||||
|
||||
glControl2D1.AddRectangle(cam.BoundingWidth, cam.BoundingHeight, new OpenTK.Vector2(cam.PositionX, cam.PositionZ));
|
||||
}
|
||||
|
||||
public void OnPropertyChanged() { }
|
||||
|
|
|
@ -117,212 +117,4 @@
|
|||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBoxCustom1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
|
||||
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
|
||||
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
|
||||
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -655,12 +655,6 @@
|
|||
<Compile Include="GUI\Editors\MK8TrackEditor\MK8MapCameraEditor.Designer.cs">
|
||||
<DependentUpon>MK8MapCameraEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Editors\MK8TrackEditor\CourseMunntEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Editors\MK8TrackEditor\CourseMunntEditor.Designer.cs">
|
||||
<DependentUpon>CourseMunntEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GUI\Editors\PTCL\EmitterEditor.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
|
@ -951,9 +945,6 @@
|
|||
<EmbeddedResource Include="GUI\BFRES\AnimKeyViewer.resx">
|
||||
<DependentUpon>AnimKeyViewer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GUI\Editors\MK8TrackEditor\CourseMunntEditor.resx">
|
||||
<DependentUpon>CourseMunntEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GUI\Editors\MK8TrackEditor\MK8MapCameraEditor.resx">
|
||||
<DependentUpon>MK8MapCameraEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1 +1 @@
|
|||
c7a1ea0c8bb5cda1a3ae9f10e9442299684f6a53
|
||||
f116fcf22bd14b1cb853244a6978b4a40935e43b
|
||||
|
|
|
@ -283,7 +283,6 @@ C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Rele
|
|||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.Forms.TurboMunntEditor.resources
|
||||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.Forms.AnimParamEditor.resources
|
||||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.Forms.AnimKeyViewer.resources
|
||||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.Turbo.CourseMunntEditor.resources
|
||||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.Turbo.MK8MapCameraEditor.resources
|
||||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.EmitterEditor.resources
|
||||
C:\Users\Nathan\Documents\GitHub\SwitchToolboxV1\Switch_FileFormatsMain\obj\Release\FirstPlugin.BfresModelImportSettings.resources
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -9,8 +9,29 @@ using Switch_Toolbox.Library;
|
|||
|
||||
namespace Switch_Toolbox.Library.Forms
|
||||
{
|
||||
public class Abstract2DDrawable
|
||||
{
|
||||
public virtual void Prepare(GLControl2D control)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void Draw(GLControl2D control)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class GLControl2D : GLControl
|
||||
{
|
||||
public GLControl2D() {
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public List<Abstract2DDrawable> Drawables = new List<Abstract2DDrawable>();
|
||||
|
||||
public float ZoomFactor = 1;
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
|
@ -26,17 +47,106 @@ namespace Switch_Toolbox.Library.Forms
|
|||
|
||||
private void GLControl2D_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
|
||||
{
|
||||
if (Runtime.OpenTKInitialized == false)
|
||||
return;
|
||||
|
||||
MakeCurrent();
|
||||
|
||||
GL.ClearColor(System.Drawing.Color.FromArgb(40, 40, 40));
|
||||
SetupRendering();
|
||||
GL.ClearColor(System.Drawing.Color.FromArgb(0, 0, 40));
|
||||
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
|
||||
|
||||
GL.Disable(EnableCap.Texture2D);
|
||||
|
||||
foreach (var drawable in Drawables)
|
||||
drawable.Draw(this);
|
||||
|
||||
SwapBuffers();
|
||||
}
|
||||
|
||||
private void SetupRendering()
|
||||
{
|
||||
GL.Viewport(0, 0, Width, Height);
|
||||
GL.MatrixMode(MatrixMode.Projection);
|
||||
GL.PushMatrix();
|
||||
GL.LoadIdentity();
|
||||
|
||||
GL.Ortho(0, Width * 225, Height * 225, 0, -1, 1);
|
||||
GL.MatrixMode(MatrixMode.Modelview);
|
||||
GL.PushMatrix();
|
||||
GL.LoadIdentity();
|
||||
|
||||
// Draw over everything
|
||||
GL.Disable(EnableCap.DepthTest);
|
||||
GL.Disable(EnableCap.CullFace);
|
||||
}
|
||||
|
||||
public void AddCircle(Vector2 Position, float Scale = 1) {
|
||||
Drawables.Add(new Circle2D(Position));
|
||||
}
|
||||
|
||||
public class Circle2D : Abstract2DDrawable
|
||||
{
|
||||
public float Radius = 1;
|
||||
public Vector2 Position = new Vector2(0);
|
||||
|
||||
public Circle2D(Vector2 position)
|
||||
{
|
||||
Position = position;
|
||||
}
|
||||
|
||||
public override void Draw(GLControl2D control)
|
||||
{
|
||||
GL.PushMatrix();
|
||||
GL.Translate(Position.X, Position.Y, 0);
|
||||
|
||||
GL.Color4(System.Drawing.Color.Red);
|
||||
GL.Begin(PrimitiveType.LineLoop);
|
||||
for (int i = 0; i <= 300; i++)
|
||||
{
|
||||
double angle = 2 * Math.PI * i / 300;
|
||||
double x = Math.Cos(angle);
|
||||
double y = Math.Sin(angle);
|
||||
GL.Vertex2(x, y);
|
||||
}
|
||||
GL.End();
|
||||
|
||||
GL.PopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public class Rectangle2D : Abstract2DDrawable
|
||||
{
|
||||
public float Width = 600;
|
||||
public float Height = 400;
|
||||
public Vector2 Position = new Vector2(0);
|
||||
|
||||
public Rectangle2D(float width, float height, Vector2 position) {
|
||||
Width = width;
|
||||
Height = height;
|
||||
Position = position;
|
||||
}
|
||||
|
||||
public override void Draw(GLControl2D control)
|
||||
{
|
||||
GL.PushMatrix();
|
||||
GL.Translate(Position.X, Position.Y, 0);
|
||||
|
||||
GL.Color4(System.Drawing.Color.White);
|
||||
GL.Begin(PrimitiveType.Quads);
|
||||
GL.TexCoord2(-1, -1);
|
||||
GL.Vertex3(-Width, -Height, 0);
|
||||
GL.TexCoord2(0, -1);
|
||||
GL.Vertex3(Width, -Height, 0);
|
||||
GL.TexCoord2(0, 0);
|
||||
GL.Vertex3(Width, Height, 0);
|
||||
GL.TexCoord2(-1, 0);
|
||||
GL.Vertex3(-Width, Height, 0);
|
||||
GL.End();
|
||||
|
||||
GL.PopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public void AddRectangle(float Width, float Height, Vector2 Position) {
|
||||
Drawables.Add(new Rectangle2D(Width, Height, Position));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,10 @@ namespace Switch_Toolbox.Library
|
|||
|
||||
public class Runtime
|
||||
{
|
||||
public static string Mk8GamePath = "";
|
||||
public static string Mk8dGamePath = "";
|
||||
public static string SmoGamePath = "";
|
||||
|
||||
public class ImageEditor
|
||||
{
|
||||
public static bool ShowPropertiesPanel = true;
|
||||
|
|
|
@ -22,6 +22,17 @@ namespace Toolbox
|
|||
ReadConfigFromFile(fileName);
|
||||
}
|
||||
|
||||
public static void GamePathsFromFile(string fileName)
|
||||
{
|
||||
if (!File.Exists(fileName))
|
||||
{
|
||||
SavePaths();
|
||||
return;
|
||||
}
|
||||
|
||||
ReadConfigFromFile(fileName);
|
||||
}
|
||||
|
||||
private static void ReadConfigFromFile(string fileName)
|
||||
{
|
||||
int discordImageKey;
|
||||
|
@ -144,6 +155,15 @@ namespace Toolbox
|
|||
case "AddFilesToActiveObjectEditor":
|
||||
bool.TryParse(node.InnerText, out Runtime.AddFilesToActiveObjectEditor);
|
||||
break;
|
||||
case "SmoGamePath":
|
||||
Runtime.SmoGamePath = node.InnerText;
|
||||
break;
|
||||
case "Mk8GamePath":
|
||||
Runtime.Mk8GamePath = node.InnerText;
|
||||
break;
|
||||
case "Mk8dGamePath":
|
||||
Runtime.Mk8dGamePath = node.InnerText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -209,7 +229,27 @@ namespace Toolbox
|
|||
{
|
||||
XmlDocument doc = CreateXmlFromSettings();
|
||||
doc.Save(Runtime.ExecutableDir + "\\config.xml");
|
||||
|
||||
SavePaths();
|
||||
}
|
||||
|
||||
private static void SavePaths()
|
||||
{
|
||||
XmlDocument doc = CreatePathXmlFromSettings();
|
||||
doc.Save(Runtime.ExecutableDir + "\\config_paths.xml");
|
||||
}
|
||||
|
||||
private static XmlDocument CreatePathXmlFromSettings()
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
XmlNode mainNode = doc.CreateElement("TOOLCONFIG");
|
||||
doc.AppendChild(mainNode);
|
||||
|
||||
AppendPathSettings(doc, mainNode);
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
private static XmlDocument CreateXmlFromSettings()
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
|
@ -237,6 +277,14 @@ namespace Toolbox
|
|||
mainSettingsNode.AppendChild(createNode(doc, "FormTheme", Switch_Toolbox.Library.Forms.FormThemes.ActivePreset.ToString()));
|
||||
mainSettingsNode.AppendChild(createNode(doc, "MaximizeMdiWindow", Runtime.MaximizeMdiWindow.ToString()));
|
||||
}
|
||||
private static void AppendPathSettings(XmlDocument doc, XmlNode parentNode)
|
||||
{
|
||||
XmlNode PathsNode = doc.CreateElement("PATHS");
|
||||
parentNode.AppendChild(PathsNode);
|
||||
PathsNode.AppendChild(createNode(doc, "SmoGamePath", Runtime.SmoGamePath.ToString()));
|
||||
PathsNode.AppendChild(createNode(doc, "Mk8GamePath", Runtime.Mk8GamePath.ToString()));
|
||||
PathsNode.AppendChild(createNode(doc, "Mk8dGamePath", Runtime.Mk8dGamePath.ToString()));
|
||||
}
|
||||
private static void AppendEditorSettings(XmlDocument doc, XmlNode parentNode)
|
||||
{
|
||||
XmlNode SettingsNode = doc.CreateElement("EDITORSETTINGS");
|
||||
|
|
89
Toolbox/GUI/Settings.Designer.cs
generated
89
Toolbox/GUI/Settings.Designer.cs
generated
|
@ -87,6 +87,13 @@
|
|||
this.bgGradientTop = new System.Windows.Forms.PictureBox();
|
||||
this.stLabel2 = new Switch_Toolbox.Library.Forms.STLabel();
|
||||
this.preferredTexFormatCB = new System.Windows.Forms.ComboBox();
|
||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||
this.stLabel12 = new Switch_Toolbox.Library.Forms.STLabel();
|
||||
this.SMOPathTB = new Switch_Toolbox.Library.Forms.STTextBox();
|
||||
this.stLabel11 = new Switch_Toolbox.Library.Forms.STLabel();
|
||||
this.mk8DPathTB = new Switch_Toolbox.Library.Forms.STTextBox();
|
||||
this.stLabel10 = new Switch_Toolbox.Library.Forms.STLabel();
|
||||
this.mk8PathTB = new Switch_Toolbox.Library.Forms.STTextBox();
|
||||
this.contentContainer.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cameraMaxSpeedUD)).BeginInit();
|
||||
|
@ -106,6 +113,7 @@
|
|||
((System.ComponentModel.ISupportInitialize)(this.gridCellSizeUD)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bgGradientBottom)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bgGradientTop)).BeginInit();
|
||||
this.tabPage3.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// contentContainer
|
||||
|
@ -722,6 +730,7 @@
|
|||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.stTabControl1.Controls.Add(this.tabPage1);
|
||||
this.stTabControl1.Controls.Add(this.tabPage2);
|
||||
this.stTabControl1.Controls.Add(this.tabPage3);
|
||||
this.stTabControl1.Location = new System.Drawing.Point(0, 25);
|
||||
this.stTabControl1.myBackColor = System.Drawing.Color.Empty;
|
||||
this.stTabControl1.Name = "stTabControl1";
|
||||
|
@ -896,6 +905,77 @@
|
|||
this.preferredTexFormatCB.Size = new System.Drawing.Size(228, 21);
|
||||
this.preferredTexFormatCB.TabIndex = 0;
|
||||
this.preferredTexFormatCB.SelectedIndexChanged += new System.EventHandler(this.preferredTexFormatCB_SelectedIndexChanged);
|
||||
//
|
||||
// tabPage3
|
||||
//
|
||||
this.tabPage3.Controls.Add(this.stLabel12);
|
||||
this.tabPage3.Controls.Add(this.SMOPathTB);
|
||||
this.tabPage3.Controls.Add(this.stLabel11);
|
||||
this.tabPage3.Controls.Add(this.mk8DPathTB);
|
||||
this.tabPage3.Controls.Add(this.stLabel10);
|
||||
this.tabPage3.Controls.Add(this.mk8PathTB);
|
||||
this.tabPage3.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage3.Size = new System.Drawing.Size(541, 395);
|
||||
this.tabPage3.TabIndex = 2;
|
||||
this.tabPage3.Text = "Paths";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// stLabel12
|
||||
//
|
||||
this.stLabel12.AutoSize = true;
|
||||
this.stLabel12.Location = new System.Drawing.Point(6, 70);
|
||||
this.stLabel12.Name = "stLabel12";
|
||||
this.stLabel12.Size = new System.Drawing.Size(76, 13);
|
||||
this.stLabel12.TabIndex = 5;
|
||||
this.stLabel12.Text = "Mario Odyssey";
|
||||
//
|
||||
// SMOPathTB
|
||||
//
|
||||
this.SMOPathTB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.SMOPathTB.Location = new System.Drawing.Point(112, 68);
|
||||
this.SMOPathTB.Name = "SMOPathTB";
|
||||
this.SMOPathTB.Size = new System.Drawing.Size(258, 20);
|
||||
this.SMOPathTB.TabIndex = 4;
|
||||
this.SMOPathTB.Click += new System.EventHandler(this.SMOPathTB_Click);
|
||||
//
|
||||
// stLabel11
|
||||
//
|
||||
this.stLabel11.AutoSize = true;
|
||||
this.stLabel11.Location = new System.Drawing.Point(6, 44);
|
||||
this.stLabel11.Name = "stLabel11";
|
||||
this.stLabel11.Size = new System.Drawing.Size(100, 13);
|
||||
this.stLabel11.TabIndex = 3;
|
||||
this.stLabel11.Text = "Mario Kart 8 Deluxe";
|
||||
//
|
||||
// mk8DPathTB
|
||||
//
|
||||
this.mk8DPathTB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.mk8DPathTB.Location = new System.Drawing.Point(112, 42);
|
||||
this.mk8DPathTB.Name = "mk8DPathTB";
|
||||
this.mk8DPathTB.Size = new System.Drawing.Size(258, 20);
|
||||
this.mk8DPathTB.TabIndex = 2;
|
||||
this.mk8DPathTB.Click += new System.EventHandler(this.mk8DPathTB_Click);
|
||||
//
|
||||
// stLabel10
|
||||
//
|
||||
this.stLabel10.AutoSize = true;
|
||||
this.stLabel10.Location = new System.Drawing.Point(6, 18);
|
||||
this.stLabel10.Name = "stLabel10";
|
||||
this.stLabel10.Size = new System.Drawing.Size(64, 13);
|
||||
this.stLabel10.TabIndex = 1;
|
||||
this.stLabel10.Text = "Mario Kart 8";
|
||||
//
|
||||
// mk8PathTB
|
||||
//
|
||||
this.mk8PathTB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.mk8PathTB.Location = new System.Drawing.Point(112, 16);
|
||||
this.mk8PathTB.Name = "mk8PathTB";
|
||||
this.mk8PathTB.Size = new System.Drawing.Size(258, 20);
|
||||
this.mk8PathTB.TabIndex = 0;
|
||||
this.mk8PathTB.Click += new System.EventHandler(this.mk8PathTB_Click);
|
||||
|
||||
//
|
||||
// Settings
|
||||
//
|
||||
|
@ -929,6 +1009,8 @@
|
|||
((System.ComponentModel.ISupportInitialize)(this.gridCellSizeUD)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bgGradientBottom)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bgGradientTop)).EndInit();
|
||||
this.tabPage3.ResumeLayout(false);
|
||||
this.tabPage3.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
@ -994,5 +1076,12 @@
|
|||
private Switch_Toolbox.Library.Forms.NumericUpDownFloat cameraMaxSpeedUD;
|
||||
private Switch_Toolbox.Library.Forms.STCheckBox enableVersionCheckCHK;
|
||||
private Switch_Toolbox.Library.Forms.STCheckBox boneXRayChk;
|
||||
private System.Windows.Forms.TabPage tabPage3;
|
||||
private Switch_Toolbox.Library.Forms.STLabel stLabel12;
|
||||
private Switch_Toolbox.Library.Forms.STTextBox SMOPathTB;
|
||||
private Switch_Toolbox.Library.Forms.STLabel stLabel11;
|
||||
private Switch_Toolbox.Library.Forms.STTextBox mk8DPathTB;
|
||||
private Switch_Toolbox.Library.Forms.STLabel stLabel10;
|
||||
private Switch_Toolbox.Library.Forms.STTextBox mk8PathTB;
|
||||
}
|
||||
}
|
|
@ -69,6 +69,12 @@ namespace Toolbox
|
|||
boneSizeUD.Value = (decimal)Runtime.bonePointSize;
|
||||
cameraMaxSpeedUD.Value = (decimal)Runtime.MaxCameraSpeed;
|
||||
boneXRayChk.Checked = Runtime.boneXrayDisplay;
|
||||
mk8DPathTB.Text = Runtime.Mk8dGamePath;
|
||||
mk8PathTB.Text = Runtime.Mk8GamePath;
|
||||
SMOPathTB.Text = Runtime.SmoGamePath;
|
||||
mk8DPathTB.ReadOnly = true;
|
||||
mk8PathTB.ReadOnly = true;
|
||||
SMOPathTB.ReadOnly = true;
|
||||
|
||||
GLSLVerLabel.Text = $"Open GL Version: {Runtime.GLSLVersion}";
|
||||
openGLVerLabel.Text = $"GLSL Version: {Runtime.openGLVersion}";
|
||||
|
@ -374,5 +380,31 @@ namespace Toolbox
|
|||
Runtime.boneXrayDisplay = boneXRayChk.Checked;
|
||||
UpdateViewportSettings();
|
||||
}
|
||||
|
||||
private void mk8PathTB_Click(object sender, EventArgs e) {
|
||||
FolderSelectDialog sfd = new FolderSelectDialog();
|
||||
if (sfd.ShowDialog() == DialogResult.OK) {
|
||||
mk8PathTB.Text = sfd.SelectedPath;
|
||||
Runtime.Mk8GamePath = mk8PathTB.Text;
|
||||
}
|
||||
}
|
||||
|
||||
private void mk8DPathTB_Click(object sender, EventArgs e) {
|
||||
FolderSelectDialog sfd = new FolderSelectDialog();
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
mk8DPathTB.Text = sfd.SelectedPath;
|
||||
Runtime.Mk8dGamePath = mk8DPathTB.Text;
|
||||
}
|
||||
}
|
||||
|
||||
private void SMOPathTB_Click(object sender, EventArgs e) {
|
||||
FolderSelectDialog sfd = new FolderSelectDialog();
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
SMOPathTB.Text = sfd.SelectedPath;
|
||||
Runtime.SmoGamePath = SMOPathTB.Text;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -497,6 +497,7 @@ namespace Toolbox
|
|||
try
|
||||
{
|
||||
Config.StartupFromFile(Runtime.ExecutableDir + "\\config.xml");
|
||||
Config.GamePathsFromFile(Runtime.ExecutableDir + "\\config_paths.xml");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue