diff options
| author | Alexander <alex@cogarr.net> | 2020-06-29 16:25:01 -0400 |
|---|---|---|
| committer | Alexander <alex@cogarr.net> | 2020-06-29 16:25:01 -0400 |
| commit | a5062e3999d60f943c39e4bda6bbc9ae6b0a372d (patch) | |
| tree | efc3dfe4d5a2cefdec8e860046405549dfb460f4 /src/shared/lua_api/phys/bphysmodel.cpp | |
| parent | 80789508b9655d25629223b9dcc84b4cfb77ce45 (diff) | |
| download | brokengine-a5062e3999d60f943c39e4bda6bbc9ae6b0a372d.tar.gz brokengine-a5062e3999d60f943c39e4bda6bbc9ae6b0a372d.tar.bz2 brokengine-a5062e3999d60f943c39e4bda6bbc9ae6b0a372d.zip | |
Updates to model loader to work with new api
Tinyobjloader-c modified it's api(backwards incompatable),
modify the call to fit the new api.
Diffstat (limited to 'src/shared/lua_api/phys/bphysmodel.cpp')
| -rw-r--r-- | src/shared/lua_api/phys/bphysmodel.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/shared/lua_api/phys/bphysmodel.cpp b/src/shared/lua_api/phys/bphysmodel.cpp index 375d68b..a813e17 100644 --- a/src/shared/lua_api/phys/bphysmodel.cpp +++ b/src/shared/lua_api/phys/bphysmodel.cpp @@ -28,6 +28,17 @@ extern std::list<btRigidBody*> Objects; //btTriangleMesh *trimesh = new btTriangleMesh(); //} +static void get_file_data(const char* filename, char **data, size_t *len){ + FILE *objfile = fopen(filename,"rb"); + fseek(objfile,0,SEEK_END); + *len = (size_t)ftell(objfile); + //printf("model data is %d long\n",(int)data_len); + fseek(objfile,0,SEEK_SET); + *data = (char*)malloc(sizeof(char) * *len); + fread(*data , sizeof(char), *len, objfile); + fclose(objfile); +} + //TODO: This will break in the future, see github.com/syoyo/tinyobjloader-c/issues/16 //"physicfile",mass[,position][,lookat] :: ud_rigidbody void makebphysmodel(lua_State *L){ @@ -66,7 +77,7 @@ void makebphysmodel(lua_State *L){ fread(objdata, sizeof(char), data_len, objfile); fclose(objfile); //printf("About to tinyobj_parse_obj\n"); - int err = tinyobj_parse_obj(&attrib, &shapes, &meshcount, &materials, &num_materials, objdata, data_len, TINYOBJ_FLAG_TRIANGULATE); + int err = tinyobj_parse_obj(&attrib, &shapes, &meshcount, &materials, &num_materials, ppath, get_file_data, TINYOBJ_FLAG_TRIANGULATE); //printf("Finished parsing tinyobj\n"); if(err != TINYOBJ_SUCCESS){ printf("Tinyobj failed to load model:%s\n",ppath); |
