mirror of
https://github.com/KillzXGaming/Switch-Toolbox
synced 2025-02-16 22:08:26 +00:00
Adjust KCL constructor
This commit is contained in:
parent
97b311f5bd
commit
619c1a9e23
1 changed files with 51 additions and 11 deletions
|
@ -66,12 +66,6 @@ namespace FirstPlugin
|
|||
{
|
||||
CanSave = true;
|
||||
IFileInfo = new IFileInfo();
|
||||
|
||||
string path = Path.Combine(Runtime.ExecutableDir, "KclMaterialPresets");
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
CollisionPresetData.LoadPresets(Directory.GetFiles("KclMaterialPresets"));
|
||||
}
|
||||
|
||||
public bool UseOverlay
|
||||
|
@ -104,6 +98,12 @@ namespace FirstPlugin
|
|||
stream.Position = 0;
|
||||
KclFile = new KCLFile(stream);
|
||||
ReloadData();
|
||||
|
||||
string path = Path.Combine(Runtime.ExecutableDir, "KclMaterialPresets");
|
||||
if (!Directory.Exists(path))
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
CollisionPresetData.LoadPresets(Directory.GetFiles("KclMaterialPresets"));
|
||||
}
|
||||
|
||||
class MenuExt : IFileMenuExtension
|
||||
|
@ -207,11 +207,18 @@ namespace FirstPlugin
|
|||
|
||||
var thread = new Thread(() =>
|
||||
{
|
||||
//Load runtime values to gui handler
|
||||
MaterialWindowSettings.GamePreset = Runtime.CollisionSettings.KCLGamePreset;
|
||||
MaterialWindowSettings.Platform = Runtime.CollisionSettings.KCLGamePreset;
|
||||
MaterialWindowSettings.UsePresetEditor = Runtime.CollisionSettings.KCLUsePresetEditor;
|
||||
|
||||
var result = CollisionLoader.CreateCollisionFromObject(form, ofd.FileName);
|
||||
CollisionLoader.CloseConsole(form);
|
||||
|
||||
if (result.KclFie == null) return;
|
||||
|
||||
SaveMaterialWindowSettings();
|
||||
|
||||
form.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
string name = Path.GetFileNameWithoutExtension(ofd.FileName);
|
||||
|
@ -402,11 +409,18 @@ namespace FirstPlugin
|
|||
|
||||
var thread = new Thread(() =>
|
||||
{
|
||||
//Load runtime values to gui handler
|
||||
MaterialWindowSettings.GamePreset = Runtime.CollisionSettings.KCLGamePreset;
|
||||
MaterialWindowSettings.Platform = GetPlatform();
|
||||
MaterialWindowSettings.UsePresetEditor = Runtime.CollisionSettings.KCLUsePresetEditor;
|
||||
|
||||
var result = CollisionLoader.CreateCollisionFromObject(form, ofd.FileName);
|
||||
CollisionLoader.CloseConsole(form);
|
||||
|
||||
if (result.KclFie == null) return;
|
||||
|
||||
SaveMaterialWindowSettings();
|
||||
|
||||
form.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
KclFile = result.KclFie;
|
||||
|
@ -420,6 +434,23 @@ namespace FirstPlugin
|
|||
}
|
||||
}
|
||||
|
||||
private string GetPlatform()
|
||||
{
|
||||
switch (KclFile.Version)
|
||||
{
|
||||
case FileVersion.VersionDS: return "NDS";
|
||||
case FileVersion.VersionGC: return "GCN";
|
||||
case FileVersion.VersionWII: return "WII";
|
||||
case FileVersion.Version2:
|
||||
if (KclFile.ByteOrder == Syroot.BinaryData.ByteOrder.BigEndian)
|
||||
return "WII U";
|
||||
else
|
||||
return "SWITCH";
|
||||
default:
|
||||
return "SWITCH";
|
||||
}
|
||||
}
|
||||
|
||||
private void SwapEndianess(object sender, EventArgs args)
|
||||
{
|
||||
if (KclFile.ByteOrder == Syroot.BinaryData.ByteOrder.BigEndian)
|
||||
|
@ -471,19 +502,28 @@ namespace FirstPlugin
|
|||
return Renderer.models;
|
||||
}
|
||||
|
||||
private static void SaveMaterialWindowSettings()
|
||||
{
|
||||
//Apply runtime values for later use (and to save as config)
|
||||
Runtime.CollisionSettings.KCLGamePreset = MaterialWindowSettings.GamePreset;
|
||||
Runtime.CollisionSettings.KCLPlatform = MaterialWindowSettings.Platform;
|
||||
Runtime.CollisionSettings.KCLUsePresetEditor = MaterialWindowSettings.UsePresetEditor;
|
||||
Toolbox.Library.Config.Save();
|
||||
}
|
||||
|
||||
private void ReloadData()
|
||||
{
|
||||
//Split collision triangles by materials between all the models
|
||||
Dictionary<int, List<Triangle>> triangleList = new Dictionary<int, List<Triangle>>();
|
||||
|
||||
foreach (var model in KclFile.Models) {
|
||||
foreach (var prisim in model.Prisims)
|
||||
foreach (var prism in model.Prisms)
|
||||
{
|
||||
var triangle = model.GetTriangle(prisim);
|
||||
if (!triangleList.ContainsKey(prisim.CollisionFlags))
|
||||
triangleList.Add(prisim.CollisionFlags, new List<Triangle>());
|
||||
var triangle = model.GetTriangle(prism);
|
||||
if (!triangleList.ContainsKey(prism.CollisionFlags))
|
||||
triangleList.Add(prism.CollisionFlags, new List<Triangle>());
|
||||
|
||||
triangleList[prisim.CollisionFlags].Add(triangle);
|
||||
triangleList[prism.CollisionFlags].Add(triangle);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue