feat: hull collision mesh

This commit is contained in:
tresabhi committed 2025-02-25 15:36:34 -06:00
1 parent 63d27aec64
commit 57a2daa5e4
2 files changed
+13 -28

No files matched your search

+5 -22
View File
@@ -1,30 +1,10 @@
using System.Data; using System.Data;
using AssetRipper.TextureDecoder.Rgb.Channels;
using Blitzkit; using Blitzkit;
using BlitzKit.CLI.Models; 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;
using CUE4Parse.UE4.Assets.Exports.Engine; using CUE4Parse.UE4.Assets.Exports.Engine;
using CUE4Parse.UE4.Assets.Exports.Material;
using CUE4Parse.UE4.Assets.Exports.StaticMesh; using CUE4Parse.UE4.Assets.Exports.StaticMesh;
using CUE4Parse.UE4.Assets.Exports.Texture;
using CUE4Parse.UE4.Assets.Objects; 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 Google.Protobuf.Collections;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
@@ -52,8 +32,8 @@ namespace BlitzKit.CLI.Functions
{ {
foreach (var tankDir in nation.Directories) foreach (var tankDir in nation.Directories)
{ {
if (tankDir.Value.Name != "R90_IS_4") // if (tankDir.Value.Name != "R90_IS_4")
continue; // continue;
var tank = MangleTank(tankDir.Value); var tank = MangleTank(tankDir.Value);
@@ -73,6 +53,9 @@ namespace BlitzKit.CLI.Functions
var hullVisualData = PropertyUtil.Get<UObject>(hull, "VisualData"); var hullVisualData = PropertyUtil.Get<UObject>(hull, "VisualData");
var hullMeshSettings = PropertyUtil.Get<FStructFallback>(hullVisualData, "MeshSettings"); var hullMeshSettings = PropertyUtil.Get<FStructFallback>(hullVisualData, "MeshSettings");
var hullCollision = PropertyUtil.Get<UStaticMesh>(hullMeshSettings, "CollisionMesh"); var hullCollision = PropertyUtil.Get<UStaticMesh>(hullMeshSettings, "CollisionMesh");
MonoGltf hullCollisionGltf = new(hullCollision);
hullCollisionGltf.Write();
return new() { Id = "" }; return new() { Id = "" };
} }
+8 -6
View File
@@ -30,11 +30,13 @@ namespace BlitzKit.CLI.Models
public class MonoGltf public class MonoGltf
{ {
readonly SceneBuilder Scene;
public MonoGltf(UStaticMesh staticMesh) public MonoGltf(UStaticMesh staticMesh)
{ {
Scene = new(staticMesh.Name);
ExporterOptions options = new() { TextureFormat = ETextureFormat.Jpeg }; ExporterOptions options = new() { TextureFormat = ETextureFormat.Jpeg };
staticMesh.TryConvert(out var convertedMesh); staticMesh.TryConvert(out var convertedMesh);
SceneBuilder sceneBuilder = new(staticMesh.Name);
var lod = var lod =
convertedMesh.LODs.Find(lod => !lod.SkipLod) ?? throw new Exception("Failed to find lod0"); 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)); primitive.AddTriangle((v1, c1), (v2, c2), (v3, c3));
} }
sceneBuilder.AddRigidMesh(meshBuilder, Matrix4x4.Identity); Scene.AddRigidMesh(meshBuilder, Matrix4x4.Identity);
} }
}
var gltf2 = sceneBuilder.ToGltf2(); public ArraySegment<byte> Write()
var glbBytes = gltf2.WriteGLB(); {
return Scene.ToGltf2().WriteGLB();
File.WriteAllBytes("../../temp/test.glb", glbBytes);
} }
private static ( private static (