public GX_Object_0x48(BinaryReader reader) : base(reader) { header_const = new GX_Header_Data(0x48, 0x54, 16 * 4); header_pointer = new GX_Pointer(header_const, reader); obj = new BaseObject[header_pointer.count]; for (uint ui = 0; ui < obj.Length; ui++) { obj[ui] = new BaseObject(reader, header_pointer.address + ui * BaseObject.size); } }
public SplineDataClass(BinaryReader reader) : base(reader) { // Initialize GX_Data header_const = new GX_Header_Data(0x08, 0x0C, SplineData.Base.size); header_pointer = new GX_Pointer(header_const, reader); #region Load EditorData & EditorDataTable Base[] getAddresses = new Base[header_pointer.count]; reader.BaseStream.Seek(header_pointer.address, SeekOrigin.Begin); //Debug.LogFormat("{0}:{1}\n{2}:{3}", header_const.address, header_instance.address, header_const.count, header_instance.count); for (int i = 0; i < getAddresses.Length; i++) { getAddresses[i] = new Base(reader); } EditorData = new List <EditorData>(); EditorDataTable = new Dictionary <uint, int>(); foreach (Base c in getAddresses) { // If the index is not yet referenced if (!EditorDataTable.ContainsKey(c.EditorDataAddress)) { // Dredge data from file, add it to list EditorData.Add(new EditorData(reader, c.EditorDataAddress, null)); // Add this index into table // Index is EditorDataTable.Count (0, 1, 2...), references the new index made above EditorDataTable.Add(c.EditorDataAddress, EditorDataTable.Count); } } #endregion #region Load Base and all sub components Base = new Base[header_pointer.count]; for (uint i = 0; i < (uint)Base.Length; i++) { Base[i] = new Base( reader, header_pointer.address + i * header_const.size, // i * size indicates the address for the next entry EditorDataTable ); } #endregion }
public AiEffects(BinaryReader reader) : base(reader) { header_const = new GX_Header_Data(0x10, 0x14, 5u * 4); header_pointer = new GX_Pointer(header_const, reader); }