Skip to content

Commit

Permalink
Implement CGameCtnMediaBlockCameraOrbital for TM2020
Browse files Browse the repository at this point in the history
  • Loading branch information
BigBang1112 committed Dec 29, 2023
1 parent d9b28da commit 648c0ba
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 4 deletions.
59 changes: 59 additions & 0 deletions Src/GBX.NET/Engines/Game/CGameCtnMediaBlockCameraOrbital.Key.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
namespace GBX.NET.Engines.Game;

public partial class CGameCtnMediaBlockCameraOrbital
{
public new class Key : CGameCtnMediaBlock.Key
{
private float radius;
private float longitude;
private float latitude;
private Vec3 targetPosition;
private float fov;
private float u01;
private float u02;
private int u03;
private int u04;
private int u05;
private int u06;
private int u07;

public float Radius { get => radius; set => radius = value; }
public float Longitude { get => longitude; set => longitude = value; }
public float Latitude { get => latitude; set => latitude = value; }
public Vec3 TargetPosition { get => targetPosition; set => targetPosition = value; }
public float Fov { get => fov; set => fov = value; }
public float U01 { get => u01; set => u01 = value; }
public float U02 { get => u02; set => u02 = value; }
public int U03 { get => u03; set => u03 = value; }
public int U04 { get => u04; set => u04 = value; }
public int U05 { get => u05; set => u05 = value; }
public int U06 { get => u06; set => u06 = value; }
public int U07 { get => u07; set => u07 = value; }

public override void ReadWrite(GameBoxReaderWriter rw, int version = 0)
{
base.ReadWrite(rw, version);

// GmCamOrbitVal::Archive
rw.Byte(0);
rw.Single(ref radius);
rw.Single(ref longitude);
rw.Single(ref latitude);
rw.Vec3(ref targetPosition);
rw.Single(ref fov);
rw.Single(ref u01);
rw.Single(ref u02);
//

rw.Int32(ref u03);

if (version >= 1)
{
rw.Int32(ref u04);
rw.Int32(ref u05);
rw.Int32(ref u06);
rw.Int32(ref u07);
}
}
}
}
25 changes: 21 additions & 4 deletions Src/GBX.NET/Engines/Game/CGameCtnMediaBlockCameraOrbital.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,20 @@

/// <remarks>ID: 0x030A0000</remarks>
[Node(0x030A0000)]
public class CGameCtnMediaBlockCameraOrbital : CGameCtnMediaBlock
public partial class CGameCtnMediaBlockCameraOrbital : CGameCtnMediaBlock, CGameCtnMediaBlock.IHasKeys
{
private IList<Key> keys = Array.Empty<Key>();

IEnumerable<CGameCtnMediaBlock.Key> IHasKeys.Keys
{
get => keys.Cast<CGameCtnMediaBlock.Key>();
set => keys = value.Cast<Key>().ToList();
}

[NodeMember]
[AppliedWithChunk<Chunk030A0001>]
public IList<Key> Keys { get => keys; set => keys = value; }

internal CGameCtnMediaBlockCameraOrbital()
{

Expand All @@ -13,9 +25,14 @@ internal CGameCtnMediaBlockCameraOrbital()
/// CGameCtnMediaBlockCameraOrbital 0x001 chunk
/// </summary>
[Chunk(0x030A0001)]
[AutoReadWriteChunk]
public class Chunk030A0001 : Chunk<CGameCtnMediaBlockCameraOrbital>
public class Chunk030A0001 : Chunk<CGameCtnMediaBlockCameraOrbital>, IVersionable
{

public int Version { get; set; }

public override void ReadWrite(CGameCtnMediaBlockCameraOrbital n, GameBoxReaderWriter rw)
{
rw.VersionInt32(this);
rw.ListKey(ref n.keys!, Version);
}
}
}

0 comments on commit 648c0ba

Please sign in to comment.