Remove the blacklist from the .obj loader
This commit is contained in:
@@ -8,71 +8,9 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
// FIXME: My poor understanding of the .obj format prevents me from
|
|
||||||
// successfully loading these files
|
|
||||||
objBlacklist = []string{
|
|
||||||
/* Lots of unexpected magic values, disable the check for now
|
|
||||||
"15_rocks.obj", // Unexpected magic value: 19726564 (expected 21102801)
|
|
||||||
"2_cath.obj", // Unexpected magic value: 21364973 (expected 21102801)
|
|
||||||
"2nd_flor.obj", // Unexpected magic value: 22151377 (expected 21102801)
|
|
||||||
"3_cath.obj", // Unexpected magic value: 21102809 (expected 21102801)
|
|
||||||
"4_cath.obj", // Unexpected magic value: 21496017 (expected 21102801)
|
|
||||||
"BODIES.obj", // Unexpected magic value: 21627103 (expected 21102801)
|
|
||||||
"BRDG_TIL.OBJ", // Unexpected magic value: 17957074 (expected 21102801)
|
|
||||||
"Cheveron.obj", // Unexpected magic value: 10879118 (expected 21102801)
|
|
||||||
|
|
||||||
"Heavy_Plasma_Effect.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Heavy_Plasma_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Heavy_Plasma_Pain_Effect.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Heavy_Plasma_Pain_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
|
|
||||||
"Ht_drt.obj", // Unexpected magic value: 22806737 (expected 21102801)
|
|
||||||
"Ht_grs.obj", // Unexpected magic value: 22806737 (expected 21102801)
|
|
||||||
|
|
||||||
"IVY02.OBJ", // Unexpected magic value: 18481399 (expected 21102801)
|
|
||||||
"J_top2.obj", // Unexpected magic value: 22347993 (expected 21102801)
|
|
||||||
|
|
||||||
"Lascannon_Effect.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Lascannon_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Lascannon_Pain_Effect.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Lascannon_Pain_Mask.obj", // Unexpected magic value: 14811136 (expected 21102801)
|
|
||||||
|
|
||||||
"Man_Shadow.obj", // Unexpected magic value: 22479091 (expected 21102801)
|
|
||||||
|
|
||||||
"Melta_Effect.obj", // Unexpected magic value: 14745777 (expected 21102801)
|
|
||||||
"Melta_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Melta_Pain_Effect.obj", // Unexpected magic value: 14745777 (expected 21102801)
|
|
||||||
"Melta_Pain_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
|
|
||||||
"Multi_Melta_Effect.obj",
|
|
||||||
"Multi_Melta_Mask.obj",
|
|
||||||
"Multi_Melta_Pain_Effect.obj",
|
|
||||||
"Multi_Melta_Pain_Mask.obj",
|
|
||||||
|
|
||||||
"Plasma_Effect.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Plasma_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Plasma_Pain_Effect.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
"Plasma_Pain_Mask.obj", // Unexpected magic value: 14811345 (expected 21102801)
|
|
||||||
|
|
||||||
"TZEENTCH.OBJ", // Unexpected magic value: 18088209 (expected 21102801)
|
|
||||||
|
|
||||||
"altar.obj", // Unexpected magic value: 18219222 (expected 21102801)
|
|
||||||
*/
|
|
||||||
|
|
||||||
"j_tree2.obj", // ObjectHeader is completely empty
|
|
||||||
"inven.obj", // Main header padding contains unknown values: [134744072 134744072 134744072]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
sort.Strings(objBlacklist)
|
|
||||||
}
|
|
||||||
|
|
||||||
type SpriteHeader struct {
|
type SpriteHeader struct {
|
||||||
Unknown0 uint32
|
Unknown0 uint32
|
||||||
Width uint16 // FIXME: I'm not certain this is what these are.
|
Width uint16 // FIXME: I'm not certain this is what these are.
|
||||||
@@ -116,11 +54,11 @@ func (d dirEntry) Check() error {
|
|||||||
|
|
||||||
// ObjectHeader totals 24 bytes on disk
|
// ObjectHeader totals 24 bytes on disk
|
||||||
type ObjectHeader struct {
|
type ObjectHeader struct {
|
||||||
NumSprites uint32 // How many sprites does this object have?
|
NumSprites uint32 // How many sprites does this object have?
|
||||||
DirOffset uint32 // Offset of the directory block
|
DirOffset uint32 // Offset of the directory block
|
||||||
DirSize uint32 // Size of the directory block. 8 * NumSprites
|
DirSize uint32 // Size of the directory block. 8 * NumSprites
|
||||||
DataOffset uint32 // Offset of the sprite data block
|
DataOffset uint32 // Offset of the sprite data block
|
||||||
DataSize uint32 // Size of the sprite data block
|
DataSize uint32 // Size of the sprite data block
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h ObjectHeader) ExpectedDirSize() uint32 {
|
func (h ObjectHeader) ExpectedDirSize() uint32 {
|
||||||
@@ -141,7 +79,7 @@ type Object struct {
|
|||||||
ObjectHeader
|
ObjectHeader
|
||||||
|
|
||||||
Filename string
|
Filename string
|
||||||
Sprites []*Sprite
|
Sprites []*Sprite
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadObject(filename string) (*Object, error) {
|
func LoadObject(filename string) (*Object, error) {
|
||||||
@@ -234,11 +172,6 @@ func LoadObjects(dir string) (map[string]*Object, error) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
i := sort.SearchStrings(objBlacklist, basename)
|
|
||||||
if i >= len(objBlacklist) || objBlacklist[i] == basename {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
obj, err := LoadObject(filename)
|
obj, err := LoadObject(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%s: %v", filename, err)
|
return nil, fmt.Errorf("%s: %v", filename, err)
|
||||||
|
Reference in New Issue
Block a user