Make it easier to debug .obj file parsing errors

This commit is contained in:
2018-03-24 23:38:12 +00:00
parent 4d4c4da892
commit 285ae5d292

View File

@@ -92,7 +92,7 @@ func LoadObject(filename string) (*Object, error) {
out := &Object{Filename: filename}
if err := binary.Read(f, binary.LittleEndian, &out.ObjectHeader); err != nil {
return nil, err
return nil, fmt.Errorf("Reading object header: %v", err)
}
if err := out.ObjectHeader.Check(); err != nil {
@@ -102,30 +102,30 @@ func LoadObject(filename string) (*Object, error) {
// Now load all sprites into memory
dir := make([]dirEntry, out.NumSprites)
if _, err := f.Seek(int64(out.DirOffset), io.SeekStart); err != nil {
return nil, err
return nil, fmt.Errorf("Seeking to sprite directory: %v", err)
}
if err := binary.Read(f, binary.LittleEndian, &dir); err != nil {
return nil, err
return nil, fmt.Errorf("Reading sprite directory: %v", err)
}
if _, err := f.Seek(int64(out.DataOffset), io.SeekStart); err != nil {
return nil, err
return nil, fmt.Errorf("Seeking to sprites: %v", err)
}
for _, dirEntry := range dir {
for i, dirEntry := range dir {
if err := dirEntry.Check(); err != nil {
return nil, err
}
if _, err := f.Seek(int64(out.DataOffset+dirEntry.Offset), io.SeekStart); err != nil {
return nil, err
return nil, fmt.Errorf("Seeking to sprite %v: %v", i, err)
}
sprite := &Sprite{}
if err := binary.Read(f, binary.LittleEndian, &sprite.SpriteHeader); err != nil {
return nil, err
return nil, fmt.Errorf("Reading sprite %v header: %v", i, err)
}
if err := sprite.Check(dirEntry.Size); err != nil {
@@ -140,7 +140,7 @@ func LoadObject(filename string) (*Object, error) {
for y := 0; y < int(sprite.Height); y++ {
if row, err := buf.ReadBytes(0x00); err != nil {
return nil, err
return nil, fmt.Errorf("Reading row %v for sprite %v: %v", y, i, err)
} else {
sprite.Rows[y] = row
}