new level test
authorJohn Tsiombikas <nuclear@member.fsf.org>
Sat, 1 Apr 2023 01:43:22 +0000 (04:43 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Sat, 1 Apr 2023 01:43:22 +0000 (04:43 +0300)
GNUmakefile
libs/goat3d/Makefile
libs/goat3d/src/read.c
src/scr_game.c
src/util.c
src/util.h
tools/procdata

index d847936..f62772a 100644 (file)
@@ -30,3 +30,7 @@ libs:
 .PHONY: clean-libs
 clean-libs:
        $(MAKE) -C libs clean
+
+.PHONY: data
+data:
+       tools/procdata
index 4917266..6a50883 100644 (file)
@@ -1,6 +1,6 @@
 obj = src/aabox.o src/chunk.o src/dynarr.o src/extmesh.o src/g3danm.o \
          src/g3dscn.o src/goat3d.o src/log.o src/read.o src/track.o src/write.o \
-         src/util.o
+         src/readgltf.o src/util.o src/json.o
 alib = ../unix/goat3d.a
 
 CFLAGS = -O3 -g -Iinclude -I../treestor/include -I..
index 285c64c..dd2000c 100644 (file)
@@ -58,6 +58,7 @@ int g3dimpl_scnload(struct goat3d *g, struct goat3d_io *io)
        if((g3dimpl_loadgltf(g, io)) == 0) {
                return 0;
        }
+       io->seek(0, SEEK_SET, io->cls);
 
        tsio.data = io->cls;
        tsio.read = io->read;
index be0139f..d91e765 100644 (file)
@@ -34,12 +34,12 @@ static int dlist;
 
 static int ginit(void)
 {
-       int i, j, num, nfaces;
+       int i, num, nfaces;
        int *idxarr;
        float *varr, *narr, *uvarr;
        float xform[16];
 
-       if(!(gscn = goat3d_create()) || goat3d_load(gscn, "data/track1.g3d")) {
+       if(!(gscn = goat3d_create()) || goat3d_load(gscn, "data/level1.g3d")) {
                return -1;
        }
 
@@ -48,6 +48,9 @@ static int ginit(void)
        num = goat3d_get_node_count(gscn);
        for(i=0; i<num; i++) {
                struct goat3d_node *node = goat3d_get_node(gscn, i);
+               if(match_prefix(goat3d_get_node_name(node), "portal_")) {
+                       continue;
+               }
                if(goat3d_get_node_type(node) == GOAT3D_NODE_MESH) {
                        struct goat3d_mesh *mesh = goat3d_get_node_object(node);
 
index 0c28d8d..8793265 100644 (file)
@@ -46,3 +46,14 @@ char *strdup_nf_impl(const char *s, const char *file, int line)
        memcpy(res, s, len + 1);
        return res;
 }
+
+
+int match_prefix(const char *str, const char *prefix)
+{
+       while(*str && *prefix) {
+               if(*str++ != *prefix++) {
+                       return 0;
+               }
+       }
+       return *prefix ? 0 : 1;
+}
index 81047ca..1764fa0 100644 (file)
@@ -21,4 +21,6 @@ void *realloc_nf_impl(void *p, size_t sz, const char *file, int line);
 #define strdup_nf(s)   strdup_nf_impl(s, __FILE__, __LINE__)
 char *strdup_nf_impl(const char *s, const char *file, int line);
 
+int match_prefix(const char *str, const char *prefix);
+
 #endif /* UTIL_H_ */
index fb50f7a..e76800b 100755 (executable)
@@ -1,4 +1,6 @@
 #!/bin/sh
 
-[ ! -e data/track1.g3d -o datasrc/track1.gltf -nt data/track1.g3d ] && \
-       ass2goat datasrc/track1.gltf && mv datasrc/track1.goat3d data/track1.g3d
+[ ! -e data/level1.g3d -o datasrc/level1.gltf -nt data/level1.g3d ] && \
+       ass2goat datasrc/level1.gltf && mv datasrc/level1.goat3d data/level1.g3d
+
+exit 0