Skip to content

Commit

Permalink
Merge pull request #90 from BigBang1112/dev
Browse files Browse the repository at this point in the history
GBX.NET 1.2.6
  • Loading branch information
BigBang1112 committed Feb 19, 2024
2 parents 501babc + 2095e07 commit b5e0dc2
Show file tree
Hide file tree
Showing 14 changed files with 199 additions and 59 deletions.
21 changes: 21 additions & 0 deletions Src/GBX.NET/Engines/Game/CGameCtnBlockUnitInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -491,5 +491,26 @@ public override void Read(CGameCtnBlockUnitInfo n, GameBoxReader r)

#endregion

#region 0x00D chunk

/// <summary>
/// CGameCtnBlockUnitInfo 0x00D chunk
/// </summary>
[Chunk(0x0303600D)]
public class Chunk0303600D : Chunk<CGameCtnBlockUnitInfo>, IVersionable
{
public byte[]? U01;

public int Version { get; set; }

public override void ReadWrite(CGameCtnBlockUnitInfo n, GameBoxReaderWriter rw)
{
rw.VersionInt32(this);
rw.Bytes(ref U01);
}
}

#endregion

#endregion
}
15 changes: 8 additions & 7 deletions Src/GBX.NET/Engines/Game/CGameCtnGhost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -489,8 +489,9 @@ public class Chunk03092000 : SkippableChunk<CGameCtnGhost>, IVersionable

public bool U03;
public int[]? U04;
public int U05;
public int AppearanceVersion;
public int? U06;
public string? U07;

public int Version { get => version; set => version = value; }

Expand All @@ -505,7 +506,7 @@ public override void ReadWrite(CGameCtnGhost n, GameBoxReaderWriter rw)

if (version >= 9)
{
rw.Int32(ref U05);
rw.Int32(ref AppearanceVersion);
}

// SGamePlayerMobilAppearanceParams::Archive
Expand All @@ -519,6 +520,11 @@ public override void ReadWrite(CGameCtnGhost n, GameBoxReaderWriter rw)
rw.Int32(ref n.badgeVersion);
rw.Archive<Badge>(ref n.badge, n.badgeVersion.GetValueOrDefault()); // NGameBadge::BadgeArchive
}

if (AppearanceVersion >= 1)
{
rw.String(ref U07);
}
//

rw.String(ref n.ghostNickname);
Expand All @@ -539,11 +545,6 @@ public override void ReadWrite(CGameCtnGhost n, GameBoxReaderWriter rw)

if (Version >= 5)
{
if (Version >= 9) // Not in code?
{
rw.Int32(ref U06);
}

rw.NodeRef<CPlugEntRecordData>(ref n.recordData);
rw.Array(ref U04);

Expand Down
56 changes: 47 additions & 9 deletions Src/GBX.NET/Engines/Plug/CPlugIndexBuffer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ namespace GBX.NET.Engines.Plug;
public class CPlugIndexBuffer : CPlug
{
private int flags;
private ushort[] indices;
private int[] indices;

[NodeMember]
[AppliedWithChunk<Chunk09057000>]
public int Flags { get => flags; set => flags = value; }

[NodeMember]
[AppliedWithChunk<Chunk09057000>]
public ushort[] Indices { get => indices; set => indices = value; }
public int[] Indices { get => indices; set => indices = value; }

internal CPlugIndexBuffer()
{
indices = Array.Empty<ushort>();
indices = [];
}

/// <summary>
Expand All @@ -26,10 +26,26 @@ internal CPlugIndexBuffer()
[Chunk(0x09057000)]
public class Chunk09057000 : Chunk<CPlugIndexBuffer>
{
public override void ReadWrite(CPlugIndexBuffer n, GameBoxReaderWriter rw)
public override void Read(CPlugIndexBuffer n, GameBoxReader r)
{
rw.Int32(ref n.flags);
rw.Array(ref n.indices!);
n.flags = r.ReadInt32();
n.indices = new int[r.ReadInt32()];

for (var i = 0; i < n.indices.Length; i++)
{
n.indices[i] = r.ReadUInt16();
}
}

public override void Write(CPlugIndexBuffer n, GameBoxWriter w)
{
w.Write(n.flags);
w.Write(n.indices.Length);

for (var i = 0; i < n.indices.Length; i++)
{
w.Write((ushort)n.indices[i]);
}
}
}

Expand All @@ -41,10 +57,32 @@ public override void ReadWrite(CPlugIndexBuffer n, GameBoxReaderWriter rw)
[Chunk(0x09057001)]
public class Chunk09057001 : Chunk<CPlugIndexBuffer>
{
public override void ReadWrite(CPlugIndexBuffer n, GameBoxReaderWriter rw)
public override void Read(CPlugIndexBuffer n, GameBoxReader r)
{
n.flags = r.ReadInt32();
n.indices = new int[r.ReadInt32()];

var curVal = 0;

for (var i = 0; i < n.indices.Length; i++)
{
curVal += r.ReadInt16();
n.indices[i] = curVal;
}
}

public override void Write(CPlugIndexBuffer n, GameBoxWriter w)
{
rw.Int32(ref n.flags);
rw.Array(ref n.indices!);
w.Write(n.flags);
w.Write(n.indices.Length);

var curVal = 0;

for (var i = 0; i < n.indices.Length; i++)
{
w.Write((short)(n.indices[i] - curVal));
curVal = n.indices[i];
}
}
}

Expand Down
15 changes: 11 additions & 4 deletions Src/GBX.NET/Engines/Plug/CPlugVehicleCarPhyShape.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
[Node(0x0910E000)]
public class CPlugVehicleCarPhyShape : CMwNod
{
private CPlugSurface? moveShape;
private Box carVsCarShapeBox;

[NodeMember(ExactlyNamed = true)]
public CPlugSurface? MoveShape { get => moveShape; set => moveShape = value; }

[NodeMember(ExactName = "CarVsCarShape_Box")]
public Box CarVsCarShapeBox { get => carVsCarShapeBox; set => carVsCarShapeBox = value; }

internal CPlugVehicleCarPhyShape()
{

Expand All @@ -18,7 +27,6 @@ public class Chunk0910E000 : Chunk<CPlugVehicleCarPhyShape>, IVersionable
{
public float U01;
public CPlugSolid? U02;
public CPlugSurface? U03;
public CPlugVehicleWheelPhyModel[] U04 = Array.Empty<CPlugVehicleWheelPhyModel>();
public Box U05;
public bool U06;
Expand All @@ -32,7 +40,6 @@ public class Chunk0910E000 : Chunk<CPlugVehicleCarPhyShape>, IVersionable
public float U14;
public float U15;
public Vec4[] U16 = Array.Empty<Vec4>();
public Box U17;
public bool U18;
public bool U19;
public float U20;
Expand Down Expand Up @@ -66,7 +73,7 @@ public override void ReadWrite(CPlugVehicleCarPhyShape n, GameBoxReaderWriter rw

if (Version >= 1 && U02 is null)
{
rw.NodeRef<CPlugSurface>(ref U03);
rw.NodeRef<CPlugSurface>(ref n.moveShape);
}

rw.ArrayArchive<CPlugVehicleWheelPhyModel>(ref U04!);
Expand All @@ -83,7 +90,7 @@ public override void ReadWrite(CPlugVehicleCarPhyShape n, GameBoxReaderWriter rw
rw.Single(ref U14);
rw.Single(ref U15);
rw.Array<Vec4>(ref U16!);
rw.Box(ref U17);
rw.Box(ref n.carVsCarShapeBox);
rw.Boolean(ref U18);
rw.Boolean(ref U19);
rw.Single(ref U20);
Expand Down
20 changes: 20 additions & 0 deletions Src/GBX.NET/Engines/Plug/CPlugVehicleMaterial.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,26 @@ internal CPlugVehicleMaterial()

}

#region 0x004 chunk

/// <summary>
/// CPlugVehicleMaterial 0x004 chunk
/// </summary>
[Chunk(0x090F1004)]
public class Chunk090F1004 : Chunk<CPlugVehicleMaterial>
{
public CPlugBitmap? U01;
public Vec2 U02;

public override void ReadWrite(CPlugVehicleMaterial n, GameBoxReaderWriter rw)
{
rw.NodeRef<CPlugBitmap>(ref U01);
rw.Vec2(ref U02);
}
}

#endregion

#region 0x00F chunk

/// <summary>
Expand Down
24 changes: 15 additions & 9 deletions Src/GBX.NET/Engines/Plug/CPlugVisualIndexed.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
[Node(0x0906A000)]
public abstract class CPlugVisualIndexed : CPlugVisual3D
{
private int[]? indices;

private CPlugIndexBuffer? indexBuffer;

[NodeMember]
public ushort[] Indices
public int[] Indices
{
get => indexBuffer?.Indices ?? Array.Empty<ushort>();
get => indexBuffer?.Indices ?? indices ?? [];
set
{
if (indexBuffer is not null)
if (indexBuffer is not null) // not ideal for old games
{
indexBuffer.Indices = value;
}
Expand All @@ -35,23 +37,27 @@ public class Chunk0906A000 : Chunk<CPlugVisualIndexed>
{
public override void Read(CPlugVisualIndexed n, GameBoxReader r)
{
var indices = r.ReadArray<ushort>();
n.indices = new int[r.ReadInt32()];

if (n.indexBuffer is not null)
for (var i = 0; i < n.indices.Length; i++)
{
n.indexBuffer.Indices = indices;
n.indices[i] = r.ReadUInt16();
}
}

public override void Write(CPlugVisualIndexed n, GameBoxWriter w)
{
if (n.indexBuffer is null)
if (n.indices is null)
{
w.Write(0);
return;
}
else

w.Write(n.indices.Length);

for (var i = 0; i < n.indices.Length; i++)
{
w.WriteArray(n.indexBuffer.Indices);
w.Write((ushort)n.indices[i]);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Src/GBX.NET/GBX.NET.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<IsTrimmable>true</IsTrimmable>

<Version>1.2.5</Version>
<Version>1.2.6</Version>
<PackageReleaseNotes></PackageReleaseNotes>

<TargetFrameworks>net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0;net462</TargetFrameworks>
Expand Down
2 changes: 1 addition & 1 deletion Src/GBX.NET/Int4.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ public override string ToString()
return $"<{X}, {Y}, {Z}, {W}>";
}

public static readonly Int2 Zero = new();
public static readonly Int4 Zero = new();
}

0 comments on commit b5e0dc2

Please sign in to comment.