diff --git a/Bin/.gitignore b/Bevels/.gitignore
similarity index 100%
rename from Bin/.gitignore
rename to Bevels/.gitignore
diff --git a/Bin/BevelConverter/App.config b/Bevels/App.config
similarity index 100%
rename from Bin/BevelConverter/App.config
rename to Bevels/App.config
diff --git a/Bin/BevelConverter/BevelConverter.csproj b/Bevels/BevelGenerator.csproj
similarity index 94%
rename from Bin/BevelConverter/BevelConverter.csproj
rename to Bevels/BevelGenerator.csproj
index 82dd769..9ba9aa6 100644
--- a/Bin/BevelConverter/BevelConverter.csproj
+++ b/Bevels/BevelGenerator.csproj
@@ -7,8 +7,8 @@
{957A7717-A3CB-41B0-A17C-0E638017E915}
Exe
Properties
- BevelConverter
- BevelConverter
+ Bevels
+ Bevels
v4.5.2
512
true
@@ -33,9 +33,6 @@
4
-
- Packages\LZ4.dll
-
False
Packages\RobloxFileFormat.dll
diff --git a/Bin/BevelConverter/BevelConverter.sln b/Bevels/BevelGenerator.sln
similarity index 86%
rename from Bin/BevelConverter/BevelConverter.sln
rename to Bevels/BevelGenerator.sln
index 51f0199..870ffa1 100644
--- a/Bin/BevelConverter/BevelConverter.sln
+++ b/Bevels/BevelGenerator.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BevelConverter", "BevelConverter.csproj", "{957A7717-A3CB-41B0-A17C-0E638017E915}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BevelGenerator", "BevelGenerator.csproj", "{957A7717-A3CB-41B0-A17C-0E638017E915}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/Bin/BevelConverter/Extensions/Formatting.cs b/Bevels/Extensions/Formatting.cs
similarity index 100%
rename from Bin/BevelConverter/Extensions/Formatting.cs
rename to Bevels/Extensions/Formatting.cs
diff --git a/Bin/BevelConverter/Extensions/RegistryHelper.cs b/Bevels/Extensions/RegistryHelper.cs
similarity index 100%
rename from Bin/BevelConverter/Extensions/RegistryHelper.cs
rename to Bevels/Extensions/RegistryHelper.cs
diff --git a/Bin/BevelConverter/Geometry/Mesh.cs b/Bevels/Geometry/Mesh.cs
similarity index 91%
rename from Bin/BevelConverter/Geometry/Mesh.cs
rename to Bevels/Geometry/Mesh.cs
index c44b953..c4358b7 100644
--- a/Bin/BevelConverter/Geometry/Mesh.cs
+++ b/Bevels/Geometry/Mesh.cs
@@ -8,7 +8,7 @@ using System.Text.RegularExpressions;
using RobloxFiles.DataTypes;
-namespace BevelConverter
+namespace BevelGenerator
{
public class Mesh
{
@@ -32,13 +32,15 @@ namespace BevelConverter
return new Vector3(x, y, z);
}
- private static void CheckDefaultLODs(Mesh mesh)
+ private static Mesh CheckLOD(Mesh mesh)
{
if (mesh.NumLODs == 0)
{
mesh.NumLODs = 2;
mesh.LODs = new List { 0, mesh.NumFaces };
}
+
+ return mesh;
}
private static void LoadGeometry_Ascii(StringReader reader, Mesh mesh)
@@ -99,7 +101,7 @@ namespace BevelConverter
}
}
- CheckDefaultLODs(mesh);
+ CheckLOD(mesh);
}
private static void LoadGeometry_Binary(BinaryReader reader, Mesh mesh)
@@ -125,7 +127,7 @@ namespace BevelConverter
for (int i = 0; i < mesh.NumVerts; i++)
{
- Vertex vert = new Vertex()
+ var vert = new Vertex()
{
Position = ReadVector3(reader),
Normal = ReadVector3(reader),
@@ -134,12 +136,9 @@ namespace BevelConverter
if (vertSize > 36)
{
- byte r = reader.ReadByte(),
- g = reader.ReadByte(),
- b = reader.ReadByte(),
- a = reader.ReadByte();
+ int rgba = reader.ReadInt32();
+ int argb = (rgba << 24 | rgba >> 8);
- int argb = (a << 24 | r << 16 | g << 8 | b);
vert.Color = Color.FromArgb(argb);
vert.HasColor = true;
}
@@ -165,13 +164,11 @@ namespace BevelConverter
mesh.LODs.Add(lod);
}
}
- else
- {
- CheckDefaultLODs(mesh);
- }
+
+ CheckLOD(mesh);
}
- public void AddLod(Mesh lodMesh)
+ public void AddLOD(Mesh lodMesh)
{
Verts.AddRange(lodMesh.Verts);
@@ -232,11 +229,11 @@ namespace BevelConverter
if (vertex.HasColor)
{
- Color color = vertex.Color;
- writer.Write(color.R);
- writer.Write(color.G);
- writer.Write(color.B);
- writer.Write(color.A);
+ var color = vertex.Color;
+ int argb = color.ToArgb();
+
+ int rgba = (argb << 8 | argb >> 24);
+ writer.Write(rgba);
}
else
{
@@ -293,13 +290,14 @@ namespace BevelConverter
if (cmd == "v" || cmd == "vn")
{
- float x = float.Parse(buffer[1]),
- y = float.Parse(buffer[2]),
- z = float.Parse(buffer[3]);
-
- Vector3 value = new Vector3(x, y, z);
+ float[] input = buffer
+ .Skip(1)
+ .Select(float.Parse)
+ .ToArray();
+ var value = new Vector3(input);
var target = (cmd == "v" ? posTable : normTable);
+
target.Add(value);
}
else if (cmd == "f")
@@ -340,8 +338,7 @@ namespace BevelConverter
}
}
- CheckDefaultLODs(mesh);
- return mesh;
+ return CheckLOD(mesh);
}
public static Mesh FromBuffer(byte[] data)
diff --git a/Bin/BevelConverter/Geometry/Vertex.cs b/Bevels/Geometry/Vertex.cs
similarity index 91%
rename from Bin/BevelConverter/Geometry/Vertex.cs
rename to Bevels/Geometry/Vertex.cs
index cea73ca..643c7c3 100644
--- a/Bin/BevelConverter/Geometry/Vertex.cs
+++ b/Bevels/Geometry/Vertex.cs
@@ -1,7 +1,7 @@
using System.Drawing;
using RobloxFiles.DataTypes;
-namespace BevelConverter
+namespace BevelGenerator
{
public class Vertex
{
diff --git a/Bin/BevelConverter/Program.cs b/Bevels/Program.cs
similarity index 89%
rename from Bin/BevelConverter/Program.cs
rename to Bevels/Program.cs
index 0d4b80f..267740b 100644
--- a/Bin/BevelConverter/Program.cs
+++ b/Bevels/Program.cs
@@ -7,12 +7,12 @@ using System.Text;
using System.Windows.Forms;
using RobloxFiles;
+using RobloxFiles.Enums;
using RobloxFiles.DataTypes;
-using RobloxFiles.XmlFormat;
using Microsoft.Win32;
-namespace BevelConverter
+namespace BevelGenerator
{
class Program
{
@@ -186,37 +186,45 @@ namespace BevelConverter
static void ProcessFileArg(string filePath)
{
RobloxFile file = RobloxFile.Open(filePath);
- Instance exportBin = file.FindFirstChild("ExportBin");
+ var exportBin = file.FindFirstChild("ExportBin");
if (exportBin != null)
exportBin.Name = "BevelCache";
else
return;
- Instance[] unions = exportBin.GetChildren()
- .Where((child) => child.ClassName == "UnionOperation")
- .OrderBy(child => child.Name)
- .ToArray();
-
+ var unions = exportBin.GetChildrenOfType();
+
for (int i = 0; i < unions.Length; i++)
{
- Instance union = unions[i];
+ UnionOperation union = unions[i];
string name = union.Name;
Console.WriteLine("Working on {0}... ({1}/{2})", union.Name, i, unions.Length);
- union.ClassName = "MeshPart";
-
- union.RemoveProperty("AssetId");
- union.RemoveProperty("MeshData");
- union.RemoveProperty("ChildData");
- union.RemoveProperty("UsePartColor");
-
string meshId = ProcessInput(name);
if (meshId == null)
continue;
- union.SetProperty("MeshId", meshId);
+ MeshPart bevelMesh = new MeshPart()
+ {
+ Name = name,
+ MeshId = meshId,
+
+ Size = union.Size,
+ InitialSize = union.InitialSize,
+ RenderFidelity = RenderFidelity.Automatic,
+
+ PhysicsData = union.PhysicsData,
+ CollisionFidelity = CollisionFidelity.Box,
+ PhysicalConfigData = union.PhysicalConfigData,
+ };
+
+ foreach (string tag in union.Tags)
+ bevelMesh.Tags.Add(tag);
+
+ bevelMesh.Parent = exportBin;
+ union.Parent = null;
}
using (FileStream export = File.OpenWrite(filePath))
diff --git a/Bin/BevelConverter/Properties/AssemblyInfo.cs b/Bevels/Properties/AssemblyInfo.cs
similarity index 93%
rename from Bin/BevelConverter/Properties/AssemblyInfo.cs
rename to Bevels/Properties/AssemblyInfo.cs
index 4171a78..6dabb91 100644
--- a/Bin/BevelConverter/Properties/AssemblyInfo.cs
+++ b/Bevels/Properties/AssemblyInfo.cs
@@ -5,11 +5,11 @@ 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("BevelConverter")]
+[assembly: AssemblyTitle("BevelGenerator")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("BevelConverter")]
+[assembly: AssemblyProduct("BevelGenerator")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
diff --git a/Bin/BevelConverter/Properties/Resources.Designer.cs b/Bevels/Properties/Resources.Designer.cs
similarity index 95%
rename from Bin/BevelConverter/Properties/Resources.Designer.cs
rename to Bevels/Properties/Resources.Designer.cs
index 0f22542..b324239 100644
--- a/Bin/BevelConverter/Properties/Resources.Designer.cs
+++ b/Bevels/Properties/Resources.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace BevelConverter.Properties {
+namespace BevelGenerator.Properties {
using System;
@@ -39,7 +39,7 @@ namespace BevelConverter.Properties {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BevelConverter.Properties.Resources", typeof(Resources).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bevels.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
diff --git a/Bin/BevelConverter/Properties/Resources.resx b/Bevels/Properties/Resources.resx
similarity index 100%
rename from Bin/BevelConverter/Properties/Resources.resx
rename to Bevels/Properties/Resources.resx
diff --git a/Bin/BevelConverter/Resources/BevelPart.rbxm b/Bevels/Resources/BevelPart.rbxm
similarity index 100%
rename from Bin/BevelConverter/Resources/BevelPart.rbxm
rename to Bevels/Resources/BevelPart.rbxm
diff --git a/Bin/BevelConverter/Resources/Bevels.mesh b/Bevels/Resources/Bevels.mesh
similarity index 100%
rename from Bin/BevelConverter/Resources/Bevels.mesh
rename to Bevels/Resources/Bevels.mesh