public override void Open(HSDReader Reader) { var boneTableOffset = Reader.ReadUInt32(); var matrixTableOffset = Reader.ReadUInt32(); var count = Reader.ReadUInt32(); if (boneTableOffset != 0) { Reader.Seek(boneTableOffset); for (int i = 0; i < count; i++) { BoneIDs.Add(Reader.ReadInt32()); } } if (matrixTableOffset != 0) { Reader.Seek(matrixTableOffset); for (int i = 0; i < count; i++) { HSD_Matrix3x3 mat = new HSD_Matrix3x3(); mat.Open(Reader); Matrices.Add(mat); } } }
public override void Open(HSDReader Reader) { var offset = Reader.ReadUInt32(); var count = Reader.ReadInt32(); if (offset == 0) { return; } Reader.Seek(offset); for (int i = 0; i < count; i++) { Indices.Add(Reader.ReadInt32()); } }
public override void Open(HSDReader Reader) { Type = Reader.ReadInt16(); int PathPointCount = Reader.ReadInt16(); Tension = Reader.ReadSingle(); uint PointTableOffset = Reader.ReadUInt32(); TotalLength = Reader.ReadSingle(); uint segmentLengthOffset = Reader.ReadUInt32(); if (Reader.ReadInt32() != 0) // this is a pointer to a float array of length 5? { Console.WriteLine("Resave not supported"); //throw new NotSupportedException("Dat not supported"); } Reader.Seek(PointTableOffset); for (int i = 0; i < PathPointCount; i++) { Points.Add(new GXVector3(Reader.ReadSingle(), Reader.ReadSingle(), Reader.ReadSingle())); } Reader.Seek(segmentLengthOffset); for (int i = 0; i < PathPointCount; i++) { SegmentLengths.Add(Reader.ReadSingle()); } }
public override void Open(HSDReader Reader) { var off1 = Reader.ReadUInt32(); var count1 = Reader.ReadInt32(); var count2 = Reader.ReadInt32(); var count3 = Reader.ReadInt32(); for (int i = 0; i < count1; i++) { Reader.Seek(off1 + (uint)(0x48 * i)); var region = new KAR_GrFogRegion(); region.Open(Reader); FogRegions.Add(region); } if (count2 != -1 || count3 != -1) { throw new NotSupportedException("Fog format not supported"); } }
public override void Open(HSDReader Reader) { var dataoff = Reader.ReadUInt32(); var datacount = Reader.ReadInt32(); var datastaticoff = Reader.ReadUInt32(); var datastaticcount = Reader.ReadInt32(); var datacommonoff = Reader.ReadUInt32(); var datacommoncount = Reader.ReadInt32(); Reader.Seek(dataoff); for (int i = 0; i < datacount; i++) { var off = Reader.ReadUInt32(); var temp = Reader.Position(); Reader.Seek(off); var v = new KAR_GrYakumonoData(); v.Open(Reader); YakuData.Add(v); Reader.Seek(temp); } Reader.Seek(datastaticoff); for (int i = 0; i < datastaticcount; i++) { var off = Reader.ReadUInt32(); var temp = Reader.Position(); Reader.Seek(off); var v = new KAR_GrYakumonoData(); v.Open(Reader); YakuStaticData.Add(v); Reader.Seek(temp); } for (int i = 0; i < datacommoncount; i++) { Reader.Seek(datacommonoff + (uint)(i * 12)); var com = new KAR_GrYakumonoCommonData(); com.Open(Reader); YakuCommonData.Add(com); } }
public override void Open(HSDReader Reader) { Name = (GXAttribName)Reader.ReadUInt32(); AttributeType = (GXAttribType)Reader.ReadUInt32(); CompCount = (GXCompCnt)Reader.ReadInt32(); CompType = (GXCompType)Reader.ReadUInt32(); Scale = Reader.ReadByte(); Reader.ReadByte();//Padding Stride = Reader.ReadUInt16(); Offset = Reader.ReadUInt32(); }
// public override void Open(HSDReader Reader) { var modelGroupOffset = Reader.ReadUInt32(); var modelGroupCount = Reader.ReadInt32(); var unk1GroupOffset = Reader.ReadUInt32(); var unk1GroupCount = Reader.ReadInt32(); var unk2GroupOffset = Reader.ReadUInt32(); var unk2GroupCount = Reader.ReadInt32(); var lightGroupOffset = Reader.ReadUInt32(); var lightGroupCount = Reader.ReadInt32(); var unk4GroupOffset = Reader.ReadUInt32(); var unk4GroupCount = Reader.ReadInt32(); var unk5GroupOffset = Reader.ReadUInt32(); var unk5GroupCount = Reader.ReadInt32(); for (int i = 0; i < modelGroupCount; i++) { Reader.Seek(modelGroupOffset + (uint)(12 * i)); SBM_GrMapModelGroup mg = new SBM_GrMapModelGroup(); mg.Open(Reader); ModelGroups.Add(mg); } for (int i = 0; i < modelGroupCount; i++) { Reader.Seek(lightGroupOffset + (uint)(i * 8)); SBM_GrMapLight mg = new SBM_GrMapLight(); mg.Open(Reader); Lights.Add(mg); } }
public override void Open(HSDReader Reader) { var vertexOffset = Reader.ReadUInt32(); var vertexCount = Reader.ReadInt32(); var faceOffset = Reader.ReadUInt32(); var faceCount = Reader.ReadInt32(); var jointOffset = Reader.ReadUInt32(); var jointCount = Reader.ReadInt32(); var zonevertexOffset = Reader.ReadUInt32(); var zonevertexCount = Reader.ReadInt32(); var zonefaceOffset = Reader.ReadUInt32(); var zonefaceCount = Reader.ReadInt32(); var zonejointOffset = Reader.ReadUInt32(); var zonejointCount = Reader.ReadInt32(); Reader.Seek(vertexOffset); for (int i = 0; i < vertexCount; i++) { Vertices.Add(new GXVector3(Reader.ReadSingle(), Reader.ReadSingle(), Reader.ReadSingle())); } Reader.Seek(faceOffset); for (int i = 0; i < faceCount; i++) { KAR_CollisionTriangle tri = new KAR_CollisionTriangle(); tri.Open(Reader); Faces.Add(tri); } Reader.Seek(jointOffset); for (int i = 0; i < jointCount; i++) { KAR_CollisionJoint joint = new KAR_CollisionJoint(); joint.Open(Reader); Joints.Add(joint); } Reader.Seek(zonevertexOffset); for (int i = 0; i < zonevertexCount; i++) { ZoneVertices.Add(new GXVector3(Reader.ReadSingle(), Reader.ReadSingle(), Reader.ReadSingle())); } Reader.Seek(zonefaceOffset); for (int i = 0; i < zonefaceCount; i++) { KAR_ZoneCollisionTriangle tri = new KAR_ZoneCollisionTriangle(); tri.Open(Reader); ZoneFaces.Add(tri); } Reader.Seek(zonejointOffset); for (int i = 0; i < zonejointCount; i++) { KAR_ZoneCollisionJoint joint = new KAR_ZoneCollisionJoint(); joint.Open(Reader); ZoneJoints.Add(joint); } }
public override void Open(HSDReader Reader) { var offset = Reader.ReadUInt32(); var count = Reader.ReadInt32(); for (int i = 0; i < count; i++) { Reader.Seek(offset + (uint)(i * 0x18)); var spline = new KAR_GrSpline(); spline.Open(Reader); Splines.Add(spline); } }
public override void Open(HSDReader Reader) { Type = Reader.ReadInt32(); if (Type == -1) { MatAnimJoint = Reader.ReadObject <HSD_MatAnimJoint>(Reader.ReadUInt32()); } else { Reader.ReadInt32(); // nothing } FrameCount = Reader.ReadSingle(); uint TrackCountOffset = Reader.ReadUInt32(); uint TrackOffset = Reader.ReadUInt32(); Reader.Seek(TrackCountOffset); List <byte> TrackCounts = new List <byte>(); byte TrackCount; while ((TrackCount = Reader.ReadByte()) != 0xFF) { TrackCounts.Add(TrackCount); } int track = 0; for (int i = 0; i < TrackCounts.Count; i++) { HSD_AnimNode Node = new HSD_AnimNode(); Nodes.Add(Node); for (int j = 0; j < TrackCounts[i]; j++) { Reader.Seek((uint)(TrackOffset + 0xC * track++)); HSD_Track t = new HSD_Track(); t.Open(Reader); Node.Tracks.Add(t); } } }
public override void Open(HSDReader Reader) { var rootNodeOffset = Reader.ReadUInt32(); var offset = Reader.ReadUInt32(); var count = Reader.ReadInt32(); RootNode = Reader.ReadObject <HSD_JOBJ>(rootNodeOffset); Reader.Seek(offset); for (int i = 0; i < count; i++) { SBM_GrMapModelTable table = new SBM_GrMapModelTable(); table.Open(Reader); Tables.Add(table); } }
public override void Open(HSDReader Reader) { Vertices.Clear(); Links.Clear(); AreaTables.Clear(); var vertexOffset = Reader.ReadUInt32(); var vertexCount = Reader.ReadInt32(); var linkOffset = Reader.ReadUInt32(); var linkCount = Reader.ReadInt32(); Unknown1 = Reader.ReadInt32(); Unknown2 = Reader.ReadInt32(); Unknown3 = Reader.ReadInt16(); Unknown4 = Reader.ReadInt16(); Unknown5 = Reader.ReadInt16(); Unknown6 = Reader.ReadInt16(); Unknown7 = Reader.ReadInt32(); var polyOffset = Reader.ReadUInt32(); var polyCount = Reader.ReadInt32(); Unknown8 = Reader.ReadInt32(); Reader.Seek(vertexOffset); for (int i = 0; i < vertexCount; i++) { var v = new SBM_GrCollVertex(); v.Open(Reader); Vertices.Add(v); } Reader.Seek(linkOffset); for (int i = 0; i < linkCount; i++) { var v = new SBM_GrCollLink(); v.Open(Reader); Links.Add(v); } Reader.Seek(polyOffset); for (int i = 0; i < polyCount; i++) { var v = new SBM_GrCollAreaTable(); v.Open(Reader); AreaTables.Add(v); } }
public override void Open(HSDReader Reader) { if (Reader.ReadInt32() != 0) { throw new NotSupportedException("Yaku all not supported"); } var off = Reader.ReadUInt32(); while (off != 0) { var temp = Reader.Position(); Reader.Seek(off); SBM_YakuAllNode node = new SBM_YakuAllNode(); node.Open(Reader); Nodes.Add(node); Reader.Seek(temp); off = Reader.ReadUInt32(); } }
public override void Open(HSDReader Reader) { var start = Reader.Position(); var count = Reader.ReadInt32(); for (int i = 0; i < count; i++) { var off = Reader.ReadUInt32(); var temp = Reader.Position(); Reader.Seek(start + off); SBM_GrMapSpriteSheet sheet = new SBM_GrMapSpriteSheet(); sheet.Open(Reader, start); Sheets.Add(sheet); Reader.Seek(temp); } // there is sometimes padding with values in it // there is a 0xC section that has 0, 0x20, and some number }
public void Open(HSDReader Reader, uint offset) { var mipCount = Reader.ReadInt32(); Format = Reader.ReadInt32(); Flag = Reader.ReadInt32(); Width = Reader.ReadInt32(); Height = Reader.ReadInt32(); Depth = Reader.ReadInt32(); uint[] mipOffsets = new uint[mipCount]; for (int i = 0; i < mipCount; i++) { mipOffsets[i] = Reader.ReadUInt32(); } }
public override void Open(HSDReader Reader) { var offset = Reader.ReadUInt32(); var count = Reader.ReadInt32(); uint[] offsets = new uint[count]; Reader.Seek(offset); for (int i = 0; i < count; i++) { offsets[i] = Reader.ReadUInt32(); } for (int i = 0; i < count; i++) { if (offsets[i] == 0) { continue; } Reader.Seek(offsets[i]); var path = new HSD_Spline(); path.Open(Reader); Paths.Add(path); } }
public override void Open(HSDReader Reader) { var partitionPointer = Reader.ReadUInt32(); var partitionCount = Reader.ReadInt16(); Reader.ReadInt16(); { var temp = Reader.Position(); Reader.Seek(partitionPointer); uint[] pointers = new uint[partitionCount]; for (int i = 0; i < partitionCount; i++) { pointers[i] = Reader.ReadUInt32(); } for (int i = 0; i < partitionCount; i++) { Reader.Seek(pointers[i]); KAR_GrPartition p = new KAR_GrPartition(); p.Open(Reader); Partitions.Add(p); } Reader.Seek(temp); } // now for a few sections // there are 5 // 1 - collidable triangles // 2 - ? related to pads // 3 - ? // 4 - ? // 5 - ? // 32 Data Type // 32 pointer // 16 count // 16 padding { var dataType = Reader.ReadInt32(); var pointer = Reader.ReadUInt32(); var count = Reader.ReadInt16(); Reader.ReadInt16(); var temp = Reader.Position(); Reader.Seek(pointer); for (int i = 0; i < count; i++) { CollidableTriangles.Add(Reader.ReadInt16()); } Reader.Seek(temp); } { //TODO: var dataType = Reader.ReadInt32(); var pointer = Reader.ReadUInt32(); var count = Reader.ReadInt16(); Reader.ReadInt16(); var temp = Reader.Position(); Reader.Seek(pointer); for (int i = 0; i < count; i++) { UnknownIndices.Add(Reader.ReadInt16()); } Reader.Seek(temp); } { //TODO: var dataType = Reader.ReadInt32(); var pointer = Reader.ReadUInt32(); var count = Reader.ReadInt16(); Reader.ReadInt16(); var temp = Reader.Position(); Reader.Seek(pointer); for (int i = 0; i < count; i++) { UnknownIndices2.Add(Reader.ReadInt16()); } Reader.Seek(temp); } { //TODO: var dataType = Reader.ReadInt32(); var pointer = Reader.ReadUInt32(); var count = Reader.ReadInt16(); Reader.ReadInt16(); } { //TODO: var dataType = Reader.ReadInt32(); var pointer = Reader.ReadUInt32(); var count = Reader.ReadInt16(); Reader.ReadInt16(); } if (Reader.ReadInt32() != 0) { throw new NotSupportedException("Dat format not supported"); } // one more bool section, usually all false? { //TODO: var dataType = Reader.ReadInt32(); var pointer = Reader.ReadUInt32(); var count = Reader.ReadInt16(); Reader.ReadInt16(); var temp = Reader.Position(); Reader.Seek(pointer); // TODO: bit reader Reader.Seek(temp); } }