Ejemplo n.º 1
0
/* 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;
}
Ejemplo n.º 2
0
/* MMDFiles_getfsize: get file size */
size_t MMDFiles_getfsize(const char *file)
{
   FILE *fp;
   fpos_t size;

   fp = MMDFiles_fopen(file, "rb");
   if (!fp)
      return 0;

   fseek(fp, 0, SEEK_END);
   fgetpos(fp, &size);
   fseek(fp, 0, SEEK_SET);
   fclose(fp);

#if defined(_WIN32) || defined(__APPLE__)
   return (size_t) size;
#else
   return (size_t) size.__pos;
#endif /* _WIN32 || __APPLE__ */
}
Ejemplo n.º 3
0
/* MMDAgent_fopen: get file pointer */
FILE *MMDAgent_fopen(const char *file, const char *mode)
{
    return MMDFiles_fopen(file, mode);
}