Advertisement
VXP

shit

VXP
Sep 10th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.22 KB | None | 0 0
  1. inline void Studio_ConvertStudioHdrToNewVersion( studiohdr_t *pStudioHdr )
  2. {
  3. //#if 0
  4.         COMPILE_TIME_ASSERT( STUDIO_VERSION == 37 ); //  put this to make sure this code is updated upon changing version.
  5.  
  6.         int version = pStudioHdr->version;
  7.        ////////////// if ( version == STUDIO_VERSION )
  8.                 return;
  9.  
  10. #ifdef _DEBUG
  11.         Msg( "Studio_ConvertStudioHdrToNewVersion(): model version %i\n", version );
  12. #endif
  13.  
  14.         if ( version >= 31 && version <= 36 ) // Compartible with 31-36 model versions
  15.         {
  16.                 mstudioanimdesc_t *pOldAnimDesc = (mstudioanimdesc_t *)pStudioHdr;
  17.                 mstudioanimdesc_t *pNewAnimDesc = (mstudioanimdesc_t *)malloc( sizeof(mstudioanimdesc_t) );
  18.  
  19.                 mstudioseqdesc_v36_t *pOldStudioSeqDesc = (mstudioseqdesc_v36_t *)pStudioHdr;
  20.         mstudioseqdesc_t *pNewStudioSeqDesc = (mstudioseqdesc_t *)malloc( sizeof(mstudioseqdesc_t) );
  21.  
  22.                 studiohdr_v36_t *pOldStudioHdr = (studiohdr_v36_t *)pStudioHdr;
  23.         studiohdr_t *pNewStudioHdr = (studiohdr_t *)malloc( sizeof(studiohdr_t) );
  24.  
  25.  
  26.         memset(pNewAnimDesc, 0, sizeof(mstudioanimdesc_t) );
  27.                 memset(pNewStudioSeqDesc, 0, sizeof(mstudioseqdesc_t) );
  28.                 memset(pNewStudioHdr, 0, sizeof(studiohdr_t) );
  29.  
  30.  
  31.                 pNewAnimDesc->sznameindex = pOldAnimDesc->sznameindex;
  32.  
  33.                 pNewAnimDesc->fps = pOldAnimDesc->fps;
  34.                 pNewAnimDesc->flags = pOldAnimDesc->flags;
  35.  
  36.                 pNewAnimDesc->numframes = pOldAnimDesc->numframes;
  37.  
  38.                 pNewAnimDesc->nummovements = pOldAnimDesc->nummovements;
  39.                 pNewAnimDesc->movementindex = pOldAnimDesc->movementindex;
  40.  
  41.                 pNewAnimDesc->bbmin = pOldAnimDesc->bbmin;
  42.                 pNewAnimDesc->bbmax = pOldAnimDesc->bbmax;
  43.  
  44.                 pNewAnimDesc->animindex = pOldAnimDesc->animindex;
  45.  
  46.                 pNewAnimDesc->numikrules = pOldAnimDesc->numikrules;
  47.                 pNewAnimDesc->ikruleindex = pOldAnimDesc->ikruleindex;
  48.  
  49.                 memcpy( pNewAnimDesc->unused, pOldAnimDesc->unused, 8 );
  50.  
  51.  
  52.  
  53.                 pNewStudioSeqDesc->szlabelindex = pOldStudioSeqDesc->szlabelindex;
  54.                 pNewStudioSeqDesc->szactivitynameindex = pOldStudioSeqDesc->szactivitynameindex;
  55.                 pNewStudioSeqDesc->flags = pOldStudioSeqDesc->flags;
  56.                 pNewStudioSeqDesc->activity = pOldStudioSeqDesc->activity;
  57.                 pNewStudioSeqDesc->actweight = pOldStudioSeqDesc->actweight;
  58.                 pNewStudioSeqDesc->numevents = pOldStudioSeqDesc->numevents;
  59.                 pNewStudioSeqDesc->eventindex = pOldStudioSeqDesc->eventindex;
  60.                 pNewStudioSeqDesc->bbmin = pOldStudioSeqDesc->bbmin;
  61.                 pNewStudioSeqDesc->bbmax = pOldStudioSeqDesc->bbmax;
  62.                 pNewStudioSeqDesc->numblends = pOldStudioSeqDesc->numblends;
  63.  
  64.                 pNewStudioSeqDesc->blendindex = 0;
  65.  
  66.                 pNewStudioSeqDesc->seqgroup = pOldStudioSeqDesc->seqgroup;
  67.  
  68.                 //pNewStudioSeqDesc->movementindex = pOldStudioSeqDesc->movementindex;
  69.                 memcpy( pNewStudioSeqDesc->groupsize, pOldStudioSeqDesc->groupsize, 2 );
  70.                 memcpy( pNewStudioSeqDesc->paramindex, pOldStudioSeqDesc->paramindex, 2 );
  71.                 memcpy( pNewStudioSeqDesc->paramstart, pOldStudioSeqDesc->paramstart, 2 );
  72.                 memcpy( pNewStudioSeqDesc->paramend, pOldStudioSeqDesc->paramend, 2 );
  73.                 pNewStudioSeqDesc->paramparent = pOldStudioSeqDesc->paramparent;
  74.  
  75.                 pNewStudioSeqDesc->fadeintime = pOldStudioSeqDesc->fadeintime;
  76.                 pNewStudioSeqDesc->fadeouttime = pOldStudioSeqDesc->fadeouttime;
  77.                 pNewStudioSeqDesc->entrynode = pOldStudioSeqDesc->entrynode;
  78.                 pNewStudioSeqDesc->exitnode = pOldStudioSeqDesc->exitnode;
  79.                 pNewStudioSeqDesc->nodeflags = pOldStudioSeqDesc->nodeflags;
  80.                 pNewStudioSeqDesc->entryphase = pOldStudioSeqDesc->entryphase;
  81.                 pNewStudioSeqDesc->exitphase = pOldStudioSeqDesc->exitphase;
  82.                 pNewStudioSeqDesc->lastframe = pOldStudioSeqDesc->lastframe;
  83.                 pNewStudioSeqDesc->nextseq = pOldStudioSeqDesc->nextseq;
  84.                 pNewStudioSeqDesc->pose = pOldStudioSeqDesc->pose;
  85.                 pNewStudioSeqDesc->numikrules = pOldStudioSeqDesc->numikrules;
  86.                 pNewStudioSeqDesc->numautolayers = pOldStudioSeqDesc->numautolayers;
  87.                 pNewStudioSeqDesc->autolayerindex = pOldStudioSeqDesc->autolayerindex;
  88.  
  89.                 pNewStudioSeqDesc->weightlistindex = pOldStudioSeqDesc->weightlistindex;
  90.  
  91.                 pNewStudioSeqDesc->posekeyindex = pOldStudioSeqDesc->posekeyindex;
  92.                 if (version == 31)
  93.                 {
  94.                         Msg("31 version exception.\n");
  95. #if 0
  96.                         for (int i = 0; i < pNewStudioHdr->numseq; i++)
  97.                         {
  98.                                 mstudioseqdesc_t *pSeqdesc = (mstudioseqdesc_t *)pNewStudioHdr->pSeqdesc( i );
  99.                                 pSeqdesc->numiklocks = -1;
  100.                         }
  101. #endif
  102.                 }
  103.                 else
  104.                 {
  105.                         Msg("31 version disexception.\n");
  106.                         pNewStudioSeqDesc->numiklocks = pOldStudioSeqDesc->numiklocks;
  107.                 }
  108.                 pNewStudioSeqDesc->iklockindex = pOldStudioSeqDesc->iklockindex;
  109.                 pNewStudioSeqDesc->keyvalueindex = pOldStudioSeqDesc->keyvalueindex;
  110.                 pNewStudioSeqDesc->keyvaluesize = pOldStudioSeqDesc->keyvaluesize;
  111.                 memcpy( pNewStudioSeqDesc->unused, pOldStudioSeqDesc->unused, 3 );
  112.  
  113.  
  114.  
  115.                 pNewStudioHdr->id = pOldStudioHdr->id;
  116.                 pNewStudioHdr->version = STUDIO_VERSION;
  117.         pNewStudioHdr->checksum = pOldStudioHdr->checksum;
  118.  
  119.         memcpy( pNewStudioHdr->name, pOldStudioHdr->name, 64 );
  120.  
  121.         pNewStudioHdr->length = pOldStudioHdr->length;
  122.  
  123.                 pNewStudioHdr->eyeposition = pOldStudioHdr->eyeposition;
  124.  
  125.                 pNewStudioHdr->illumposition = pOldStudioHdr->illumposition;
  126.  
  127.                 pNewStudioHdr->hull_min = pOldStudioHdr->hull_min;
  128.                 pNewStudioHdr->hull_max = pOldStudioHdr->hull_max;
  129.  
  130.                 pNewStudioHdr->view_bbmin = pOldStudioHdr->view_bbmin;
  131.                 pNewStudioHdr->view_bbmax = pOldStudioHdr->view_bbmax;
  132.  
  133.                 pNewStudioHdr->flags = pOldStudioHdr->flags;
  134.  
  135.                 pNewStudioHdr->numbones = pOldStudioHdr->numbones;
  136.                 pNewStudioHdr->boneindex = pOldStudioHdr->boneindex;
  137.  
  138.                 pNewStudioHdr->numbonecontrollers = pOldStudioHdr->numbonecontrollers;
  139.                 pNewStudioHdr->bonecontrollerindex = pOldStudioHdr->bonecontrollerindex;
  140.  
  141.                 if (version == 32)
  142.                 {
  143.                         Msg("32 version exception.\n");
  144.                         pNewStudioHdr->numhitboxsets = -1;
  145.                 }
  146.                 else
  147.                 {
  148.                         Msg("32 version disexception.\n");
  149.                         pNewStudioHdr->numhitboxsets = pOldStudioHdr->numhitboxsets;
  150.                 }
  151.                 pNewStudioHdr->hitboxsetindex = pOldStudioHdr->hitboxsetindex;
  152.  
  153.                 pNewStudioHdr->numanim = pOldStudioHdr->numanim;
  154.                 pNewStudioHdr->animdescindex = pOldStudioHdr->animdescindex;
  155.  
  156.                 if (version == 36)
  157.                 {
  158.                         Msg("36 version exception.\n");
  159.                         pNewStudioHdr->numanimgroup = 0;
  160.                         pNewStudioHdr->animgroupindex = 0;
  161. #if 0
  162.                         for( int i = 0; i < pNewStudioHdr->numanimgroup; i++ )
  163.                         {
  164.                                 mstudioanimgroup_t *pAnimGroup = pNewStudioHdr->pAnimGroup( i );
  165.                                 pAnimGroup->group = 0;
  166.                                 pAnimGroup->index = 0;
  167.                         }
  168. #endif
  169.                         pNewStudioHdr->numbonedesc = 0;
  170.                         pNewStudioHdr->bonedescindex = 0;
  171. #if 0
  172.                         for( i = 0; i < pNewStudioHdr->numanimgroup; i++ )
  173.                         {
  174.                                 mstudiobonedesc_t *pExtendBone = pNewStudioHdr->pBoneDesc( i );
  175.                                 pExtendBone->sznameindex;
  176.                                 pExtendBone->pszName();
  177.  
  178.                                 pExtendBone->parent;            // parent bone
  179.  
  180.                                 pExtendBone->value; // default DoF values
  181.                                 pExtendBone->scale; // scale for delta DoF values
  182.                                 pExtendBone->poseToBone;
  183.  
  184.                                 pExtendBone->fivefloat;
  185.                         }
  186. #endif
  187.                 }
  188.                 else
  189.                 {
  190.                         Msg("36 version disexception.\n");
  191.                         pNewStudioHdr->numanimgroup = 0;
  192.                         pNewStudioHdr->animgroupindex = 0;
  193.  
  194.                         pNewStudioHdr->numbonedesc = 0;
  195.                         pNewStudioHdr->bonedescindex = 0;
  196.                 }
  197.  
  198.                 pNewStudioHdr->numseq = pOldStudioHdr->numseq;
  199.                 pNewStudioHdr->seqindex = pOldStudioHdr->seqindex;
  200.                 pNewStudioHdr->sequencesindexed = pOldStudioHdr->sequencesindexed;
  201.  
  202.                 pNewStudioHdr->numseqgroups = pOldStudioHdr->numseqgroups;
  203.                 pNewStudioHdr->seqgroupindex = pOldStudioHdr->seqgroupindex;
  204.  
  205.                 pNewStudioHdr->numtextures = pOldStudioHdr->numtextures;
  206.                 pNewStudioHdr->textureindex = pOldStudioHdr->textureindex;
  207.  
  208.                 pNewStudioHdr->numcdtextures = pOldStudioHdr->numcdtextures;
  209.                 pNewStudioHdr->cdtextureindex = pOldStudioHdr->cdtextureindex;
  210.  
  211.                 pNewStudioHdr->numskinref = pOldStudioHdr->numskinref;
  212.                 pNewStudioHdr->numskinfamilies = pOldStudioHdr->numskinfamilies;
  213.                 pNewStudioHdr->skinindex = pOldStudioHdr->skinindex;
  214.  
  215.                 pNewStudioHdr->numbodyparts = pOldStudioHdr->numbodyparts;
  216.                 pNewStudioHdr->bodypartindex = pOldStudioHdr->bodypartindex;
  217.  
  218.                 pNewStudioHdr->numattachments = pOldStudioHdr->numattachments;
  219.                 pNewStudioHdr->attachmentindex = pOldStudioHdr->attachmentindex;
  220.  
  221.                 pNewStudioHdr->numtransitions = pOldStudioHdr->numtransitions;
  222.                 pNewStudioHdr->transitionindex = pOldStudioHdr->transitionindex;
  223.  
  224.                 pNewStudioHdr->numflexdesc = pOldStudioHdr->numflexdesc;
  225.                 pNewStudioHdr->flexdescindex = pOldStudioHdr->flexdescindex;
  226.  
  227.                 pNewStudioHdr->numflexcontrollers = pOldStudioHdr->numflexcontrollers;
  228.                 pNewStudioHdr->flexcontrollerindex = pOldStudioHdr->flexcontrollerindex;
  229.  
  230.                 pNewStudioHdr->numflexrules = pOldStudioHdr->numflexrules;
  231.                 pNewStudioHdr->flexruleindex = pOldStudioHdr->flexruleindex;
  232.  
  233.                 pNewStudioHdr->numikchains = pOldStudioHdr->numikchains;
  234.                 pNewStudioHdr->ikchainindex = pOldStudioHdr->ikchainindex;
  235.  
  236.                 pNewStudioHdr->nummouths = pOldStudioHdr->nummouths;
  237.                 pNewStudioHdr->mouthindex = pOldStudioHdr->mouthindex;
  238.  
  239.                 pNewStudioHdr->numposeparameters = pOldStudioHdr->numposeparameters;
  240.                 pNewStudioHdr->poseparamindex = pOldStudioHdr->poseparamindex;
  241.  
  242.                 pNewStudioHdr->surfacepropindex = pOldStudioHdr->surfacepropindex;
  243.  
  244.                 pNewStudioHdr->keyvalueindex = pOldStudioHdr->keyvalueindex;
  245.                 pNewStudioHdr->keyvaluesize = pOldStudioHdr->keyvaluesize;
  246.  
  247.                 pNewStudioHdr->numikautoplaylocks = pOldStudioHdr->numikautoplaylocks;
  248.                 pNewStudioHdr->ikautoplaylockindex = pOldStudioHdr->ikautoplaylockindex;
  249.  
  250.                 pNewStudioHdr->mass = pOldStudioHdr->mass;
  251.                 if (version == 35)
  252.                 {
  253.                         Msg("35 version exception.\n");
  254.                         pNewStudioHdr->contents = CONTENTS_SOLID;
  255.                         for( int i = 0; i < pNewStudioHdr->numbones; i++ )
  256.                         {
  257.                                 mstudiobone_t *pBone = pNewStudioHdr->pBone( i );
  258.                                 pBone->contents = CONTENTS_SOLID;
  259.                         }
  260.                 }
  261.                 else
  262.                 {
  263.                         Msg("35 version disexception.\n");
  264.                         pNewStudioHdr->contents = pOldStudioHdr->contents;
  265.                 }
  266.                 memcpy( pNewStudioHdr->unused, pOldStudioHdr->unused, 5 );
  267.  
  268.  
  269.                 memset(pOldAnimDesc, 0, sizeof(mstudioanimdesc_t) );
  270.                 memset(pOldStudioSeqDesc, 0, sizeof(mstudioseqdesc_t) );
  271.                 memset(pOldStudioHdr, 0, sizeof(studiohdr_t) );
  272.  
  273.  
  274.                 memcpy( pOldAnimDesc, pNewAnimDesc, sizeof(mstudioanimdesc_t) );
  275.         memcpy( pOldStudioSeqDesc, pNewStudioSeqDesc, sizeof(mstudioseqdesc_t) );
  276.                 memcpy( pOldStudioHdr, pNewStudioHdr, sizeof(studiohdr_t) );
  277.  
  278.                 Msg( "Numtextures: %i\n", pOldStudioHdr->numtextures );
  279.         }
  280.         //pStudioHdr->version = STUDIO_VERSION;
  281. //#endif
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement