/* PMDModel::load: load from file name */ bool PMDModel::load(const char *file, BulletPhysics *bullet, SystemTexture *systex) { int len; FILE *fp; size_t size; unsigned char *data; char *dir; bool ret; if(bullet == NULL || systex == NULL) return false; len = MMDFiles_strlen(file); if(len <= 0) return false; /* get model directory */ dir = MMDFiles_dirname(file); /* open file */ fp = MMDFiles_fopen(file, "rb"); if (!fp) return false; /* get file size */ size = MMDFiles_getfsize(file); /* allocate memory for reading data */ data = (unsigned char *) malloc(size); /* read all data */ fread(data, 1, size, fp); /* close file */ fclose(fp); /* initialize and load from the data memories */ ret = parse(data, (unsigned long) size, bullet, systex, dir); /* release memory for reading */ free(data); free(dir); return ret; }
/* MMDAgent_dirname: get directory name from path */ char *MMDAgent_dirname(const char *file) { return MMDFiles_dirname(file); }