Skip to content

Commit 9b71d21

Browse files
[Baker] Fixes to GLTF;
[Editor] Fixed executable not being copied properly; [Serialization] Add back EXR to the list of texture formats;
1 parent 9e42a8c commit 9b71d21

File tree

4 files changed

+120
-24
lines changed

4 files changed

+120
-24
lines changed

Engine/Core/Serialization/Asset/AssetSerialization.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ internal static partial class AssetSerialization
6060
[
6161
"bmp",
6262
"dds",
63+
"exr",
6364
"gif",
6465
"jpg",
6566
"jpeg",
@@ -68,7 +69,7 @@ internal static partial class AssetSerialization
6869
"png",
6970
"psd",
7071
"pvr",
71-
"tga"
72+
"tga",
7273
];
7374

7475
/// <summary>

Engine/EditorApp/Staple.Editor.App.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
4646
<!-- For some reason visual studio on windows builds solutions with self contained, so... ignore that. -->
4747
<PostBuildEvent>
48-
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/StapleEditorApp*" "$(SolutionDir)../Staging"
48+
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/Staple.Editor.App*" "$(SolutionDir)../Staging"
4949
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/*.dll" "$(SolutionDir)../Staging"
5050
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/*.[DLL]" "$(SolutionDir)../Staging"
5151
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)../Dependencies/build/native/bin/$(Configuration)/*.[DLL]" "$(SolutionDir)../Staging"
@@ -59,7 +59,7 @@
5959

6060
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">
6161
<PostBuildEvent Condition="'$(SelfContained)'=='false'">
62-
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/StapleEditorApp*" "$(SolutionDir)../Staging"
62+
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/Staple.Editor.App*" "$(SolutionDir)../Staging"
6363
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/*.dll" "$(SolutionDir)../Staging"
6464
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/*.[DLL]" "$(SolutionDir)../Staging"
6565
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)../Dependencies/build/native/bin/$(Configuration)/*.[DLL]" "$(SolutionDir)../Staging"
@@ -73,7 +73,7 @@
7373

7474
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('macOS'))">
7575
<PostBuildEvent Condition="'$(SelfContained)'=='false'">
76-
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/StapleEditorApp*" "$(SolutionDir)../Staging"
76+
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/Staple.Editor.App*" "$(SolutionDir)../Staging"
7777
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/*.dll" "$(SolutionDir)../Staging"
7878
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)EditorApp/bin/$(Configuration)/net9.0/*.[DLL]" "$(SolutionDir)../Staging"
7979
$(SolutionDir)..\Dependencies\build\dotnet\bin\Release\net9.0\CrossCopy "$(SolutionDir)../Dependencies/build/native/bin/$(Configuration)/*.[DLL]" "$(SolutionDir)../Staging"

Tools/Baker/Baker+Texture.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Diagnostics;
99
using System.IO;
1010
using System.Linq;
11+
using System.Text;
1112

1213
namespace Baker;
1314

@@ -539,13 +540,15 @@ bool ValidRegion(int x, int y)
539540
}
540541
};
541542

542-
Utilities.ExecuteAndCollectProcess(process, null);
543+
var log = new StringBuilder();
544+
545+
Utilities.ExecuteAndCollectProcess(process, (msg) => log.AppendLine(msg));
543546

544547
if (process.ExitCode != 0)
545548
{
546549
Console.WriteLine($"\t\t\tArguments: {process.StartInfo.Arguments}");
547550

548-
Console.WriteLine($"\t\tError:\n");
551+
Console.WriteLine($"\t\tError:\n{log}");
549552

550553
try
551554
{

Tools/Baker/Meshes/Baker+SharpGLTF.cs

Lines changed: 110 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ void RegisterNode(SharpGLTF.Schema2.Node node, MeshAssetNode parent)
579579
var m = new MeshAssetMeshInfo
580580
{
581581
name = $"{mesh.Name} {primitive.LogicalIndex}",
582-
materialGuid = primitive.Material.LogicalIndex >= 0 && primitive.Material.LogicalIndex < materialMapping.Count ?
582+
materialGuid = (primitive.Material?.LogicalIndex ?? -1) >= 0 && primitive.Material.LogicalIndex < materialMapping.Count ?
583583
materialMapping[primitive.Material.LogicalIndex] : "",
584584
type = node.Skin != null &&
585585
primitive.VertexAccessors.ContainsKey("JOINTS_0") &&
@@ -629,30 +629,122 @@ void RegisterNode(SharpGLTF.Schema2.Node node, MeshAssetNode parent)
629629
continue;
630630
}
631631

632-
var vert = primitive.GetVertexAccessor("POSITION").AsVector3Array();
633-
var tan = primitive.GetVertexAccessor("TANGENT")?.AsVector4Array();
634-
var nor = primitive.GetVertexAccessor("NORMAL")?.AsVector3Array();
635-
var bi = primitive.GetVertexAccessor("JOINTS_0")?.AsVector4Array();
636-
var bw = primitive.GetVertexAccessor("WEIGHTS_0")?.AsVector4Array();
632+
List<Vector2> SafeGetVertexAccessorVector2(string name, bool debug)
633+
{
634+
var accessor = primitive.GetVertexAccessor(name);
635+
636+
if((accessor?.Count ?? 0) == 0)
637+
{
638+
return null;
639+
}
640+
641+
if(accessor.Dimensions == SharpGLTF.Schema2.DimensionType.VEC2)
642+
{
643+
return [.. accessor.AsVector2Array()];
644+
}
645+
646+
if (debug)
647+
{
648+
Log.Debug($"Failed to get Vector2 vertex accessor {name}: Dimensions were {accessor.Dimensions}");
649+
}
650+
651+
return null;
652+
}
653+
654+
List<Vector3> SafeGetVertexAccessorVector3(string name, bool debug)
655+
{
656+
var accessor = primitive.GetVertexAccessor(name);
657+
658+
if ((accessor?.Count ?? 0) == 0)
659+
{
660+
return null;
661+
}
662+
663+
if (accessor.Dimensions == SharpGLTF.Schema2.DimensionType.VEC3)
664+
{
665+
return [.. accessor.AsVector3Array()];
666+
}
667+
668+
if(debug)
669+
{
670+
Log.Debug($"Failed to get Vector3 vertex accessor {name}: Dimensions were {accessor.Dimensions}");
671+
}
672+
673+
return null;
674+
}
675+
676+
List<Vector4> SafeGetVertexAccessorVector4(string name, bool debug)
677+
{
678+
var accessor = primitive.GetVertexAccessor(name);
679+
680+
if ((accessor?.Count ?? 0) == 0)
681+
{
682+
return null;
683+
}
684+
685+
if (accessor.Dimensions == SharpGLTF.Schema2.DimensionType.VEC4)
686+
{
687+
return [.. accessor.AsVector4Array()];
688+
}
689+
690+
if (debug)
691+
{
692+
Log.Debug($"Failed to get Vector4 vertex accessor {name}: Dimensions were {accessor.Dimensions}");
693+
}
694+
695+
return null;
696+
}
697+
698+
List<Vector4> SafeGetVertexColor(string name)
699+
{
700+
var l = SafeGetVertexAccessorVector4(name, false);
701+
702+
if(l != null)
703+
{
704+
return l;
705+
}
706+
707+
var l2 = SafeGetVertexAccessorVector3(name, false);
708+
709+
if(l2 != null)
710+
{
711+
var newList = new Vector4[l2.Count];
712+
713+
for(var i = 0; i < l2.Count; i++)
714+
{
715+
newList[i] = new(l2[i], 1);
716+
}
717+
718+
return [.. newList];
719+
}
720+
721+
return null;
722+
}
723+
724+
var vert = SafeGetVertexAccessorVector3("POSITION", true);
725+
var tan = SafeGetVertexAccessorVector4("TANGENT", true);
726+
var nor = SafeGetVertexAccessorVector3("NORMAL", true);
727+
var bi = SafeGetVertexAccessorVector4("JOINTS_0", true);
728+
var bw = SafeGetVertexAccessorVector4("WEIGHTS_0", true);
637729

638730
var texcoords = new IList<Vector2>[]
639731
{
640-
primitive.GetVertexAccessor("TEXCOORD_0")?.AsVector2Array(),
641-
primitive.GetVertexAccessor("TEXCOORD_1")?.AsVector2Array(),
642-
primitive.GetVertexAccessor("TEXCOORD_2")?.AsVector2Array(),
643-
primitive.GetVertexAccessor("TEXCOORD_3")?.AsVector2Array(),
644-
primitive.GetVertexAccessor("TEXCOORD_4")?.AsVector2Array(),
645-
primitive.GetVertexAccessor("TEXCOORD_5")?.AsVector2Array(),
646-
primitive.GetVertexAccessor("TEXCOORD_6")?.AsVector2Array(),
647-
primitive.GetVertexAccessor("TEXCOORD_7")?.AsVector2Array(),
732+
SafeGetVertexAccessorVector2("TEXCOORD_0", true),
733+
SafeGetVertexAccessorVector2("TEXCOORD_1", true),
734+
SafeGetVertexAccessorVector2("TEXCOORD_2", true),
735+
SafeGetVertexAccessorVector2("TEXCOORD_3", true),
736+
SafeGetVertexAccessorVector2("TEXCOORD_4", true),
737+
SafeGetVertexAccessorVector2("TEXCOORD_5", true),
738+
SafeGetVertexAccessorVector2("TEXCOORD_6", true),
739+
SafeGetVertexAccessorVector2("TEXCOORD_7", true),
648740
};
649741

650742
var colors = new IList<Vector4>[]
651743
{
652-
primitive.GetVertexAccessor("COLOR_0")?.AsVector4Array(),
653-
primitive.GetVertexAccessor("COLOR_1")?.AsVector4Array(),
654-
primitive.GetVertexAccessor("COLOR_2")?.AsVector4Array(),
655-
primitive.GetVertexAccessor("COLOR_3")?.AsVector4Array(),
744+
SafeGetVertexColor("COLOR_0"),
745+
SafeGetVertexColor("COLOR_1"),
746+
SafeGetVertexColor("COLOR_2"),
747+
SafeGetVertexColor("COLOR_3"),
656748
};
657749

658750
var vertexCount = vert.Count;

0 commit comments

Comments
 (0)