`
love19820823
  • 浏览: 928139 次
文章分类
社区版块
存档分类
最新评论

lib3ds2.0 BUG fix

 
阅读更多

library: lib3ds 2.0

====================================================

file: lib3ds_node.c

line: 169

original codes:

----------------------------

Lib3dsCameraNode*
lib3ds_node_new_camera(Lib3dsCamera *camera) {
Lib3dsNode *node = lib3ds_node_new(LIB3DS_NODE_CAMERA);
Lib3dsCameraNode *n;

assert(camera);
node = lib3ds_node_new(LIB3DS_NODE_CAMERA);
strcpy(node->name, camera->name);

n = (Lib3dsCameraNode*)node;
lib3ds_track_resize(&n->pos_track, 1);
lib3ds_vector_copy(n->pos_track.keys[0].value, camera->position);

lib3ds_track_resize(&n->fov_track, 1);
n->fov_track.keys[0].value[0] = camera->fov;

lib3ds_track_resize(&n->roll_track, 1);
n->roll_track.keys[0].value[0] = camera->roll;

return n;
}

-----------------------------

my fixed code:

Lib3dsCameraNode*
lib3ds_node_new_camera(Lib3dsCamera *camera) {
Lib3dsNode *node;
Lib3dsCameraNode *n;

assert(camera);
node = lib3ds_node_new(LIB3DS_NODE_CAMERA);
strcpy(node->name, camera->name);

n = (Lib3dsCameraNode*)node;
lib3ds_track_resize(&n->pos_track, 1);
lib3ds_vector_copy(n->pos_track.keys[0].value, camera->position);

lib3ds_track_resize(&n->fov_track, 1);
n->fov_track.keys[0].value[0] = camera->fov;

lib3ds_track_resize(&n->roll_track, 1);
n->roll_track.keys[0].value[0] = camera->roll;

return n;
}

-------------------------------------------------------------------------------

file: lib3ds_file.c

/* cheungmine */
#ifndef FREE_S
# define FREE_S(p) if(p){ void *t=(void*)(p);(p)=0;free(t); }
#endif

/*!
* Free a Lib3dsFile object and all of its resources.
*
* /param file The Lib3dsFile object to be freed.
*/
void
lib3ds_file_free(Lib3dsFile* file) {
Lib3dsNode *p, *q;

assert(file);
lib3ds_file_reserve_materials(file, 0, TRUE);
FREE_S(file->materials)

lib3ds_file_reserve_cameras(file, 0, TRUE);
FREE_S(file->cameras)

lib3ds_file_reserve_lights(file, 0, TRUE);
FREE_S(file->lights)

lib3ds_file_reserve_meshes(file, 0, TRUE);
FREE_S(file->meshes)

for (p = file->nodes; p; p = q) {
q = p->next;
lib3ds_node_free(p);
}

free(file);
}

-----------------------------------------------------------------------------------

lib3ds2.0 BUG fix by cheungmine 2009-2-14 china,shanghai

-----------------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics