Advertisement
_BYTE

3ds.cpp

Dec 14th, 2013
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.23 KB | None | 0 0
  1. #include "3ds.h"
  2.  
  3. bool Load3DS(CHAR *PATH, SCENE *scene)
  4. {
  5.     unsigned short chunk_id;
  6.     unsigned int chunk_len;
  7.     FILE *stream = fopen(PATH, "r");
  8.     if (stream == NULL) return false;
  9.  
  10.     while(!feof(stream))
  11.     {
  12.         fread(&chunk_id, 2, 1, stream);
  13.         fread(&chunk_len, 4, 1, stream);
  14.        
  15.         switch(chunk_id)
  16.         {
  17.             case CHUNK_SCENE: break;
  18.  
  19.                 case CHUNK_OBJMESH: break;
  20.  
  21.                     case CHUNK_OBJBLOCK: break;
  22.  
  23.                         case CHUNK_TRIMESH: break;
  24.  
  25.                             case CHUNK_VERTLIST:
  26.                                 {
  27.                                     VERTLIST vertlist;
  28.                                     fread(&vertlist, chunk_len, 1, stream);
  29.                                     scene->objmesh.objblock.trimesh.vertlist = vertlist;
  30.                                 } break;
  31.  
  32.                             case CHUNK_FACELIST:
  33.                                 {
  34.                                     FACELIST facelist;
  35.                                     fread(&facelist, chunk_len, 1, stream);
  36.                                     scene->objmesh.objblock.trimesh.facelist = facelist;
  37.                                 } break;
  38.  
  39.                             case CHUNK_FACEMAT:
  40.                                 {
  41.                                     FACEMAT facemat;
  42.                                     fread(&facemat, chunk_len, 1, stream);
  43.                                     scene->objmesh.objblock.trimesh.facemat = facemat;
  44.                                 } break;
  45.  
  46.                             case CHUNK_MAPLIST:
  47.                                 {
  48.                                     MAPLIST maplist;
  49.                                     fread(&maplist, chunk_len, 1, stream);
  50.                                     scene->objmesh.objblock.trimesh.maplist = maplist;
  51.                                 } break;
  52.  
  53.                             case CHUNK_TRMATRIX:
  54.                                 {
  55.                                     TRMATRIX trmatrix;
  56.                                     fread(&trmatrix, chunk_len, 1, stream);
  57.                                     scene->objmesh.objblock.trimesh.trmatrix = trmatrix;
  58.                                 } break;
  59.  
  60.                         case CHUNK_CAMERA: break;
  61.  
  62.                 case CHUNK_MATERIAL: break;
  63.  
  64.                     case CHUNK_MATNAME:
  65.                     {
  66.                         MATNAME matname;
  67.                         fread(&matname, chunk_len, 1, stream);
  68.                         scene->material.matname = matname;
  69.                     } break;
  70.  
  71.                     case CHUNK_TEXTURE: break;
  72.  
  73.                         case CHUNK_MAPFILE:
  74.                             {
  75.                                 MAPFILE mapfile;
  76.                                 fread(&mapfile, chunk_len, 1, stream);
  77.                                 scene->material.texture.mapfile = mapfile;
  78.                             } break;
  79.  
  80.                 case CHUNK_KEYFRAMER: break;
  81.  
  82.                     case CHUNK_TRACKINFO: break;
  83.  
  84.                         case CHUNK_TRACKOBJNAME:
  85.                             {
  86.                                 TRACKOBJNAME trackobjname;
  87.                                 fread(&trackobjname, chunk_len, 1, stream);
  88.                                 scene->keyframer.trackinfo.trackobjname = trackobjname;
  89.                             } break;
  90.  
  91.                         case CHUNK_TRACKPIVOT:
  92.                             {
  93.                                 TRACKPIVOT trackpivot;
  94.                                 fread(&trackpivot, chunk_len, 1, stream);
  95.                                 scene->keyframer.trackinfo.trackpivot = trackpivot;
  96.                             } break;
  97.  
  98.                         case CHUNK_TRACKPOS:
  99.                             {
  100.                                 TRACKPOS trackpos;
  101.                                 fread(&trackpos, chunk_len, 1, stream);
  102.                                 scene->keyframer.trackinfo.trackpos = trackpos;
  103.                             } break;
  104.  
  105.                         case CHUNK_TRACKROTATE:
  106.                             {
  107.                                 TRACKROTATE trackrotate;
  108.                                 fread(&trackrotate, chunk_len, 1, stream);
  109.                                 scene->keyframer.trackinfo.trackrotate = trackrotate;
  110.                             } break;
  111.  
  112.                     case CHUNK_TRACKCAMERA: break;
  113.  
  114.                         case CHUNK_TRACKFOV:
  115.                             {
  116.                                 TRACKFOV trackfov;
  117.                                 fread(&trackfov, chunk_len, 1, stream);
  118.                                 scene->keyframer.trackcamera.trackfov = trackfov;
  119.                             } break;
  120.  
  121.                         case CHUNK_TRACKROLL:
  122.                             {
  123.                                 TRACKROLL trackroll;
  124.                                 fread(&trackroll, chunk_len, 1, stream);
  125.                                 scene->keyframer.trackcamera.trackroll = trackroll;
  126.                             } break;
  127.  
  128.                     case CHUNK_TRACKCAMTGT: break;
  129.         }
  130.     }
  131.     fclose(stream);
  132.     return true;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement