added opencorner tiles
[vrlugburz] / src / tileset.c
index 7be9c15..28adf31 100644 (file)
@@ -21,6 +21,8 @@ int load_tileset(struct tileset *tset, const char *fname)
        int type;
        float xform[16], *vec;
 
+       memset(tset, 0, sizeof *tset);
+
        if(!(ts = ts_load(fname))) {
                fprintf(stderr, "failed to load tileset: %s\n", fname);
                return -1;
@@ -49,6 +51,8 @@ int load_tileset(struct tileset *tset, const char *fname)
        tset->fname = strdup(fname);
        tset->name = strdup(ts_get_attr_str(ts, "name", fname));
 
+       tset->tile_size = ts_get_attr_num(ts, "tilesize", DEF_TILE_SIZE);
+
        iter = ts->child_list;
        while(iter) {
                node = iter;
@@ -75,7 +79,7 @@ int load_tileset(struct tileset *tset, const char *fname)
 
                        cgm_midentity(xform);
                        if((vec = ts_get_attr_vec(node, "pos", 0))) {
-                               cgm_mtranslation(xform, vec[0], vec[1], vec[2]);
+                               cgm_mtranslation(xform, -vec[0], -vec[1], -vec[2]);
                        }
 
                        init_meshgroup(&tile->mgrp);
@@ -167,7 +171,7 @@ struct tile *get_tile(struct tileset *tset, int ttype)
 int tile_type(const char *tstr)
 {
        static const char *typenames[] = {
-               "open", "straight", "corner", "tee", "cross", "str2open", "stropen", 0
+               "open", "straight", "corner", "opencorner", "tee", "cross", "str2open", "stropen", 0
        };
        int i;