mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-08-20 08:59:21 +08:00
1826 lines
82 KiB
C#
1826 lines
82 KiB
C#
using SharpDX;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
/*
|
|
Copyright(c) 2017 Neodymium
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
THE SOFTWARE.
|
|
*/
|
|
|
|
|
|
//ruthlessly stolen
|
|
|
|
|
|
namespace CodeWalker.GameFiles
|
|
{
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ClothDictionary : ResourceFileBase
|
|
{
|
|
// pgBase
|
|
// pgDictionaryBase
|
|
// pgDictionary<characterCloth>
|
|
public override long BlockLength => 0x40;
|
|
|
|
// structure data
|
|
public uint Unknown_10h { get; set; } // 0x00000000
|
|
public uint Unknown_14h { get; set; } // 0x00000000
|
|
public uint Unknown_18h { get; set; } // 0x00000001
|
|
public uint Unknown_1Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_uint ClothNameHashes { get; set; }
|
|
public ResourcePointerList64<CharacterCloth> Clothes { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
base.Read(reader, parameters);
|
|
|
|
// read structure data
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h = reader.ReadUInt32();
|
|
this.Unknown_1Ch = reader.ReadUInt32();
|
|
this.ClothNameHashes = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Clothes = reader.ReadBlock<ResourcePointerList64<CharacterCloth>>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
base.Write(writer, parameters);
|
|
|
|
// write structure data
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h);
|
|
writer.Write(this.Unknown_1Ch);
|
|
writer.WriteBlock(this.ClothNameHashes);
|
|
writer.WriteBlock(this.Clothes);
|
|
}
|
|
|
|
public override Tuple<long, IResourceBlock>[] GetParts()
|
|
{
|
|
return new Tuple<long, IResourceBlock>[] {
|
|
new Tuple<long, IResourceBlock>(0x20, ClothNameHashes),
|
|
new Tuple<long, IResourceBlock>(0x30, Clothes)
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ClothController : ResourceSystemBlock
|
|
{
|
|
// clothController
|
|
public override long BlockLength => 0x80;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public ulong BridgeSimGfxPointer { get; set; }
|
|
public ulong MorphControllerPointer { get; set; }
|
|
public ulong VerletCloth1Pointer { get; set; }
|
|
public ulong VerletCloth2Pointer { get; set; }
|
|
public ulong VerletCloth3Pointer { get; set; }
|
|
public uint Unknown_38h { get; set; } // 0x00000000
|
|
public uint Unknown_3Ch { get; set; } // 0x00000000
|
|
public uint Unknown_40h { get; set; } // 0x00000000
|
|
public uint Unknown_44h { get; set; } // 0x00000000
|
|
public uint Unknown_48h { get; set; } // 0x00000000
|
|
public uint Unknown_4Ch { get; set; } // 0x00000000
|
|
public uint Type { get; set; }
|
|
public uint Unknown_54h { get; set; } // 0x00000000
|
|
public uint Unknown_58h { get; set; } // no float
|
|
public uint Unknown_5Ch { get; set; } // no float
|
|
public uint Unknown_60h { get; set; } // no float
|
|
public uint Unknown_64h { get; set; } // no float
|
|
public uint Unknown_68h { get; set; } // no float
|
|
public uint Unknown_6Ch { get; set; } // no float
|
|
public uint Unknown_70h { get; set; } // no float
|
|
public uint Unknown_74h { get; set; } // 0x00000000
|
|
public uint Unknown_78h { get; set; } // 0x00000000
|
|
public uint Unknown_7Ch { get; set; } // 0x00000000
|
|
|
|
// reference data
|
|
public ClothBridgeSimGfx BridgeSimGfx { get; set; }
|
|
public MorphController MorphController { get; set; }
|
|
public VerletCloth VerletCloth1 { get; set; }
|
|
public VerletCloth VerletCloth2 { get; set; }
|
|
public VerletCloth VerletCloth3 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.BridgeSimGfxPointer = reader.ReadUInt64();
|
|
this.MorphControllerPointer = reader.ReadUInt64();
|
|
this.VerletCloth1Pointer = reader.ReadUInt64();
|
|
this.VerletCloth2Pointer = reader.ReadUInt64();
|
|
this.VerletCloth3Pointer = reader.ReadUInt64();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
this.Unknown_40h = reader.ReadUInt32();
|
|
this.Unknown_44h = reader.ReadUInt32();
|
|
this.Unknown_48h = reader.ReadUInt32();
|
|
this.Unknown_4Ch = reader.ReadUInt32();
|
|
this.Type = reader.ReadUInt32();
|
|
this.Unknown_54h = reader.ReadUInt32();
|
|
this.Unknown_58h = reader.ReadUInt32();
|
|
this.Unknown_5Ch = reader.ReadUInt32();
|
|
this.Unknown_60h = reader.ReadUInt32();
|
|
this.Unknown_64h = reader.ReadUInt32();
|
|
this.Unknown_68h = reader.ReadUInt32();
|
|
this.Unknown_6Ch = reader.ReadUInt32();
|
|
this.Unknown_70h = reader.ReadUInt32();
|
|
this.Unknown_74h = reader.ReadUInt32();
|
|
this.Unknown_78h = reader.ReadUInt32();
|
|
this.Unknown_7Ch = reader.ReadUInt32();
|
|
|
|
// read reference data
|
|
this.BridgeSimGfx = reader.ReadBlockAt<ClothBridgeSimGfx>(
|
|
this.BridgeSimGfxPointer // offset
|
|
);
|
|
this.MorphController = reader.ReadBlockAt<MorphController>(
|
|
this.MorphControllerPointer // offset
|
|
);
|
|
this.VerletCloth1 = reader.ReadBlockAt<VerletCloth>(
|
|
this.VerletCloth1Pointer // offset
|
|
);
|
|
this.VerletCloth2 = reader.ReadBlockAt<VerletCloth>(
|
|
this.VerletCloth2Pointer // offset
|
|
);
|
|
this.VerletCloth3 = reader.ReadBlockAt<VerletCloth>(
|
|
this.VerletCloth3Pointer // offset
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// update structure data
|
|
this.BridgeSimGfxPointer = (ulong)(this.BridgeSimGfx != null ? this.BridgeSimGfx.FilePosition : 0);
|
|
this.MorphControllerPointer = (ulong)(this.MorphController != null ? this.MorphController.FilePosition : 0);
|
|
this.VerletCloth1Pointer = (ulong)(this.VerletCloth1 != null ? this.VerletCloth1.FilePosition : 0);
|
|
this.VerletCloth2Pointer = (ulong)(this.VerletCloth2 != null ? this.VerletCloth2.FilePosition : 0);
|
|
this.VerletCloth3Pointer = (ulong)(this.VerletCloth3 != null ? this.VerletCloth3.FilePosition : 0);
|
|
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.BridgeSimGfxPointer);
|
|
writer.Write(this.MorphControllerPointer);
|
|
writer.Write(this.VerletCloth1Pointer);
|
|
writer.Write(this.VerletCloth2Pointer);
|
|
writer.Write(this.VerletCloth3Pointer);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
writer.Write(this.Unknown_40h);
|
|
writer.Write(this.Unknown_44h);
|
|
writer.Write(this.Unknown_48h);
|
|
writer.Write(this.Unknown_4Ch);
|
|
writer.Write(this.Type);
|
|
writer.Write(this.Unknown_54h);
|
|
writer.Write(this.Unknown_58h);
|
|
writer.Write(this.Unknown_5Ch);
|
|
writer.Write(this.Unknown_60h);
|
|
writer.Write(this.Unknown_64h);
|
|
writer.Write(this.Unknown_68h);
|
|
writer.Write(this.Unknown_6Ch);
|
|
writer.Write(this.Unknown_70h);
|
|
writer.Write(this.Unknown_74h);
|
|
writer.Write(this.Unknown_78h);
|
|
writer.Write(this.Unknown_7Ch);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a list of data blocks which are referenced by this block.
|
|
/// </summary>
|
|
public override IResourceBlock[] GetReferences()
|
|
{
|
|
var list = new List<IResourceBlock>();
|
|
if (BridgeSimGfx != null) list.Add(BridgeSimGfx);
|
|
if (MorphController != null) list.Add(MorphController);
|
|
if (VerletCloth1 != null) list.Add(VerletCloth1);
|
|
if (VerletCloth2 != null) list.Add(VerletCloth2);
|
|
if (VerletCloth3 != null) list.Add(VerletCloth3);
|
|
return list.ToArray();
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ClothBridgeSimGfx : ResourceSystemBlock
|
|
{
|
|
// pgBase
|
|
// clothBridgeSimGfx
|
|
public override long BlockLength => 0x140;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public uint Unknown_10h { get; set; }
|
|
public uint Unknown_14h { get; set; }
|
|
public uint Unknown_18h { get; set; }
|
|
public uint Unknown_1Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_float Unknown_20h { get; set; }
|
|
public ResourceSimpleList64_float Unknown_30h { get; set; }
|
|
public ResourceSimpleList64_float Unknown_40h { get; set; }
|
|
public uint Unknown_50h { get; set; } // 0x00000000
|
|
public uint Unknown_54h { get; set; } // 0x00000000
|
|
public uint Unknown_58h { get; set; } // 0x00000000
|
|
public uint Unknown_5Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_float Unknown_60h { get; set; }
|
|
public ResourceSimpleList64_uint Unknown_70h { get; set; }
|
|
public ResourceSimpleList64_uint Unknown_80h { get; set; }
|
|
public uint Unknown_90h { get; set; } // 0x00000000
|
|
public uint Unknown_94h { get; set; } // 0x00000000
|
|
public uint Unknown_98h { get; set; } // 0x00000000
|
|
public uint Unknown_9Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_float Unknown_A0h { get; set; }
|
|
public ResourceSimpleList64_uint Unknown_B0h { get; set; }
|
|
public ResourceSimpleList64_uint Unknown_C0h { get; set; }
|
|
public uint Unknown_D0h { get; set; } // 0x00000000
|
|
public uint Unknown_D4h { get; set; } // 0x00000000
|
|
public uint Unknown_D8h { get; set; } // 0x00000000
|
|
public uint Unknown_DCh { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_ushort Unknown_E0h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_F0h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_100h { get; set; }
|
|
public uint Unknown_110h { get; set; } // 0x00000000
|
|
public uint Unknown_114h { get; set; } // 0x00000000
|
|
public uint Unknown_118h { get; set; } // 0x00000000
|
|
public uint Unknown_11Ch { get; set; } // 0x00000000
|
|
public uint Unknown_120h { get; set; } // 0x00000000
|
|
public uint Unknown_124h { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_uint Unknown_128h { get; set; }
|
|
public uint Unknown_138h { get; set; } // 0x00000000
|
|
public uint Unknown_13Ch { get; set; } // 0x00000000
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h = reader.ReadUInt32();
|
|
this.Unknown_1Ch = reader.ReadUInt32();
|
|
this.Unknown_20h = reader.ReadBlock<ResourceSimpleList64_float>();
|
|
this.Unknown_30h = reader.ReadBlock<ResourceSimpleList64_float>();
|
|
this.Unknown_40h = reader.ReadBlock<ResourceSimpleList64_float>();
|
|
this.Unknown_50h = reader.ReadUInt32();
|
|
this.Unknown_54h = reader.ReadUInt32();
|
|
this.Unknown_58h = reader.ReadUInt32();
|
|
this.Unknown_5Ch = reader.ReadUInt32();
|
|
this.Unknown_60h = reader.ReadBlock<ResourceSimpleList64_float>();
|
|
this.Unknown_70h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_80h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_90h = reader.ReadUInt32();
|
|
this.Unknown_94h = reader.ReadUInt32();
|
|
this.Unknown_98h = reader.ReadUInt32();
|
|
this.Unknown_9Ch = reader.ReadUInt32();
|
|
this.Unknown_A0h = reader.ReadBlock<ResourceSimpleList64_float>();
|
|
this.Unknown_B0h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_C0h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_D0h = reader.ReadUInt32();
|
|
this.Unknown_D4h = reader.ReadUInt32();
|
|
this.Unknown_D8h = reader.ReadUInt32();
|
|
this.Unknown_DCh = reader.ReadUInt32();
|
|
this.Unknown_E0h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_F0h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_100h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_110h = reader.ReadUInt32();
|
|
this.Unknown_114h = reader.ReadUInt32();
|
|
this.Unknown_118h = reader.ReadUInt32();
|
|
this.Unknown_11Ch = reader.ReadUInt32();
|
|
this.Unknown_120h = reader.ReadUInt32();
|
|
this.Unknown_124h = reader.ReadUInt32();
|
|
this.Unknown_128h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_138h = reader.ReadUInt32();
|
|
this.Unknown_13Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h);
|
|
writer.Write(this.Unknown_1Ch);
|
|
writer.WriteBlock(this.Unknown_20h);
|
|
writer.WriteBlock(this.Unknown_30h);
|
|
writer.WriteBlock(this.Unknown_40h);
|
|
writer.Write(this.Unknown_50h);
|
|
writer.Write(this.Unknown_54h);
|
|
writer.Write(this.Unknown_58h);
|
|
writer.Write(this.Unknown_5Ch);
|
|
writer.WriteBlock(this.Unknown_60h);
|
|
writer.WriteBlock(this.Unknown_70h);
|
|
writer.WriteBlock(this.Unknown_80h);
|
|
writer.Write(this.Unknown_90h);
|
|
writer.Write(this.Unknown_94h);
|
|
writer.Write(this.Unknown_98h);
|
|
writer.Write(this.Unknown_9Ch);
|
|
writer.WriteBlock(this.Unknown_A0h);
|
|
writer.WriteBlock(this.Unknown_B0h);
|
|
writer.WriteBlock(this.Unknown_C0h);
|
|
writer.Write(this.Unknown_D0h);
|
|
writer.Write(this.Unknown_D4h);
|
|
writer.Write(this.Unknown_D8h);
|
|
writer.Write(this.Unknown_DCh);
|
|
writer.WriteBlock(this.Unknown_E0h);
|
|
writer.WriteBlock(this.Unknown_F0h);
|
|
writer.WriteBlock(this.Unknown_100h);
|
|
writer.Write(this.Unknown_110h);
|
|
writer.Write(this.Unknown_114h);
|
|
writer.Write(this.Unknown_118h);
|
|
writer.Write(this.Unknown_11Ch);
|
|
writer.Write(this.Unknown_120h);
|
|
writer.Write(this.Unknown_124h);
|
|
writer.WriteBlock(this.Unknown_128h);
|
|
writer.Write(this.Unknown_138h);
|
|
writer.Write(this.Unknown_13Ch);
|
|
}
|
|
|
|
public override Tuple<long, IResourceBlock>[] GetParts()
|
|
{
|
|
return new Tuple<long, IResourceBlock>[] {
|
|
new Tuple<long, IResourceBlock>(0x20, Unknown_20h),
|
|
new Tuple<long, IResourceBlock>(0x30, Unknown_30h),
|
|
new Tuple<long, IResourceBlock>(0x40, Unknown_40h),
|
|
new Tuple<long, IResourceBlock>(0x60, Unknown_60h),
|
|
new Tuple<long, IResourceBlock>(0x70, Unknown_70h),
|
|
new Tuple<long, IResourceBlock>(0x80, Unknown_80h),
|
|
new Tuple<long, IResourceBlock>(0xA0, Unknown_A0h),
|
|
new Tuple<long, IResourceBlock>(0xB0, Unknown_B0h),
|
|
new Tuple<long, IResourceBlock>(0xC0, Unknown_C0h),
|
|
new Tuple<long, IResourceBlock>(0xE0, Unknown_E0h),
|
|
new Tuple<long, IResourceBlock>(0xF0, Unknown_F0h),
|
|
new Tuple<long, IResourceBlock>(0x100, Unknown_100h),
|
|
new Tuple<long, IResourceBlock>(0x128, Unknown_128h)
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class ClothInstanceTuning : ResourceSystemBlock
|
|
{
|
|
// pgBase
|
|
// clothInstanceTuning
|
|
public override long BlockLength => 0x40;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public uint Unknown_10h { get; set; } // float
|
|
public uint Unknown_14h { get; set; }
|
|
public uint Unknown_18h { get; set; } // 0x00000000
|
|
public uint Unknown_1Ch { get; set; } // 0x00000000
|
|
public uint Unknown_20h { get; set; }
|
|
public uint Unknown_24h { get; set; }
|
|
public uint Unknown_28h { get; set; } // float
|
|
public uint Unknown_2Ch { get; set; }
|
|
public uint Unknown_30h { get; set; } // no float
|
|
public uint Unknown_34h { get; set; } // float
|
|
public uint Unknown_38h { get; set; }
|
|
public uint Unknown_3Ch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h = reader.ReadUInt32();
|
|
this.Unknown_1Ch = reader.ReadUInt32();
|
|
this.Unknown_20h = reader.ReadUInt32();
|
|
this.Unknown_24h = reader.ReadUInt32();
|
|
this.Unknown_28h = reader.ReadUInt32();
|
|
this.Unknown_2Ch = reader.ReadUInt32();
|
|
this.Unknown_30h = reader.ReadUInt32();
|
|
this.Unknown_34h = reader.ReadUInt32();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h);
|
|
writer.Write(this.Unknown_1Ch);
|
|
writer.Write(this.Unknown_20h);
|
|
writer.Write(this.Unknown_24h);
|
|
writer.Write(this.Unknown_28h);
|
|
writer.Write(this.Unknown_2Ch);
|
|
writer.Write(this.Unknown_30h);
|
|
writer.Write(this.Unknown_34h);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class VerletCloth : ResourceSystemBlock
|
|
{
|
|
// pgBase
|
|
// phVerletCloth
|
|
public override long BlockLength => 0x180;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public uint Unknown_10h { get; set; } // 0x00000000
|
|
public uint Unknown_14h { get; set; } // 0x00000000
|
|
public ulong BoundPointer { get; set; }
|
|
public uint Unknown_20h { get; set; } // 0x00000000
|
|
public uint Unknown_24h { get; set; } // 0x00000000
|
|
public uint Unknown_28h { get; set; } // 0x00000000
|
|
public uint Unknown_2Ch { get; set; } // 0x00000000
|
|
public uint Unknown_30h { get; set; }
|
|
public uint Unknown_34h { get; set; }
|
|
public uint Unknown_38h { get; set; }
|
|
public uint Unknown_3Ch { get; set; }
|
|
public uint Unknown_40h { get; set; }
|
|
public uint Unknown_44h { get; set; }
|
|
public uint Unknown_48h { get; set; }
|
|
public uint Unknown_4Ch { get; set; }
|
|
public uint Unknown_50h { get; set; }
|
|
public uint Unknown_54h { get; set; } // 0x00000001
|
|
public uint Unknown_58h { get; set; } // 0x00000000
|
|
public uint Unknown_5Ch { get; set; } // 0x00000000
|
|
public uint Unknown_60h { get; set; } // 0x00000000
|
|
public uint Unknown_64h { get; set; } // 0x00000000
|
|
public uint Unknown_68h { get; set; } // 0x00000000
|
|
public uint Unknown_6Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_s<Vector4> Unknown_70h { get; set; }
|
|
public ResourceSimpleList64_s<Vector4> Unknown_80h { get; set; }
|
|
public uint Unknown_90h { get; set; } // 0x00000000
|
|
public uint Unknown_94h { get; set; } // 0x00000000
|
|
public uint Unknown_98h { get; set; } // 0x00000000
|
|
public uint Unknown_9Ch { get; set; } // 0x00000000
|
|
public uint Unknown_A0h { get; set; } // 0x00000000
|
|
public uint Unknown_A4h { get; set; } // 0x00000000
|
|
public uint Unknown_A8h { get; set; }
|
|
public uint Unknown_ACh { get; set; }
|
|
public uint Unknown_B0h { get; set; } // 0x00000000
|
|
public uint Unknown_B4h { get; set; } // 0x00000000
|
|
public uint Unknown_B8h { get; set; } // 0x00000000
|
|
public uint Unknown_BCh { get; set; } // 0x00000000
|
|
public uint Unknown_C0h { get; set; } // 0x00000000
|
|
public uint Unknown_C4h { get; set; } // 0x00000000
|
|
public uint Unknown_C8h { get; set; } // 0x00000000
|
|
public uint Unknown_CCh { get; set; } // 0x00000000
|
|
public uint Unknown_D0h { get; set; } // 0x00000000
|
|
public uint Unknown_D4h { get; set; } // 0x00000000
|
|
public uint Unknown_D8h { get; set; } // 0x00000000
|
|
public uint Unknown_DCh { get; set; } // 0x00000000
|
|
public uint Unknown_E0h { get; set; } // 0x00000000
|
|
public uint Unknown_E4h { get; set; } // 0x00000000
|
|
public uint Unknown_E8h { get; set; }
|
|
public uint Unknown_ECh { get; set; }
|
|
public uint Unknown_F0h { get; set; }
|
|
public uint Unknown_F4h { get; set; } // 0x00000000
|
|
public uint Unknown_F8h { get; set; }
|
|
public uint Unknown_FCh { get; set; } // 0x00000000
|
|
public ResourceSimpleList64<Unknown_C_004> Unknown_100h { get; set; }
|
|
public ResourceSimpleList64<Unknown_C_004> Unknown_110h { get; set; }
|
|
public uint Unknown_120h { get; set; } // 0x00000000
|
|
public uint Unknown_124h { get; set; } // 0x00000000
|
|
public uint Unknown_128h { get; set; } // 0x00000000
|
|
public uint Unknown_12Ch { get; set; } // 0x00000000
|
|
public ulong BehaviorPointer { get; set; }
|
|
public uint Unknown_138h { get; set; } // 0x00100000
|
|
public uint Unknown_13Ch { get; set; } // 0x00000000
|
|
public ulong Unknown_140h_Pointer { get; set; }
|
|
public uint Unknown_148h { get; set; }
|
|
public uint Unknown_14Ch { get; set; } // 0x00000000
|
|
public uint Unknown_150h { get; set; } // 0x00000000
|
|
public uint Unknown_154h { get; set; } // 0x00000000
|
|
public uint Unknown_158h { get; set; }
|
|
public uint Unknown_15Ch { get; set; } // 0x00000000
|
|
public uint Unknown_160h { get; set; } // 0x00000000
|
|
public uint Unknown_164h { get; set; } // 0x00000000
|
|
public uint Unknown_168h { get; set; } // 0x00000000
|
|
public uint Unknown_16Ch { get; set; } // 0x00000000
|
|
public uint Unknown_170h { get; set; } // 0x00000000
|
|
public uint Unknown_174h { get; set; } // 0x00000000
|
|
public uint Unknown_178h { get; set; } // 0x00000000
|
|
public uint Unknown_17Ch { get; set; } // 0x00000000
|
|
|
|
// reference data
|
|
public Bounds Bound { get; set; }
|
|
public EnvClothVerletBehavior Behavior { get; set; }
|
|
public Unknown_C_007 Unknown_140h_Data { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.BoundPointer = reader.ReadUInt64();
|
|
this.Unknown_20h = reader.ReadUInt32();
|
|
this.Unknown_24h = reader.ReadUInt32();
|
|
this.Unknown_28h = reader.ReadUInt32();
|
|
this.Unknown_2Ch = reader.ReadUInt32();
|
|
this.Unknown_30h = reader.ReadUInt32();
|
|
this.Unknown_34h = reader.ReadUInt32();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
this.Unknown_40h = reader.ReadUInt32();
|
|
this.Unknown_44h = reader.ReadUInt32();
|
|
this.Unknown_48h = reader.ReadUInt32();
|
|
this.Unknown_4Ch = reader.ReadUInt32();
|
|
this.Unknown_50h = reader.ReadUInt32();
|
|
this.Unknown_54h = reader.ReadUInt32();
|
|
this.Unknown_58h = reader.ReadUInt32();
|
|
this.Unknown_5Ch = reader.ReadUInt32();
|
|
this.Unknown_60h = reader.ReadUInt32();
|
|
this.Unknown_64h = reader.ReadUInt32();
|
|
this.Unknown_68h = reader.ReadUInt32();
|
|
this.Unknown_6Ch = reader.ReadUInt32();
|
|
this.Unknown_70h = reader.ReadBlock<ResourceSimpleList64_s<Vector4>>();
|
|
this.Unknown_80h = reader.ReadBlock<ResourceSimpleList64_s<Vector4>>();
|
|
this.Unknown_90h = reader.ReadUInt32();
|
|
this.Unknown_94h = reader.ReadUInt32();
|
|
this.Unknown_98h = reader.ReadUInt32();
|
|
this.Unknown_9Ch = reader.ReadUInt32();
|
|
this.Unknown_A0h = reader.ReadUInt32();
|
|
this.Unknown_A4h = reader.ReadUInt32();
|
|
this.Unknown_A8h = reader.ReadUInt32();
|
|
this.Unknown_ACh = reader.ReadUInt32();
|
|
this.Unknown_B0h = reader.ReadUInt32();
|
|
this.Unknown_B4h = reader.ReadUInt32();
|
|
this.Unknown_B8h = reader.ReadUInt32();
|
|
this.Unknown_BCh = reader.ReadUInt32();
|
|
this.Unknown_C0h = reader.ReadUInt32();
|
|
this.Unknown_C4h = reader.ReadUInt32();
|
|
this.Unknown_C8h = reader.ReadUInt32();
|
|
this.Unknown_CCh = reader.ReadUInt32();
|
|
this.Unknown_D0h = reader.ReadUInt32();
|
|
this.Unknown_D4h = reader.ReadUInt32();
|
|
this.Unknown_D8h = reader.ReadUInt32();
|
|
this.Unknown_DCh = reader.ReadUInt32();
|
|
this.Unknown_E0h = reader.ReadUInt32();
|
|
this.Unknown_E4h = reader.ReadUInt32();
|
|
this.Unknown_E8h = reader.ReadUInt32();
|
|
this.Unknown_ECh = reader.ReadUInt32();
|
|
this.Unknown_F0h = reader.ReadUInt32();
|
|
this.Unknown_F4h = reader.ReadUInt32();
|
|
this.Unknown_F8h = reader.ReadUInt32();
|
|
this.Unknown_FCh = reader.ReadUInt32();
|
|
this.Unknown_100h = reader.ReadBlock<ResourceSimpleList64<Unknown_C_004>>();
|
|
this.Unknown_110h = reader.ReadBlock<ResourceSimpleList64<Unknown_C_004>>();
|
|
this.Unknown_120h = reader.ReadUInt32();
|
|
this.Unknown_124h = reader.ReadUInt32();
|
|
this.Unknown_128h = reader.ReadUInt32();
|
|
this.Unknown_12Ch = reader.ReadUInt32();
|
|
this.BehaviorPointer = reader.ReadUInt64();
|
|
this.Unknown_138h = reader.ReadUInt32();
|
|
this.Unknown_13Ch = reader.ReadUInt32();
|
|
this.Unknown_140h_Pointer = reader.ReadUInt64();
|
|
this.Unknown_148h = reader.ReadUInt32();
|
|
this.Unknown_14Ch = reader.ReadUInt32();
|
|
this.Unknown_150h = reader.ReadUInt32();
|
|
this.Unknown_154h = reader.ReadUInt32();
|
|
this.Unknown_158h = reader.ReadUInt32();
|
|
this.Unknown_15Ch = reader.ReadUInt32();
|
|
this.Unknown_160h = reader.ReadUInt32();
|
|
this.Unknown_164h = reader.ReadUInt32();
|
|
this.Unknown_168h = reader.ReadUInt32();
|
|
this.Unknown_16Ch = reader.ReadUInt32();
|
|
this.Unknown_170h = reader.ReadUInt32();
|
|
this.Unknown_174h = reader.ReadUInt32();
|
|
this.Unknown_178h = reader.ReadUInt32();
|
|
this.Unknown_17Ch = reader.ReadUInt32();
|
|
|
|
// read reference data
|
|
this.Bound = reader.ReadBlockAt<Bounds>(
|
|
this.BoundPointer // offset
|
|
);
|
|
this.Behavior = reader.ReadBlockAt<EnvClothVerletBehavior>(
|
|
this.BehaviorPointer // offset
|
|
);
|
|
this.Unknown_140h_Data = reader.ReadBlockAt<Unknown_C_007>(
|
|
this.Unknown_140h_Pointer // offset
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// update structure data
|
|
this.BoundPointer = (ulong)(this.Bound != null ? this.Bound.FilePosition : 0);
|
|
this.BehaviorPointer = (ulong)(this.Behavior != null ? this.Behavior.FilePosition : 0);
|
|
this.Unknown_140h_Pointer = (ulong)(this.Unknown_140h_Data != null ? this.Unknown_140h_Data.FilePosition : 0);
|
|
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.BoundPointer);
|
|
writer.Write(this.Unknown_20h);
|
|
writer.Write(this.Unknown_24h);
|
|
writer.Write(this.Unknown_28h);
|
|
writer.Write(this.Unknown_2Ch);
|
|
writer.Write(this.Unknown_30h);
|
|
writer.Write(this.Unknown_34h);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
writer.Write(this.Unknown_40h);
|
|
writer.Write(this.Unknown_44h);
|
|
writer.Write(this.Unknown_48h);
|
|
writer.Write(this.Unknown_4Ch);
|
|
writer.Write(this.Unknown_50h);
|
|
writer.Write(this.Unknown_54h);
|
|
writer.Write(this.Unknown_58h);
|
|
writer.Write(this.Unknown_5Ch);
|
|
writer.Write(this.Unknown_60h);
|
|
writer.Write(this.Unknown_64h);
|
|
writer.Write(this.Unknown_68h);
|
|
writer.Write(this.Unknown_6Ch);
|
|
writer.WriteBlock(this.Unknown_70h);
|
|
writer.WriteBlock(this.Unknown_80h);
|
|
writer.Write(this.Unknown_90h);
|
|
writer.Write(this.Unknown_94h);
|
|
writer.Write(this.Unknown_98h);
|
|
writer.Write(this.Unknown_9Ch);
|
|
writer.Write(this.Unknown_A0h);
|
|
writer.Write(this.Unknown_A4h);
|
|
writer.Write(this.Unknown_A8h);
|
|
writer.Write(this.Unknown_ACh);
|
|
writer.Write(this.Unknown_B0h);
|
|
writer.Write(this.Unknown_B4h);
|
|
writer.Write(this.Unknown_B8h);
|
|
writer.Write(this.Unknown_BCh);
|
|
writer.Write(this.Unknown_C0h);
|
|
writer.Write(this.Unknown_C4h);
|
|
writer.Write(this.Unknown_C8h);
|
|
writer.Write(this.Unknown_CCh);
|
|
writer.Write(this.Unknown_D0h);
|
|
writer.Write(this.Unknown_D4h);
|
|
writer.Write(this.Unknown_D8h);
|
|
writer.Write(this.Unknown_DCh);
|
|
writer.Write(this.Unknown_E0h);
|
|
writer.Write(this.Unknown_E4h);
|
|
writer.Write(this.Unknown_E8h);
|
|
writer.Write(this.Unknown_ECh);
|
|
writer.Write(this.Unknown_F0h);
|
|
writer.Write(this.Unknown_F4h);
|
|
writer.Write(this.Unknown_F8h);
|
|
writer.Write(this.Unknown_FCh);
|
|
writer.WriteBlock(this.Unknown_100h);
|
|
writer.WriteBlock(this.Unknown_110h);
|
|
writer.Write(this.Unknown_120h);
|
|
writer.Write(this.Unknown_124h);
|
|
writer.Write(this.Unknown_128h);
|
|
writer.Write(this.Unknown_12Ch);
|
|
writer.Write(this.BehaviorPointer);
|
|
writer.Write(this.Unknown_138h);
|
|
writer.Write(this.Unknown_13Ch);
|
|
writer.Write(this.Unknown_140h_Pointer);
|
|
writer.Write(this.Unknown_148h);
|
|
writer.Write(this.Unknown_14Ch);
|
|
writer.Write(this.Unknown_150h);
|
|
writer.Write(this.Unknown_154h);
|
|
writer.Write(this.Unknown_158h);
|
|
writer.Write(this.Unknown_15Ch);
|
|
writer.Write(this.Unknown_160h);
|
|
writer.Write(this.Unknown_164h);
|
|
writer.Write(this.Unknown_168h);
|
|
writer.Write(this.Unknown_16Ch);
|
|
writer.Write(this.Unknown_170h);
|
|
writer.Write(this.Unknown_174h);
|
|
writer.Write(this.Unknown_178h);
|
|
writer.Write(this.Unknown_17Ch);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a list of data blocks which are referenced by this block.
|
|
/// </summary>
|
|
public override IResourceBlock[] GetReferences()
|
|
{
|
|
var list = new List<IResourceBlock>();
|
|
if (Bound != null) list.Add(Bound);
|
|
if (Behavior != null) list.Add(Behavior);
|
|
if (Unknown_140h_Data != null) list.Add(Unknown_140h_Data);
|
|
return list.ToArray();
|
|
}
|
|
|
|
public override Tuple<long, IResourceBlock>[] GetParts()
|
|
{
|
|
return new Tuple<long, IResourceBlock>[] {
|
|
new Tuple<long, IResourceBlock>(0x70, Unknown_70h),
|
|
new Tuple<long, IResourceBlock>(0x80, Unknown_80h),
|
|
new Tuple<long, IResourceBlock>(0x100, Unknown_100h),
|
|
new Tuple<long, IResourceBlock>(0x110, Unknown_110h)
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class EnvClothVerletBehavior : ResourceSystemBlock
|
|
{
|
|
// datBase
|
|
// phInstBehavior
|
|
// phClothVerletBehavior
|
|
// phEnvClothVerletBehavior
|
|
public override long BlockLength => 0x40;
|
|
|
|
// structure data
|
|
public uint Unknown_0h { get; set; } // 0x00000000
|
|
public uint Unknown_4h { get; set; } // 0x00000000
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public uint Unknown_10h { get; set; } // 0x00000000
|
|
public uint Unknown_14h { get; set; } // 0x00000000
|
|
public uint Unknown_18h { get; set; } // 0x00000000
|
|
public uint Unknown_1Ch { get; set; } // 0x00000000
|
|
public uint Unknown_20h { get; set; } // 0x00000000
|
|
public uint Unknown_24h { get; set; } // 0x00000000
|
|
public uint Unknown_28h { get; set; } // 0x00000000
|
|
public uint Unknown_2Ch { get; set; } // 0x00000000
|
|
public uint Unknown_30h { get; set; } // 0x00000000
|
|
public uint Unknown_34h { get; set; } // 0x00000000
|
|
public uint Unknown_38h { get; set; } // 0x00000000
|
|
public uint Unknown_3Ch { get; set; } // 0x00000000
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h = reader.ReadUInt32();
|
|
this.Unknown_1Ch = reader.ReadUInt32();
|
|
this.Unknown_20h = reader.ReadUInt32();
|
|
this.Unknown_24h = reader.ReadUInt32();
|
|
this.Unknown_28h = reader.ReadUInt32();
|
|
this.Unknown_2Ch = reader.ReadUInt32();
|
|
this.Unknown_30h = reader.ReadUInt32();
|
|
this.Unknown_34h = reader.ReadUInt32();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h);
|
|
writer.Write(this.Unknown_1Ch);
|
|
writer.Write(this.Unknown_20h);
|
|
writer.Write(this.Unknown_24h);
|
|
writer.Write(this.Unknown_28h);
|
|
writer.Write(this.Unknown_2Ch);
|
|
writer.Write(this.Unknown_30h);
|
|
writer.Write(this.Unknown_34h);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class EnvironmentCloth : ResourceSystemBlock
|
|
{
|
|
// pgBase
|
|
// clothBase (TODO)
|
|
// environmentCloth
|
|
public override long BlockLength => 0x80;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public ulong InstanceTuningPointer { get; set; }
|
|
public ulong DrawablePointer { get; set; }
|
|
public uint Unknown_20h { get; set; } // 0x00000000
|
|
public uint Unknown_24h { get; set; } // 0x00000000
|
|
public ulong ControllerPointer { get; set; }
|
|
public uint Unknown_30h { get; set; } // 0x00000000
|
|
public uint Unknown_34h { get; set; } // 0x00000000
|
|
public uint Unknown_38h { get; set; } // 0x00000000
|
|
public uint Unknown_3Ch { get; set; } // 0x00000000
|
|
public uint Unknown_40h { get; set; } // 0x00000000
|
|
public uint Unknown_44h { get; set; } // 0x00000000
|
|
public uint Unknown_48h { get; set; } // 0x00000000
|
|
public uint Unknown_4Ch { get; set; } // 0x00000000
|
|
public uint Unknown_50h { get; set; } // 0x00000000
|
|
public uint Unknown_54h { get; set; } // 0x00000000
|
|
public uint Unknown_58h { get; set; } // 0x00000000
|
|
public uint Unknown_5Ch { get; set; } // 0x00000000
|
|
public ulong pxxxxx_2 { get; set; }
|
|
public ushort cntxx51a { get; set; }
|
|
public ushort cntxx51b { get; set; }
|
|
public uint Unknown_6Ch { get; set; } // 0x00000000
|
|
public uint Unknown_70h { get; set; } // 0x00000000
|
|
public uint Unknown_74h { get; set; } // 0x00000000
|
|
public uint Unknown_78h { get; set; }
|
|
public uint Unknown_7Ch { get; set; } // 0x00000000
|
|
|
|
// reference data
|
|
public ClothInstanceTuning InstanceTuning { get; set; }
|
|
public FragDrawable Drawable { get; set; }
|
|
public ClothController Controller { get; set; }
|
|
public ResourceSimpleArray<uint_r> pxxxxx_2data { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.InstanceTuningPointer = reader.ReadUInt64();
|
|
this.DrawablePointer = reader.ReadUInt64();
|
|
this.Unknown_20h = reader.ReadUInt32();
|
|
this.Unknown_24h = reader.ReadUInt32();
|
|
this.ControllerPointer = reader.ReadUInt64();
|
|
this.Unknown_30h = reader.ReadUInt32();
|
|
this.Unknown_34h = reader.ReadUInt32();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
this.Unknown_40h = reader.ReadUInt32();
|
|
this.Unknown_44h = reader.ReadUInt32();
|
|
this.Unknown_48h = reader.ReadUInt32();
|
|
this.Unknown_4Ch = reader.ReadUInt32();
|
|
this.Unknown_50h = reader.ReadUInt32();
|
|
this.Unknown_54h = reader.ReadUInt32();
|
|
this.Unknown_58h = reader.ReadUInt32();
|
|
this.Unknown_5Ch = reader.ReadUInt32();
|
|
this.pxxxxx_2 = reader.ReadUInt64();
|
|
this.cntxx51a = reader.ReadUInt16();
|
|
this.cntxx51b = reader.ReadUInt16();
|
|
this.Unknown_6Ch = reader.ReadUInt32();
|
|
this.Unknown_70h = reader.ReadUInt32();
|
|
this.Unknown_74h = reader.ReadUInt32();
|
|
this.Unknown_78h = reader.ReadUInt32();
|
|
this.Unknown_7Ch = reader.ReadUInt32();
|
|
|
|
// read reference data
|
|
this.InstanceTuning = reader.ReadBlockAt<ClothInstanceTuning>(
|
|
this.InstanceTuningPointer // offset
|
|
);
|
|
this.Drawable = reader.ReadBlockAt<FragDrawable>(
|
|
this.DrawablePointer // offset
|
|
);
|
|
this.Controller = reader.ReadBlockAt<ClothController>(
|
|
this.ControllerPointer // offset
|
|
);
|
|
this.pxxxxx_2data = reader.ReadBlockAt<ResourceSimpleArray<uint_r>>(
|
|
this.pxxxxx_2, // offset
|
|
this.cntxx51a
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// update structure data
|
|
this.InstanceTuningPointer = (ulong)(this.InstanceTuning != null ? this.InstanceTuning.FilePosition : 0);
|
|
this.DrawablePointer = (ulong)(this.Drawable != null ? this.Drawable.FilePosition : 0);
|
|
this.ControllerPointer = (ulong)(this.Controller != null ? this.Controller.FilePosition : 0);
|
|
this.pxxxxx_2 = (ulong)(this.pxxxxx_2data != null ? this.pxxxxx_2data.FilePosition : 0);
|
|
this.cntxx51a = (ushort)(this.pxxxxx_2data != null ? this.pxxxxx_2data.Count : 0);
|
|
this.cntxx51b = (ushort)(this.pxxxxx_2data != null ? this.pxxxxx_2data.Count : 0);
|
|
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.InstanceTuningPointer);
|
|
writer.Write(this.DrawablePointer);
|
|
writer.Write(this.Unknown_20h);
|
|
writer.Write(this.Unknown_24h);
|
|
writer.Write(this.ControllerPointer);
|
|
writer.Write(this.Unknown_30h);
|
|
writer.Write(this.Unknown_34h);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
writer.Write(this.Unknown_40h);
|
|
writer.Write(this.Unknown_44h);
|
|
writer.Write(this.Unknown_48h);
|
|
writer.Write(this.Unknown_4Ch);
|
|
writer.Write(this.Unknown_50h);
|
|
writer.Write(this.Unknown_54h);
|
|
writer.Write(this.Unknown_58h);
|
|
writer.Write(this.Unknown_5Ch);
|
|
writer.Write(this.pxxxxx_2);
|
|
writer.Write(this.cntxx51a);
|
|
writer.Write(this.cntxx51b);
|
|
writer.Write(this.Unknown_6Ch);
|
|
writer.Write(this.Unknown_70h);
|
|
writer.Write(this.Unknown_74h);
|
|
writer.Write(this.Unknown_78h);
|
|
writer.Write(this.Unknown_7Ch);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a list of data blocks which are referenced by this block.
|
|
/// </summary>
|
|
public override IResourceBlock[] GetReferences()
|
|
{
|
|
var list = new List<IResourceBlock>();
|
|
if (InstanceTuning != null) list.Add(InstanceTuning);
|
|
if (Drawable != null) list.Add(Drawable);
|
|
if (Controller != null) list.Add(Controller);
|
|
if (pxxxxx_2data != null) list.Add(pxxxxx_2data);
|
|
return list.ToArray();
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class CharacterCloth : ResourceSystemBlock
|
|
{
|
|
// pgBase
|
|
// clothBase (TODO)
|
|
// characterCloth
|
|
public override long BlockLength => 0xD0;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64<Unknown_C_001> Unknown_10h { get; set; }
|
|
public ulong ControllerPointer { get; set; }
|
|
public ulong BoundPointer { get; set; }
|
|
public ResourceSimpleList64_uint Unknown_30h { get; set; }
|
|
public uint Unknown_40h { get; set; } // 0x00000000
|
|
public uint Unknown_44h { get; set; } // 0x00000000
|
|
public uint Unknown_48h { get; set; } // 0x00000000
|
|
public uint Unknown_4Ch { get; set; } // 0x00000000
|
|
public uint Unknown_50h { get; set; } // 0x3F800000
|
|
public uint Unknown_54h { get; set; } // 0x00000000
|
|
public uint Unknown_58h { get; set; } // 0x00000000
|
|
public uint Unknown_5Ch { get; set; } // 0x00000000
|
|
public uint Unknown_60h { get; set; } // 0x00000000
|
|
public uint Unknown_64h { get; set; } // 0x3F800000
|
|
public uint Unknown_68h { get; set; } // 0x00000000
|
|
public uint Unknown_6Ch { get; set; } // 0x00000000
|
|
public uint Unknown_70h { get; set; } // 0x00000000
|
|
public uint Unknown_74h { get; set; } // 0x00000000
|
|
public uint Unknown_78h { get; set; } // 0x3F800000
|
|
public uint Unknown_7Ch { get; set; } // 0x00000000
|
|
public uint Unknown_80h { get; set; } // 0x00000000
|
|
public uint Unknown_84h { get; set; } // 0x00000000
|
|
public uint Unknown_88h { get; set; } // 0x00000000
|
|
public uint Unknown_8Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_uint Unknown_90h { get; set; }
|
|
public uint Unknown_A0h { get; set; } // 0x00000000
|
|
public uint Unknown_A4h { get; set; } // 0x00000000
|
|
public uint Unknown_A8h { get; set; } // 0x00000000
|
|
public uint Unknown_ACh { get; set; } // 0x00000000
|
|
public uint Unknown_B0h { get; set; } // 0x00000000
|
|
public uint Unknown_B4h { get; set; } // 0x00000000
|
|
public uint Unknown_B8h { get; set; } // 0x00000000
|
|
public uint Unknown_BCh { get; set; } // 0x00000000
|
|
public uint Unknown_C0h { get; set; } // 0x00000001
|
|
public uint Unknown_C4h { get; set; } // 0x00000000
|
|
public uint Unknown_C8h { get; set; } // 0x00000000
|
|
public uint Unknown_CCh { get; set; } // 0x00000000
|
|
|
|
// reference data
|
|
public CharacterClothController Controller { get; set; }
|
|
public Bounds Bound { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadBlock<ResourceSimpleList64<Unknown_C_001>>();
|
|
this.ControllerPointer = reader.ReadUInt64();
|
|
this.BoundPointer = reader.ReadUInt64();
|
|
this.Unknown_30h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_40h = reader.ReadUInt32();
|
|
this.Unknown_44h = reader.ReadUInt32();
|
|
this.Unknown_48h = reader.ReadUInt32();
|
|
this.Unknown_4Ch = reader.ReadUInt32();
|
|
this.Unknown_50h = reader.ReadUInt32();
|
|
this.Unknown_54h = reader.ReadUInt32();
|
|
this.Unknown_58h = reader.ReadUInt32();
|
|
this.Unknown_5Ch = reader.ReadUInt32();
|
|
this.Unknown_60h = reader.ReadUInt32();
|
|
this.Unknown_64h = reader.ReadUInt32();
|
|
this.Unknown_68h = reader.ReadUInt32();
|
|
this.Unknown_6Ch = reader.ReadUInt32();
|
|
this.Unknown_70h = reader.ReadUInt32();
|
|
this.Unknown_74h = reader.ReadUInt32();
|
|
this.Unknown_78h = reader.ReadUInt32();
|
|
this.Unknown_7Ch = reader.ReadUInt32();
|
|
this.Unknown_80h = reader.ReadUInt32();
|
|
this.Unknown_84h = reader.ReadUInt32();
|
|
this.Unknown_88h = reader.ReadUInt32();
|
|
this.Unknown_8Ch = reader.ReadUInt32();
|
|
this.Unknown_90h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_A0h = reader.ReadUInt32();
|
|
this.Unknown_A4h = reader.ReadUInt32();
|
|
this.Unknown_A8h = reader.ReadUInt32();
|
|
this.Unknown_ACh = reader.ReadUInt32();
|
|
this.Unknown_B0h = reader.ReadUInt32();
|
|
this.Unknown_B4h = reader.ReadUInt32();
|
|
this.Unknown_B8h = reader.ReadUInt32();
|
|
this.Unknown_BCh = reader.ReadUInt32();
|
|
this.Unknown_C0h = reader.ReadUInt32();
|
|
this.Unknown_C4h = reader.ReadUInt32();
|
|
this.Unknown_C8h = reader.ReadUInt32();
|
|
this.Unknown_CCh = reader.ReadUInt32();
|
|
|
|
// read reference data
|
|
this.Controller = reader.ReadBlockAt<CharacterClothController>(
|
|
this.ControllerPointer // offset
|
|
);
|
|
this.Bound = reader.ReadBlockAt<Bounds>(
|
|
this.BoundPointer // offset
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// update structure data
|
|
this.ControllerPointer = (ulong)(this.Controller != null ? this.Controller.FilePosition : 0);
|
|
this.BoundPointer = (ulong)(this.Bound != null ? this.Bound.FilePosition : 0);
|
|
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.WriteBlock(this.Unknown_10h);
|
|
writer.Write(this.ControllerPointer);
|
|
writer.Write(this.BoundPointer);
|
|
writer.WriteBlock(this.Unknown_30h);
|
|
writer.Write(this.Unknown_40h);
|
|
writer.Write(this.Unknown_44h);
|
|
writer.Write(this.Unknown_48h);
|
|
writer.Write(this.Unknown_4Ch);
|
|
writer.Write(this.Unknown_50h);
|
|
writer.Write(this.Unknown_54h);
|
|
writer.Write(this.Unknown_58h);
|
|
writer.Write(this.Unknown_5Ch);
|
|
writer.Write(this.Unknown_60h);
|
|
writer.Write(this.Unknown_64h);
|
|
writer.Write(this.Unknown_68h);
|
|
writer.Write(this.Unknown_6Ch);
|
|
writer.Write(this.Unknown_70h);
|
|
writer.Write(this.Unknown_74h);
|
|
writer.Write(this.Unknown_78h);
|
|
writer.Write(this.Unknown_7Ch);
|
|
writer.Write(this.Unknown_80h);
|
|
writer.Write(this.Unknown_84h);
|
|
writer.Write(this.Unknown_88h);
|
|
writer.Write(this.Unknown_8Ch);
|
|
writer.WriteBlock(this.Unknown_90h);
|
|
writer.Write(this.Unknown_A0h);
|
|
writer.Write(this.Unknown_A4h);
|
|
writer.Write(this.Unknown_A8h);
|
|
writer.Write(this.Unknown_ACh);
|
|
writer.Write(this.Unknown_B0h);
|
|
writer.Write(this.Unknown_B4h);
|
|
writer.Write(this.Unknown_B8h);
|
|
writer.Write(this.Unknown_BCh);
|
|
writer.Write(this.Unknown_C0h);
|
|
writer.Write(this.Unknown_C4h);
|
|
writer.Write(this.Unknown_C8h);
|
|
writer.Write(this.Unknown_CCh);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a list of data blocks which are referenced by this block.
|
|
/// </summary>
|
|
public override IResourceBlock[] GetReferences()
|
|
{
|
|
var list = new List<IResourceBlock>();
|
|
if (Controller != null) list.Add(Controller);
|
|
if (Bound != null) list.Add(Bound);
|
|
return list.ToArray();
|
|
}
|
|
|
|
public override Tuple<long, IResourceBlock>[] GetParts()
|
|
{
|
|
return new Tuple<long, IResourceBlock>[] {
|
|
new Tuple<long, IResourceBlock>(0x10, Unknown_10h),
|
|
new Tuple<long, IResourceBlock>(0x30, Unknown_30h),
|
|
new Tuple<long, IResourceBlock>(0x90, Unknown_90h)
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class CharacterClothController : ClothController
|
|
{
|
|
// characterClothController
|
|
public override long BlockLength => 0xF0;
|
|
|
|
// structure data
|
|
public ResourceSimpleList64_ushort Unknown_80h { get; set; }
|
|
public ResourceSimpleList64<Unknown_C_002> Unknown_90h { get; set; }
|
|
public uint Unknown_A0h { get; set; } // 0x3D23D70A
|
|
public uint Unknown_A4h { get; set; } // 0x00000000
|
|
public uint Unknown_A8h { get; set; } // 0x00000000
|
|
public uint Unknown_ACh { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_uint Unknown_B0h { get; set; }
|
|
public ResourceSimpleList64<Unknown_C_003> Unknown_C0h { get; set; }
|
|
public uint Unknown_D0h { get; set; } // 0x00000000
|
|
public uint Unknown_D4h { get; set; } // 0x00000000
|
|
public uint Unknown_D8h { get; set; } // 0x00000000
|
|
public uint Unknown_DCh { get; set; } // 0x3F800000
|
|
public ResourceSimpleList64_uint Unknown_E0h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
base.Read(reader, parameters);
|
|
|
|
// read structure data
|
|
this.Unknown_80h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_90h = reader.ReadBlock<ResourceSimpleList64<Unknown_C_002>>();
|
|
this.Unknown_A0h = reader.ReadUInt32();
|
|
this.Unknown_A4h = reader.ReadUInt32();
|
|
this.Unknown_A8h = reader.ReadUInt32();
|
|
this.Unknown_ACh = reader.ReadUInt32();
|
|
this.Unknown_B0h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
this.Unknown_C0h = reader.ReadBlock<ResourceSimpleList64<Unknown_C_003>>();
|
|
this.Unknown_D0h = reader.ReadUInt32();
|
|
this.Unknown_D4h = reader.ReadUInt32();
|
|
this.Unknown_D8h = reader.ReadUInt32();
|
|
this.Unknown_DCh = reader.ReadUInt32();
|
|
this.Unknown_E0h = reader.ReadBlock<ResourceSimpleList64_uint>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
base.Write(writer, parameters);
|
|
|
|
// write structure data
|
|
writer.WriteBlock(this.Unknown_80h);
|
|
writer.WriteBlock(this.Unknown_90h);
|
|
writer.Write(this.Unknown_A0h);
|
|
writer.Write(this.Unknown_A4h);
|
|
writer.Write(this.Unknown_A8h);
|
|
writer.Write(this.Unknown_ACh);
|
|
writer.WriteBlock(this.Unknown_B0h);
|
|
writer.WriteBlock(this.Unknown_C0h);
|
|
writer.Write(this.Unknown_D0h);
|
|
writer.Write(this.Unknown_D4h);
|
|
writer.Write(this.Unknown_D8h);
|
|
writer.Write(this.Unknown_DCh);
|
|
writer.WriteBlock(this.Unknown_E0h);
|
|
}
|
|
|
|
public override Tuple<long, IResourceBlock>[] GetParts()
|
|
{
|
|
return new Tuple<long, IResourceBlock>[] {
|
|
new Tuple<long, IResourceBlock>(0x80, Unknown_80h),
|
|
new Tuple<long, IResourceBlock>(0x90, Unknown_90h),
|
|
new Tuple<long, IResourceBlock>(0xB0, Unknown_B0h),
|
|
new Tuple<long, IResourceBlock>(0xC0, Unknown_C0h),
|
|
new Tuple<long, IResourceBlock>(0xE0, Unknown_E0h)
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class MorphController : ResourceSystemBlock
|
|
{
|
|
// pgBase
|
|
// phMorphController
|
|
public override long BlockLength => 0x40;
|
|
|
|
// structure data
|
|
public uint VFT { get; set; }
|
|
public uint Unknown_4h { get; set; } // 0x00000001
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public uint Unknown_10h { get; set; } // 0x00000000
|
|
public uint Unknown_14h { get; set; } // 0x00000000
|
|
public ulong Unknown_18h_Pointer { get; set; }
|
|
public ulong Unknown_20h_Pointer { get; set; }
|
|
public ulong Unknown_28h_Pointer { get; set; }
|
|
public uint Unknown_30h { get; set; } // 0x00000000
|
|
public uint Unknown_34h { get; set; } // 0x00000000
|
|
public uint Unknown_38h { get; set; } // 0x00000000
|
|
public uint Unknown_3Ch { get; set; } // 0x00000000
|
|
|
|
// reference data
|
|
public Unknown_C_006 Unknown_18h_Data { get; set; }
|
|
public Unknown_C_006 Unknown_20h_Data { get; set; }
|
|
public Unknown_C_006 Unknown_28h_Data { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.VFT = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h_Pointer = reader.ReadUInt64();
|
|
this.Unknown_20h_Pointer = reader.ReadUInt64();
|
|
this.Unknown_28h_Pointer = reader.ReadUInt64();
|
|
this.Unknown_30h = reader.ReadUInt32();
|
|
this.Unknown_34h = reader.ReadUInt32();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
|
|
// read reference data
|
|
this.Unknown_18h_Data = reader.ReadBlockAt<Unknown_C_006>(
|
|
this.Unknown_18h_Pointer // offset
|
|
);
|
|
this.Unknown_20h_Data = reader.ReadBlockAt<Unknown_C_006>(
|
|
this.Unknown_20h_Pointer // offset
|
|
);
|
|
this.Unknown_28h_Data = reader.ReadBlockAt<Unknown_C_006>(
|
|
this.Unknown_28h_Pointer // offset
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// update structure data
|
|
this.Unknown_18h_Pointer = (ulong)(this.Unknown_18h_Data != null ? this.Unknown_18h_Data.FilePosition : 0);
|
|
this.Unknown_20h_Pointer = (ulong)(this.Unknown_20h_Data != null ? this.Unknown_20h_Data.FilePosition : 0);
|
|
this.Unknown_28h_Pointer = (ulong)(this.Unknown_28h_Data != null ? this.Unknown_28h_Data.FilePosition : 0);
|
|
|
|
// write structure data
|
|
writer.Write(this.VFT);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h_Pointer);
|
|
writer.Write(this.Unknown_20h_Pointer);
|
|
writer.Write(this.Unknown_28h_Pointer);
|
|
writer.Write(this.Unknown_30h);
|
|
writer.Write(this.Unknown_34h);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a list of data blocks which are referenced by this block.
|
|
/// </summary>
|
|
public override IResourceBlock[] GetReferences()
|
|
{
|
|
var list = new List<IResourceBlock>();
|
|
if (Unknown_18h_Data != null) list.Add(Unknown_18h_Data);
|
|
if (Unknown_20h_Data != null) list.Add(Unknown_20h_Data);
|
|
if (Unknown_28h_Data != null) list.Add(Unknown_28h_Data);
|
|
return list.ToArray();
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class Unknown_C_001 : ResourceSystemBlock
|
|
{
|
|
public override long BlockLength => 0x10;
|
|
|
|
// structure data
|
|
public uint Unknown_0h { get; set; }
|
|
public uint Unknown_4h { get; set; }
|
|
public uint Unknown_8h { get; set; }
|
|
public uint Unknown_Ch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class Unknown_C_002 : ResourceSystemBlock
|
|
{
|
|
public override long BlockLength => 0x10;
|
|
|
|
// structure data
|
|
public uint Unknown_0h { get; set; }
|
|
public uint Unknown_4h { get; set; }
|
|
public uint Unknown_8h { get; set; }
|
|
public uint Unknown_Ch { get; set; } // 0x7F800001
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class Unknown_C_003 : ResourceSystemBlock
|
|
{
|
|
public override long BlockLength => 0x20;
|
|
|
|
// structure data
|
|
public uint Unknown_0h { get; set; }
|
|
public uint Unknown_4h { get; set; }
|
|
public uint Unknown_8h { get; set; }
|
|
public uint Unknown_Ch { get; set; }
|
|
public uint Unknown_10h { get; set; }
|
|
public uint Unknown_14h { get; set; }
|
|
public uint Unknown_18h { get; set; }
|
|
public uint Unknown_1Ch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h = reader.ReadUInt32();
|
|
this.Unknown_1Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h);
|
|
writer.Write(this.Unknown_1Ch);
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class Unknown_C_004 : ResourceSystemBlock
|
|
{
|
|
public override long BlockLength => 0x10;
|
|
|
|
// structure data
|
|
public ushort Unknown_0h { get; set; }
|
|
public ushort Unknown_2h { get; set; }
|
|
public float Unknown_4h { get; set; }
|
|
public float Unknown_8h { get; set; }
|
|
public float Unknown_Ch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt16();
|
|
this.Unknown_2h = reader.ReadUInt16();
|
|
this.Unknown_4h = reader.ReadSingle();
|
|
this.Unknown_8h = reader.ReadSingle();
|
|
this.Unknown_Ch = reader.ReadSingle();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_2h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class Unknown_C_006 : ResourceSystemBlock
|
|
{
|
|
public override long BlockLength => 0x190;
|
|
|
|
// structure data
|
|
public uint Unknown_0h { get; set; } // 0x00000000
|
|
public uint Unknown_4h { get; set; } // 0x00000000
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
public uint Unknown_10h { get; set; } // 0x00000000
|
|
public uint Unknown_14h { get; set; } // 0x00000000
|
|
public uint Unknown_18h { get; set; } // 0x00000000
|
|
public uint Unknown_1Ch { get; set; } // 0x00000000
|
|
public uint Unknown_20h { get; set; } // 0x00000000
|
|
public uint Unknown_24h { get; set; } // 0x00000000
|
|
public uint Unknown_28h { get; set; } // 0x00000000
|
|
public uint Unknown_2Ch { get; set; } // 0x00000000
|
|
public uint Unknown_30h { get; set; } // 0x00000000
|
|
public uint Unknown_34h { get; set; } // 0x00000000
|
|
public uint Unknown_38h { get; set; } // 0x00000000
|
|
public uint Unknown_3Ch { get; set; } // 0x00000000
|
|
public uint Unknown_40h { get; set; } // 0x00000000
|
|
public uint Unknown_44h { get; set; } // 0x00000000
|
|
public uint Unknown_48h { get; set; } // 0x00000000
|
|
public uint Unknown_4Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_s<Vector4> Unknown_50h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_60h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_70h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_80h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_90h { get; set; }
|
|
public ResourceSimpleList64_s<Vector4> Unknown_A0h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_B0h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_C0h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_D0h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_E0h { get; set; }
|
|
public uint Unknown_F0h { get; set; } // 0x00000000
|
|
public uint Unknown_F4h { get; set; } // 0x00000000
|
|
public uint Unknown_F8h { get; set; } // 0x00000000
|
|
public uint Unknown_FCh { get; set; } // 0x00000000
|
|
public uint Unknown_100h { get; set; } // 0x00000000
|
|
public uint Unknown_104h { get; set; } // 0x00000000
|
|
public uint Unknown_108h { get; set; } // 0x00000000
|
|
public uint Unknown_10Ch { get; set; } // 0x00000000
|
|
public uint Unknown_110h { get; set; } // 0x00000000
|
|
public uint Unknown_114h { get; set; } // 0x00000000
|
|
public uint Unknown_118h { get; set; } // 0x00000000
|
|
public uint Unknown_11Ch { get; set; } // 0x00000000
|
|
public uint Unknown_120h { get; set; } // 0x00000000
|
|
public uint Unknown_124h { get; set; } // 0x00000000
|
|
public uint Unknown_128h { get; set; } // 0x00000000
|
|
public uint Unknown_12Ch { get; set; } // 0x00000000
|
|
public uint Unknown_130h { get; set; } // 0x00000000
|
|
public uint Unknown_134h { get; set; } // 0x00000000
|
|
public uint Unknown_138h { get; set; } // 0x00000000
|
|
public uint Unknown_13Ch { get; set; } // 0x00000000
|
|
public uint Unknown_140h { get; set; } // 0x00000000
|
|
public uint Unknown_144h { get; set; } // 0x00000000
|
|
public uint Unknown_148h { get; set; } // 0x00000000
|
|
public uint Unknown_14Ch { get; set; } // 0x00000000
|
|
public ResourceSimpleList64_ushort Unknown_150h { get; set; }
|
|
public ResourceSimpleList64_ushort Unknown_160h { get; set; }
|
|
public uint Unknown_170h { get; set; } // 0x00000000
|
|
public uint Unknown_174h { get; set; } // 0x00000000
|
|
public uint Unknown_178h { get; set; } // 0x00000000
|
|
public uint Unknown_17Ch { get; set; } // 0x00000000
|
|
public uint Unknown_180h { get; set; }
|
|
public uint Unknown_184h { get; set; } // 0x00000000
|
|
public uint Unknown_188h { get; set; } // 0x00000000
|
|
public uint Unknown_18Ch { get; set; } // 0x00000000
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
this.Unknown_10h = reader.ReadUInt32();
|
|
this.Unknown_14h = reader.ReadUInt32();
|
|
this.Unknown_18h = reader.ReadUInt32();
|
|
this.Unknown_1Ch = reader.ReadUInt32();
|
|
this.Unknown_20h = reader.ReadUInt32();
|
|
this.Unknown_24h = reader.ReadUInt32();
|
|
this.Unknown_28h = reader.ReadUInt32();
|
|
this.Unknown_2Ch = reader.ReadUInt32();
|
|
this.Unknown_30h = reader.ReadUInt32();
|
|
this.Unknown_34h = reader.ReadUInt32();
|
|
this.Unknown_38h = reader.ReadUInt32();
|
|
this.Unknown_3Ch = reader.ReadUInt32();
|
|
this.Unknown_40h = reader.ReadUInt32();
|
|
this.Unknown_44h = reader.ReadUInt32();
|
|
this.Unknown_48h = reader.ReadUInt32();
|
|
this.Unknown_4Ch = reader.ReadUInt32();
|
|
this.Unknown_50h = reader.ReadBlock<ResourceSimpleList64_s<Vector4>>();
|
|
this.Unknown_60h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_70h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_80h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_90h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_A0h = reader.ReadBlock<ResourceSimpleList64_s<Vector4>>();
|
|
this.Unknown_B0h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_C0h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_D0h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_E0h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_F0h = reader.ReadUInt32();
|
|
this.Unknown_F4h = reader.ReadUInt32();
|
|
this.Unknown_F8h = reader.ReadUInt32();
|
|
this.Unknown_FCh = reader.ReadUInt32();
|
|
this.Unknown_100h = reader.ReadUInt32();
|
|
this.Unknown_104h = reader.ReadUInt32();
|
|
this.Unknown_108h = reader.ReadUInt32();
|
|
this.Unknown_10Ch = reader.ReadUInt32();
|
|
this.Unknown_110h = reader.ReadUInt32();
|
|
this.Unknown_114h = reader.ReadUInt32();
|
|
this.Unknown_118h = reader.ReadUInt32();
|
|
this.Unknown_11Ch = reader.ReadUInt32();
|
|
this.Unknown_120h = reader.ReadUInt32();
|
|
this.Unknown_124h = reader.ReadUInt32();
|
|
this.Unknown_128h = reader.ReadUInt32();
|
|
this.Unknown_12Ch = reader.ReadUInt32();
|
|
this.Unknown_130h = reader.ReadUInt32();
|
|
this.Unknown_134h = reader.ReadUInt32();
|
|
this.Unknown_138h = reader.ReadUInt32();
|
|
this.Unknown_13Ch = reader.ReadUInt32();
|
|
this.Unknown_140h = reader.ReadUInt32();
|
|
this.Unknown_144h = reader.ReadUInt32();
|
|
this.Unknown_148h = reader.ReadUInt32();
|
|
this.Unknown_14Ch = reader.ReadUInt32();
|
|
this.Unknown_150h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_160h = reader.ReadBlock<ResourceSimpleList64_ushort>();
|
|
this.Unknown_170h = reader.ReadUInt32();
|
|
this.Unknown_174h = reader.ReadUInt32();
|
|
this.Unknown_178h = reader.ReadUInt32();
|
|
this.Unknown_17Ch = reader.ReadUInt32();
|
|
this.Unknown_180h = reader.ReadUInt32();
|
|
this.Unknown_184h = reader.ReadUInt32();
|
|
this.Unknown_188h = reader.ReadUInt32();
|
|
this.Unknown_18Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
writer.Write(this.Unknown_10h);
|
|
writer.Write(this.Unknown_14h);
|
|
writer.Write(this.Unknown_18h);
|
|
writer.Write(this.Unknown_1Ch);
|
|
writer.Write(this.Unknown_20h);
|
|
writer.Write(this.Unknown_24h);
|
|
writer.Write(this.Unknown_28h);
|
|
writer.Write(this.Unknown_2Ch);
|
|
writer.Write(this.Unknown_30h);
|
|
writer.Write(this.Unknown_34h);
|
|
writer.Write(this.Unknown_38h);
|
|
writer.Write(this.Unknown_3Ch);
|
|
writer.Write(this.Unknown_40h);
|
|
writer.Write(this.Unknown_44h);
|
|
writer.Write(this.Unknown_48h);
|
|
writer.Write(this.Unknown_4Ch);
|
|
writer.WriteBlock(this.Unknown_50h);
|
|
writer.WriteBlock(this.Unknown_60h);
|
|
writer.WriteBlock(this.Unknown_70h);
|
|
writer.WriteBlock(this.Unknown_80h);
|
|
writer.WriteBlock(this.Unknown_90h);
|
|
writer.WriteBlock(this.Unknown_A0h);
|
|
writer.WriteBlock(this.Unknown_B0h);
|
|
writer.WriteBlock(this.Unknown_C0h);
|
|
writer.WriteBlock(this.Unknown_D0h);
|
|
writer.WriteBlock(this.Unknown_E0h);
|
|
writer.Write(this.Unknown_F0h);
|
|
writer.Write(this.Unknown_F4h);
|
|
writer.Write(this.Unknown_F8h);
|
|
writer.Write(this.Unknown_FCh);
|
|
writer.Write(this.Unknown_100h);
|
|
writer.Write(this.Unknown_104h);
|
|
writer.Write(this.Unknown_108h);
|
|
writer.Write(this.Unknown_10Ch);
|
|
writer.Write(this.Unknown_110h);
|
|
writer.Write(this.Unknown_114h);
|
|
writer.Write(this.Unknown_118h);
|
|
writer.Write(this.Unknown_11Ch);
|
|
writer.Write(this.Unknown_120h);
|
|
writer.Write(this.Unknown_124h);
|
|
writer.Write(this.Unknown_128h);
|
|
writer.Write(this.Unknown_12Ch);
|
|
writer.Write(this.Unknown_130h);
|
|
writer.Write(this.Unknown_134h);
|
|
writer.Write(this.Unknown_138h);
|
|
writer.Write(this.Unknown_13Ch);
|
|
writer.Write(this.Unknown_140h);
|
|
writer.Write(this.Unknown_144h);
|
|
writer.Write(this.Unknown_148h);
|
|
writer.Write(this.Unknown_14Ch);
|
|
writer.WriteBlock(this.Unknown_150h);
|
|
writer.WriteBlock(this.Unknown_160h);
|
|
writer.Write(this.Unknown_170h);
|
|
writer.Write(this.Unknown_174h);
|
|
writer.Write(this.Unknown_178h);
|
|
writer.Write(this.Unknown_17Ch);
|
|
writer.Write(this.Unknown_180h);
|
|
writer.Write(this.Unknown_184h);
|
|
writer.Write(this.Unknown_188h);
|
|
writer.Write(this.Unknown_18Ch);
|
|
}
|
|
|
|
public override Tuple<long, IResourceBlock>[] GetParts()
|
|
{
|
|
return new Tuple<long, IResourceBlock>[] {
|
|
new Tuple<long, IResourceBlock>(0x50, Unknown_50h),
|
|
new Tuple<long, IResourceBlock>(0x60, Unknown_60h),
|
|
new Tuple<long, IResourceBlock>(0x70, Unknown_70h),
|
|
new Tuple<long, IResourceBlock>(0x80, Unknown_80h),
|
|
new Tuple<long, IResourceBlock>(0x90, Unknown_90h),
|
|
new Tuple<long, IResourceBlock>(0xA0, Unknown_A0h),
|
|
new Tuple<long, IResourceBlock>(0xB0, Unknown_B0h),
|
|
new Tuple<long, IResourceBlock>(0xC0, Unknown_C0h),
|
|
new Tuple<long, IResourceBlock>(0xD0, Unknown_D0h),
|
|
new Tuple<long, IResourceBlock>(0xE0, Unknown_E0h),
|
|
new Tuple<long, IResourceBlock>(0x150, Unknown_150h),
|
|
new Tuple<long, IResourceBlock>(0x160, Unknown_160h)
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[TypeConverter(typeof(ExpandableObjectConverter))] public class Unknown_C_007 : ResourceSystemBlock
|
|
{
|
|
public override long BlockLength
|
|
{
|
|
get { return 16; }
|
|
}
|
|
|
|
// structure data
|
|
public uint Unknown_0h { get; set; } // 0x00000000
|
|
public uint Unknown_4h { get; set; } // 0x00000000
|
|
public uint Unknown_8h { get; set; } // 0x00000000
|
|
public uint Unknown_Ch { get; set; } // 0x00000000
|
|
|
|
/// <summary>
|
|
/// Reads the data-block from a stream.
|
|
/// </summary>
|
|
public override void Read(ResourceDataReader reader, params object[] parameters)
|
|
{
|
|
// read structure data
|
|
this.Unknown_0h = reader.ReadUInt32();
|
|
this.Unknown_4h = reader.ReadUInt32();
|
|
this.Unknown_8h = reader.ReadUInt32();
|
|
this.Unknown_Ch = reader.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the data-block to a stream.
|
|
/// </summary>
|
|
public override void Write(ResourceDataWriter writer, params object[] parameters)
|
|
{
|
|
// write structure data
|
|
writer.Write(this.Unknown_0h);
|
|
writer.Write(this.Unknown_4h);
|
|
writer.Write(this.Unknown_8h);
|
|
writer.Write(this.Unknown_Ch);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|