From 57a2daa5e4370ae2e594d579ba74dc16b38897e2 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:36:34 -0600 Subject: [PATCH] feat: hull collision mesh --- src/BlitzKit.CLI/Functions/Mangler.cs | 27 +++++---------------------- src/BlitzKit.CLI/Models/MonoGltf.cs | 14 ++++++++------ 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/BlitzKit.CLI/Functions/Mangler.cs b/src/BlitzKit.CLI/Functions/Mangler.cs index 67419526a..801dda85a 100644 --- a/src/BlitzKit.CLI/Functions/Mangler.cs +++ b/src/BlitzKit.CLI/Functions/Mangler.cs @@ -1,30 +1,10 @@ using System.Data; -using AssetRipper.TextureDecoder.Rgb.Channels; using Blitzkit; using BlitzKit.CLI.Models; -using BlitzKit.CLI.Utils; -using CommunityToolkit.HighPerformance; -using CommunityToolkit.HighPerformance.Helpers; -using CUE4Parse; -using CUE4Parse_Conversion; -using CUE4Parse_Conversion.Animations; -using CUE4Parse_Conversion.Meshes; -using CUE4Parse_Conversion.Meshes.glTF; -using CUE4Parse_Conversion.Textures; -using CUE4Parse_Conversion.UEFormat.Enums; -using CUE4Parse.FileProvider.Objects; using CUE4Parse.UE4.Assets.Exports; using CUE4Parse.UE4.Assets.Exports.Engine; -using CUE4Parse.UE4.Assets.Exports.Material; using CUE4Parse.UE4.Assets.Exports.StaticMesh; -using CUE4Parse.UE4.Assets.Exports.Texture; using CUE4Parse.UE4.Assets.Objects; -using CUE4Parse.UE4.Assets.Objects.Properties; -using CUE4Parse.UE4.Assets.Utils; -using CUE4Parse.UE4.Objects.UObject; -using CUE4Parse.UE4.Readers; -using CUE4Parse.UE4.Writers; -using CUE4Parse.Utils; using Google.Protobuf.Collections; using Newtonsoft.Json.Linq; @@ -52,8 +32,8 @@ namespace BlitzKit.CLI.Functions { foreach (var tankDir in nation.Directories) { - if (tankDir.Value.Name != "R90_IS_4") - continue; + // if (tankDir.Value.Name != "R90_IS_4") + // continue; var tank = MangleTank(tankDir.Value); @@ -73,6 +53,9 @@ namespace BlitzKit.CLI.Functions var hullVisualData = PropertyUtil.Get(hull, "VisualData"); var hullMeshSettings = PropertyUtil.Get(hullVisualData, "MeshSettings"); var hullCollision = PropertyUtil.Get(hullMeshSettings, "CollisionMesh"); + MonoGltf hullCollisionGltf = new(hullCollision); + + hullCollisionGltf.Write(); return new() { Id = "" }; } diff --git a/src/BlitzKit.CLI/Models/MonoGltf.cs b/src/BlitzKit.CLI/Models/MonoGltf.cs index b008a01f2..4046ba117 100644 --- a/src/BlitzKit.CLI/Models/MonoGltf.cs +++ b/src/BlitzKit.CLI/Models/MonoGltf.cs @@ -30,11 +30,13 @@ namespace BlitzKit.CLI.Models public class MonoGltf { + readonly SceneBuilder Scene; + public MonoGltf(UStaticMesh staticMesh) { + Scene = new(staticMesh.Name); ExporterOptions options = new() { TextureFormat = ETextureFormat.Jpeg }; staticMesh.TryConvert(out var convertedMesh); - SceneBuilder sceneBuilder = new(staticMesh.Name); var lod = convertedMesh.LODs.Find(lod => !lod.SkipLod) ?? throw new Exception("Failed to find lod0"); @@ -155,13 +157,13 @@ namespace BlitzKit.CLI.Models primitive.AddTriangle((v1, c1), (v2, c2), (v3, c3)); } - sceneBuilder.AddRigidMesh(meshBuilder, Matrix4x4.Identity); + Scene.AddRigidMesh(meshBuilder, Matrix4x4.Identity); } + } - var gltf2 = sceneBuilder.ToGltf2(); - var glbBytes = gltf2.WriteGLB(); - - File.WriteAllBytes("../../temp/test.glb", glbBytes); + public ArraySegment Write() + { + return Scene.ToGltf2().WriteGLB(); } private static (