Name some fields, add symbol callouts to placement dumper

This commit is contained in:
Kurt 2021-09-18 19:59:52 -07:00
parent 5bdd0034a1
commit e13c8050e6
4 changed files with 31 additions and 28 deletions

View File

@ -24,10 +24,12 @@ public class PlacementZone8MovementPathHolder
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
public class PlacementZone8_V3f
{
[FlatBufferItem(00)] public float Field_00 { get; set; }
[FlatBufferItem(01)] public float Field_01 { get; set; }
[FlatBufferItem(02)] public float Field_02 { get; set; }
[FlatBufferItem(00)] public float LocationX { get; set; }
[FlatBufferItem(01)] public float LocationY { get; set; }
[FlatBufferItem(02)] public float LocationZ { get; set; }
public override string ToString() => $"({Field_00}, {Field_01}, {Field_02})";
public string Location3f => $"({LocationX}, {LocationY}, {LocationZ})";
public override string ToString() => Location3f;
}
}

View File

@ -20,7 +20,7 @@ public class PlacementZone8StaticObjectsHolder
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
public class PlacementZoneStaticObject8
{
[FlatBufferItem(0)] public PlacementZoneStaticObjectIdentifier8 Identifier { get; set; } = new();
[FlatBufferItem(0)] public PlacementZoneMetaTripleXYZ8 Identifier { get; set; } = new();
[FlatBufferItem(1)] public uint Field_01 { get; set; }
[FlatBufferItem(2)] public uint Rate { get; set; } // usually 100, but
[FlatBufferItem(3)] public uint Field_03 { get; set; }
@ -30,23 +30,6 @@ public class PlacementZoneStaticObject8
[FlatBufferItem(7)] public PlacementZoneStaticObjectUnknown8 Field_07 { get; set; } = new();
}
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
public class PlacementZoneStaticObjectIdentifier8
{
[FlatBufferItem(00)] public float LocationX { get; set; }
[FlatBufferItem(01)] public float LocationY { get; set; }
[FlatBufferItem(02)] public float LocationZ { get; set; }
[FlatBufferItem(03)] public float RotationX { get; set; } // assumed
[FlatBufferItem(04)] public float RotationY { get; set; }
[FlatBufferItem(05)] public float RotationZ { get; set; } // assumed
[FlatBufferItem(06)] public float ScaleX { get; set; }
[FlatBufferItem(07)] public float ScaleY { get; set; }
[FlatBufferItem(08)] public float ScaleZ { get; set; }
[FlatBufferItem(09)] public ulong SpawnerID { get; set; }
[FlatBufferItem(10)] public ulong Field_A { get; set; }
[FlatBufferItem(11)] public ulong Field_B { get; set; }
}
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
public class PlacementZoneStaticObjectSpawn8
{

View File

@ -12,13 +12,13 @@ namespace pkNX.Structures.FlatBuffers
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
public class PlacementZone8SymbolSpawnHolder
{
[FlatBufferItem(00)] public PlacementZone8SymbolSpawn Field_00 { get; set; } = new();
[FlatBufferItem(00)] public PlacementZone8SymbolSpawn Object { get; set; } = new();
}
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
public class PlacementZone8SymbolSpawn
{
[FlatBufferItem(00)] public PlacementZoneMetaTripleXYZ8 Field_00 { get; set; } = new();
[FlatBufferItem(00)] public PlacementZoneMetaTripleXYZ8 Identifier { get; set; } = new();
[FlatBufferItem(01)] public int Field_01 { get; set; }
[FlatBufferItem(02)] public PlacementZone8_F20_Sub Field_02 { get; set; } = new();
[FlatBufferItem(03)] public PlacementZone8_F20_Sub Field_03 { get; set; } = new();

View File

@ -60,16 +60,32 @@ public class PlacementZone8
? $"{name} ({desc}):"
: $"{name}:";
foreach (var sym in Symbols)
{
var obj = sym.Object;
var ident = obj.Identifier;
yield return $" {objects[ident.ObjectNameHash]}:";
yield return $" Location: {ident.Location3f}";
if (obj.SymbolHash is (0xCBF29CE484222645 or 0))
{
yield return " No symbols."; // shouldn't hit here, if we have a holder we should have a symbol to hold.
break;
}
var line = $"SymbolHash: {obj.SymbolHash:X16}, ObjectHash:{obj.Identifier.ObjectNameHash:X16}, {nameof(PlacementZone8SymbolSpawn.Field_06)}: {obj.Field_06}, {nameof(PlacementZone8SymbolSpawn.Field_01)}: {obj.Field_01}";
yield return $" {line}";
}
foreach (var so in StaticObjects)
{
var obj = so.Object;
var ident = obj.Identifier;
yield return $" {objects[ident.SpawnerID]}:";
yield return $" Location: ({ident.LocationX}, {ident.LocationY}, {ident.LocationZ})";
yield return $" {objects[ident.ObjectNameHash]}:";
yield return $" Location: {ident.Location3f}";
if (obj.Spawns.Length == 0)
{
yield return " No spawns."; // shouldn't hit here, if we have a holder we should have a spawn to hold.
yield break;
break;
}
var s = obj.Spawns;
@ -135,6 +151,8 @@ public class PlacementZoneMetaTripleXYZ8
[FlatBufferItem(10)] public ulong Hash_10 { get; set; }
[FlatBufferItem(11)] public ulong Hash_11 { get; set; }
public string Location3f => $"({LocationX}, {LocationY}, {LocationZ})";
public void Upscale(float factor)
{
ScaleX *= factor;
@ -142,7 +160,7 @@ public void Upscale(float factor)
ScaleZ *= factor;
}
public override string ToString() => $"{ObjectNameHash:X16}";
public override string ToString() => $"{ObjectNameHash:X16} @ {Location3f}";
public PlacementZoneMetaTripleXYZ8 Clone() => new()
{