diff --git a/Src/GBX.NET/Engines/Function/CFuncLight.chunkl b/Src/GBX.NET/Engines/Function/CFuncLight.chunkl index 477907fb4..890e9a6eb 100644 --- a/Src/GBX.NET/Engines/Function/CFuncLight.chunkl +++ b/Src/GBX.NET/Engines/Function/CFuncLight.chunkl @@ -3,7 +3,7 @@ CFuncLight 0x05018000 - abstract 0x000 - int FctType + int FctType float FlickPeriod int FlickCount diff --git a/Src/GBX.NET/Engines/Plug/CPlugVehicleMaterialGroup.chunkl b/Src/GBX.NET/Engines/Plug/CPlugVehicleMaterialGroup.chunkl new file mode 100644 index 000000000..120f31869 --- /dev/null +++ b/Src/GBX.NET/Engines/Plug/CPlugVehicleMaterialGroup.chunkl @@ -0,0 +1,4 @@ +CPlugVehicleMaterialGroup 0x090E9000 + +0x000 + int[] \ No newline at end of file diff --git a/Src/GBX.NET/Engines/Plug/CPlugVehicleVisEmitterModel.chunkl b/Src/GBX.NET/Engines/Plug/CPlugVehicleVisEmitterModel.chunkl new file mode 100644 index 000000000..1e8ea673f --- /dev/null +++ b/Src/GBX.NET/Engines/Plug/CPlugVehicleVisEmitterModel.chunkl @@ -0,0 +1,42 @@ +CPlugVehicleVisEmitterModel 0x090E6000 + +0x002 + bool + +0x003 + float + float + float + float + float + float + +0x004 + int + CPlugParticleEmitterModel (external) + CPlugParticleEmitterModel (external) + CPlugParticleEmitterModel (external) + int + int + int + bool + bool + bool + iso4 + float + float + float + float + float + float + float + float + float + float + float + float + float + float + +0x005 + bool \ No newline at end of file diff --git a/Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.chunkl b/Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.chunkl new file mode 100644 index 000000000..24a00219f --- /dev/null +++ b/Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.chunkl @@ -0,0 +1,54 @@ +CPlugVehicleVisModelShared 0x090E8000 + +0x005 + SimulationWheel[] SimulationWheels + +0x006 + +0x009 + +0x00A + +0x00F + +0x010 + +0x012 + CPlugVehicleMaterialGroup[]_deprec VehicleMaterialGroups + +0x013 + CFuncKeysReal + CFuncKeysReal + CFuncKeysReal + +0x014 + CPlugVehicleVisEmitterModel[]_deprec VehicleEmitters + +archive SimulationWheel + bool + bool + id Name + +archive VisualArm + VisualId + VisualId + VisualId + bool + bool + int + +archive VisualLight + VisualId + bool + +archive VisualWheel + VisualId + VisualId + VisualId + VisualId + int + bool + +archive VisualId + id + bool \ No newline at end of file diff --git a/Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.cs b/Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.cs new file mode 100644 index 000000000..43360ad55 --- /dev/null +++ b/Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.cs @@ -0,0 +1,132 @@ + +namespace GBX.NET.Engines.Plug; + +public partial class CPlugVehicleVisModelShared +{ + public VisualVehicle[] VisualVehicles { get; set; } = []; + + public partial class Chunk090E8006 + { + public override void Read(CPlugVehicleVisModelShared n, GbxReader r) + { + n.VisualVehicles = new VisualVehicle[r.ReadInt32()]; + } + + public override void Write(CPlugVehicleVisModelShared n, GbxWriter w) + { + w.Write(n.VisualVehicles.Length); + } + } + + public partial class Chunk090E8009 + { + public override void Read(CPlugVehicleVisModelShared n, GbxReader r) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + n.VisualVehicles[i] ??= new VisualVehicle(); + n.VisualVehicles[i].VisualArms = r.ReadArrayReadable(); + } + } + + public override void Write(CPlugVehicleVisModelShared n, GbxWriter w) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + w.WriteArrayWritable(n.VisualVehicles[i].VisualArms); + } + } + } + + public partial class Chunk090E800A + { + public override void Read(CPlugVehicleVisModelShared n, GbxReader r) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + n.VisualVehicles[i] ??= new VisualVehicle(); + n.VisualVehicles[i].VisualLights = r.ReadArrayReadable(); + } + } + + public override void Write(CPlugVehicleVisModelShared n, GbxWriter w) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + w.WriteArrayWritable(n.VisualVehicles[i].VisualLights); + } + } + } + + public partial class Chunk090E800F + { + public override void Read(CPlugVehicleVisModelShared n, GbxReader r) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + n.VisualVehicles[i] ??= new VisualVehicle(); + n.VisualVehicles[i].VisualWheels = r.ReadArrayReadable(); + } + } + + public override void Write(CPlugVehicleVisModelShared n, GbxWriter w) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + w.WriteArrayWritable(n.VisualVehicles[i].VisualWheels); + } + } + } + + public partial class Chunk090E8010 + { + public override void Read(CPlugVehicleVisModelShared n, GbxReader r) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + n.VisualVehicles[i] ??= new VisualVehicle(); + n.VisualVehicles[i].U01 = r.ReadReadable(); + n.VisualVehicles[i].U02 = r.ReadReadable(); + n.VisualVehicles[i].U03 = r.ReadReadable(); + n.VisualVehicles[i].U04 = r.ReadReadable(); + n.VisualVehicles[i].U05 = r.ReadInt32(); + } + } + + public override void Write(CPlugVehicleVisModelShared n, GbxWriter w) + { + for (int i = 0; i < n.VisualVehicles.Length; i++) + { + w.WriteWritable(n.VisualVehicles[i].U01); + w.WriteWritable(n.VisualVehicles[i].U02); + w.WriteWritable(n.VisualVehicles[i].U03); + w.WriteWritable(n.VisualVehicles[i].U04); + w.Write(n.VisualVehicles[i].U05); + } + } + } + + [ArchiveGenerationOptions(StructureKind = StructureKind.SeparateReadAndWrite)] + public partial class VisualId; + + [ArchiveGenerationOptions(StructureKind = StructureKind.SeparateReadAndWrite)] + public partial class VisualArm; + + [ArchiveGenerationOptions(StructureKind = StructureKind.SeparateReadAndWrite)] + public partial class VisualLight; + + [ArchiveGenerationOptions(StructureKind = StructureKind.SeparateReadAndWrite)] + public partial class VisualWheel; + + public sealed class VisualVehicle + { + public VisualArm[] VisualArms { get; set; } = []; + public VisualLight[] VisualLights { get; set; } = []; + public VisualWheel[] VisualWheels { get; set; } = []; + public VisualId? U01 { get; set; } + public VisualId? U02 { get; set; } + public VisualId? U03 { get; set; } + public VisualId? U04 { get; set; } + public int U05 { get; set; } + } +} diff --git a/Src/GBX.NET/Engines/Scene/CSceneVehicle.chunkl b/Src/GBX.NET/Engines/Scene/CSceneVehicle.chunkl index bc17043c2..d148198fa 100644 --- a/Src/GBX.NET/Engines/Scene/CSceneVehicle.chunkl +++ b/Src/GBX.NET/Engines/Scene/CSceneVehicle.chunkl @@ -1,2 +1,9 @@ CSceneVehicle 0x0A060000 -- inherits: CSceneMobil \ No newline at end of file +- inherits: CSceneMobil + +0x000 + CPlugVehiclePhyTunings VehicleTunings (external) + CMwRefBuffer VehicleMaterials (external) + CSceneVehicleEnvironment Environment + CMwNod + CPlugVehicleVisModelShared VehicleStruct (external) \ No newline at end of file diff --git a/Src/GBX.NET/Engines/Scene/CSceneVehicleCar.chunkl b/Src/GBX.NET/Engines/Scene/CSceneVehicleCar.chunkl index e7c79c472..ed12a745f 100644 --- a/Src/GBX.NET/Engines/Scene/CSceneVehicleCar.chunkl +++ b/Src/GBX.NET/Engines/Scene/CSceneVehicleCar.chunkl @@ -1,2 +1,7 @@ CSceneVehicleCar 0x0A02B000 -- inherits: CSceneVehicle \ No newline at end of file +- inherits: CSceneVehicle + +0x00C + float + float + box \ No newline at end of file diff --git a/Src/GBX.NET/Engines/Scene/CSceneVehicleEnvironment.chunkl b/Src/GBX.NET/Engines/Scene/CSceneVehicleEnvironment.chunkl new file mode 100644 index 000000000..9a27c5c70 --- /dev/null +++ b/Src/GBX.NET/Engines/Scene/CSceneVehicleEnvironment.chunkl @@ -0,0 +1,7 @@ +CSceneVehicleEnvironment 0x0A033000 + +0x000 + bool + +0x002 + CPlugMaterial[] Materials (external) \ No newline at end of file