feat: hull mesh

This commit is contained in:
tresabhi committed 2025-02-02 00:25:47 -06:00
1 parent 168a955380
commit 8b268cb647
7 files changed
+312 -73

No files matched your search

-61
View File
@@ -1,61 +0,0 @@
using System.Text.Json.Serialization;
namespace BlitzKit.CLI.Models
{
public partial class DlcManifest
{
[JsonPropertyName("contentBuildId")]
public string ContentBuildId { get; set; }
[JsonPropertyName("pakFiles")]
public List<PakFile> PakFiles { get; set; }
[JsonPropertyName("chunkTags")]
public Dictionary<string, ChunkTag> ChunkTags { get; set; }
[JsonPropertyName("chunkDependencies")]
public List<ChunkDependency> ChunkDependencies { get; set; }
}
public partial class ChunkDependency
{
[JsonPropertyName("chunkId")]
public long ChunkId { get; set; }
[JsonPropertyName("parentChunkId")]
public long ParentChunkId { get; set; }
}
public partial class ChunkTag
{
[JsonPropertyName("gameplayTags")]
public List<GameplayTag> GameplayTags { get; set; }
}
public partial class GameplayTag
{
[JsonPropertyName("tagName")]
public string TagName { get; set; }
}
public partial class PakFile
{
[JsonPropertyName("fileName")]
public string FileName { get; set; }
[JsonPropertyName("fileSize")]
public long FileSize { get; set; }
[JsonPropertyName("fileVersion")]
public string FileVersion { get; set; }
[JsonPropertyName("chunkId")]
public long ChunkId { get; set; }
[JsonPropertyName("relativeUrl")]
public string RelativeUrl { get; set; }
[JsonPropertyName("availabilityMask")]
public long AvailabilityMask { get; set; }
}
}
+15
View File
@@ -0,0 +1,15 @@
namespace BlitzKit.CLI.Models
{
public class GLB
{
public GLB(MappedUObject obj)
{
var staticMaterials = obj.GetArray("StaticMaterials");
foreach (var staticMaterial in staticMaterials)
{
Console.WriteLine(staticMaterial.GetAny("MaterialInterface"));
}
}
}
}
@@ -0,0 +1,21 @@
using CUE4Parse.UE4.Assets.Exports.Engine;
using CUE4Parse.UE4.Assets.Objects;
namespace BlitzKit.CLI.Models
{
public class MappedUDataTable : MappedUObject
{
readonly Dictionary<string, FStructFallback> StructFallbacks = [];
public MappedUDataTable(UDataTable table)
: base(table.Properties)
{
foreach (var row in table.RowMap)
{
StructFallbacks.Add(row.Key.Text, row.Value);
}
}
public MappedUObject GetRow(string name) => new(StructFallbacks[name].Properties);
}
}
+49 -10
View File
@@ -1,6 +1,10 @@
using System.Collections;
using System.Collections.Frozen;
using System.Dynamic;
using CUE4Parse.FileProvider;
using CUE4Parse.FileProvider.Objects;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports.Engine;
using CUE4Parse.UE4.Assets.Objects;
using CUE4Parse.UE4.Assets.Objects.Properties;
using CUE4Parse.UE4.Objects.UObject;
@@ -18,6 +22,7 @@ namespace BlitzKit.CLI.Models
readonly Dictionary<string, ArrayProperty> Arrays = [];
readonly Dictionary<string, TextProperty> Texts = [];
readonly Dictionary<string, IntProperty> Ints = [];
readonly Dictionary<string, MapProperty> Maps = [];
public MappedUObject(List<FPropertyTag> properties)
: base(properties)
@@ -80,6 +85,12 @@ namespace BlitzKit.CLI.Models
break;
}
case MapProperty map:
{
Maps.Add(property.Name.Text, map);
break;
}
default:
{
throw new Exception($"Unhandled property type: {property}");
@@ -88,19 +99,47 @@ namespace BlitzKit.CLI.Models
}
}
public string GetName(string name)
{
return Names[name].Value.Text;
}
public FPropertyTag GetAny(string name) =>
Properties.First(property => property.Name.Text == name);
public bool GetBool(string name)
{
return Booleans[name].Value;
}
public string GetName(string name) => Names[name].Value.Text;
public bool? TryGetBool(string name)
public string? TryGetName(string name) =>
Names.TryGetValue(name, out var entry) ? entry.Value.Text : null;
public bool GetBool(string name) => Booleans[name].Value;
public bool? TryGetBool(string name) =>
Booleans.TryGetValue(name, out var entry) ? entry.Value : null;
public T GetSoftObject<T>(string name)
where T : UObject => SoftObjects[name].Value.Load<T>();
public MappedUObject GetMappedSoftObject(string name) =>
new(GetMappedSoftObject(name).Properties);
public MappedUObject? TryGetSoftObject(string name) =>
SoftObjects.TryGetValue(name, out var entry)
? new MappedUObject(entry.Value.Load().Properties)
: null;
public MappedUObject GetObject(string name) => new(Objects[name].Value!.Load()!.Properties);
public MappedUDataTable GetObjectDataTable(string name) =>
new(Objects[name].Value!.Load<UDataTable>()!);
public MappedUObject GetStruct(string name) =>
new(Structs[name].GetValue<FStructFallback>()!.Properties);
public MappedUObject[] GetArray(string name)
{
return Booleans.TryGetValue(name, out var entry) ? entry.Value : null;
return
[
.. Arrays[name]
.Value!.Properties.Select(property => new MappedUObject(
property.GetValue<FStructFallback>()!.Properties
)),
];
}
}
}