Skip to content

Commit

Permalink
Add VehicleStruct support
Browse files Browse the repository at this point in the history
  • Loading branch information
BigBang1112 committed Jan 19, 2025
1 parent 2bbf9e5 commit 930f83e
Show file tree
Hide file tree
Showing 8 changed files with 254 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Src/GBX.NET/Engines/Function/CFuncLight.chunkl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CFuncLight 0x05018000
- abstract

0x000
int FctType
int<EFctType> FctType
float FlickPeriod
int FlickCount

Expand Down
4 changes: 4 additions & 0 deletions Src/GBX.NET/Engines/Plug/CPlugVehicleMaterialGroup.chunkl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
CPlugVehicleMaterialGroup 0x090E9000

0x000
int[]
42 changes: 42 additions & 0 deletions Src/GBX.NET/Engines/Plug/CPlugVehicleVisEmitterModel.chunkl
Original file line number Diff line number Diff line change
@@ -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
54 changes: 54 additions & 0 deletions Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.chunkl
Original file line number Diff line number Diff line change
@@ -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
132 changes: 132 additions & 0 deletions Src/GBX.NET/Engines/Plug/CPlugVehicleVisModelShared.cs
Original file line number Diff line number Diff line change
@@ -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<VisualArm>();
}
}

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<VisualLight>();
}
}

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<VisualWheel>();
}
}

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<VisualId>();
n.VisualVehicles[i].U02 = r.ReadReadable<VisualId>();
n.VisualVehicles[i].U03 = r.ReadReadable<VisualId>();
n.VisualVehicles[i].U04 = r.ReadReadable<VisualId>();
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; }
}
}
9 changes: 8 additions & 1 deletion Src/GBX.NET/Engines/Scene/CSceneVehicle.chunkl
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
CSceneVehicle 0x0A060000
- inherits: CSceneMobil
- inherits: CSceneMobil

0x000
CPlugVehiclePhyTunings VehicleTunings (external)
CMwRefBuffer VehicleMaterials (external)
CSceneVehicleEnvironment Environment
CMwNod
CPlugVehicleVisModelShared VehicleStruct (external)
7 changes: 6 additions & 1 deletion Src/GBX.NET/Engines/Scene/CSceneVehicleCar.chunkl
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
CSceneVehicleCar 0x0A02B000
- inherits: CSceneVehicle
- inherits: CSceneVehicle

0x00C
float
float
box
7 changes: 7 additions & 0 deletions Src/GBX.NET/Engines/Scene/CSceneVehicleEnvironment.chunkl
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CSceneVehicleEnvironment 0x0A033000

0x000
bool

0x002
CPlugMaterial[] Materials (external)

0 comments on commit 930f83e

Please sign in to comment.