Make it easier to debug .obj file parsing errors
This commit is contained in:
@@ -92,7 +92,7 @@ func LoadObject(filename string) (*Object, error) {
|
|||||||
|
|
||||||
out := &Object{Filename: filename}
|
out := &Object{Filename: filename}
|
||||||
if err := binary.Read(f, binary.LittleEndian, &out.ObjectHeader); err != nil {
|
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 {
|
if err := out.ObjectHeader.Check(); err != nil {
|
||||||
@@ -102,30 +102,30 @@ func LoadObject(filename string) (*Object, error) {
|
|||||||
// Now load all sprites into memory
|
// Now load all sprites into memory
|
||||||
dir := make([]dirEntry, out.NumSprites)
|
dir := make([]dirEntry, out.NumSprites)
|
||||||
if _, err := f.Seek(int64(out.DirOffset), io.SeekStart); err != nil {
|
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 {
|
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 {
|
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 {
|
if err := dirEntry.Check(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := f.Seek(int64(out.DataOffset+dirEntry.Offset), io.SeekStart); err != nil {
|
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{}
|
sprite := &Sprite{}
|
||||||
|
|
||||||
if err := binary.Read(f, binary.LittleEndian, &sprite.SpriteHeader); err != nil {
|
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 {
|
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++ {
|
for y := 0; y < int(sprite.Height); y++ {
|
||||||
if row, err := buf.ReadBytes(0x00); err != nil {
|
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 {
|
} else {
|
||||||
sprite.Rows[y] = row
|
sprite.Rows[y] = row
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user