Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- inline void Studio_ConvertStudioHdrToNewVersion( studiohdr_t *pStudioHdr )
- {
- //#if 0
- COMPILE_TIME_ASSERT( STUDIO_VERSION == 37 ); // put this to make sure this code is updated upon changing version.
- int version = pStudioHdr->version;
- ////////////// if ( version == STUDIO_VERSION )
- return;
- #ifdef _DEBUG
- Msg( "Studio_ConvertStudioHdrToNewVersion(): model version %i\n", version );
- #endif
- if ( version >= 31 && version <= 36 ) // Compartible with 31-36 model versions
- {
- mstudioanimdesc_t *pOldAnimDesc = (mstudioanimdesc_t *)pStudioHdr;
- mstudioanimdesc_t *pNewAnimDesc = (mstudioanimdesc_t *)malloc( sizeof(mstudioanimdesc_t) );
- mstudioseqdesc_v36_t *pOldStudioSeqDesc = (mstudioseqdesc_v36_t *)pStudioHdr;
- mstudioseqdesc_t *pNewStudioSeqDesc = (mstudioseqdesc_t *)malloc( sizeof(mstudioseqdesc_t) );
- studiohdr_v36_t *pOldStudioHdr = (studiohdr_v36_t *)pStudioHdr;
- studiohdr_t *pNewStudioHdr = (studiohdr_t *)malloc( sizeof(studiohdr_t) );
- memset(pNewAnimDesc, 0, sizeof(mstudioanimdesc_t) );
- memset(pNewStudioSeqDesc, 0, sizeof(mstudioseqdesc_t) );
- memset(pNewStudioHdr, 0, sizeof(studiohdr_t) );
- pNewAnimDesc->sznameindex = pOldAnimDesc->sznameindex;
- pNewAnimDesc->fps = pOldAnimDesc->fps;
- pNewAnimDesc->flags = pOldAnimDesc->flags;
- pNewAnimDesc->numframes = pOldAnimDesc->numframes;
- pNewAnimDesc->nummovements = pOldAnimDesc->nummovements;
- pNewAnimDesc->movementindex = pOldAnimDesc->movementindex;
- pNewAnimDesc->bbmin = pOldAnimDesc->bbmin;
- pNewAnimDesc->bbmax = pOldAnimDesc->bbmax;
- pNewAnimDesc->animindex = pOldAnimDesc->animindex;
- pNewAnimDesc->numikrules = pOldAnimDesc->numikrules;
- pNewAnimDesc->ikruleindex = pOldAnimDesc->ikruleindex;
- memcpy( pNewAnimDesc->unused, pOldAnimDesc->unused, 8 );
- pNewStudioSeqDesc->szlabelindex = pOldStudioSeqDesc->szlabelindex;
- pNewStudioSeqDesc->szactivitynameindex = pOldStudioSeqDesc->szactivitynameindex;
- pNewStudioSeqDesc->flags = pOldStudioSeqDesc->flags;
- pNewStudioSeqDesc->activity = pOldStudioSeqDesc->activity;
- pNewStudioSeqDesc->actweight = pOldStudioSeqDesc->actweight;
- pNewStudioSeqDesc->numevents = pOldStudioSeqDesc->numevents;
- pNewStudioSeqDesc->eventindex = pOldStudioSeqDesc->eventindex;
- pNewStudioSeqDesc->bbmin = pOldStudioSeqDesc->bbmin;
- pNewStudioSeqDesc->bbmax = pOldStudioSeqDesc->bbmax;
- pNewStudioSeqDesc->numblends = pOldStudioSeqDesc->numblends;
- pNewStudioSeqDesc->blendindex = 0;
- pNewStudioSeqDesc->seqgroup = pOldStudioSeqDesc->seqgroup;
- //pNewStudioSeqDesc->movementindex = pOldStudioSeqDesc->movementindex;
- memcpy( pNewStudioSeqDesc->groupsize, pOldStudioSeqDesc->groupsize, 2 );
- memcpy( pNewStudioSeqDesc->paramindex, pOldStudioSeqDesc->paramindex, 2 );
- memcpy( pNewStudioSeqDesc->paramstart, pOldStudioSeqDesc->paramstart, 2 );
- memcpy( pNewStudioSeqDesc->paramend, pOldStudioSeqDesc->paramend, 2 );
- pNewStudioSeqDesc->paramparent = pOldStudioSeqDesc->paramparent;
- pNewStudioSeqDesc->fadeintime = pOldStudioSeqDesc->fadeintime;
- pNewStudioSeqDesc->fadeouttime = pOldStudioSeqDesc->fadeouttime;
- pNewStudioSeqDesc->entrynode = pOldStudioSeqDesc->entrynode;
- pNewStudioSeqDesc->exitnode = pOldStudioSeqDesc->exitnode;
- pNewStudioSeqDesc->nodeflags = pOldStudioSeqDesc->nodeflags;
- pNewStudioSeqDesc->entryphase = pOldStudioSeqDesc->entryphase;
- pNewStudioSeqDesc->exitphase = pOldStudioSeqDesc->exitphase;
- pNewStudioSeqDesc->lastframe = pOldStudioSeqDesc->lastframe;
- pNewStudioSeqDesc->nextseq = pOldStudioSeqDesc->nextseq;
- pNewStudioSeqDesc->pose = pOldStudioSeqDesc->pose;
- pNewStudioSeqDesc->numikrules = pOldStudioSeqDesc->numikrules;
- pNewStudioSeqDesc->numautolayers = pOldStudioSeqDesc->numautolayers;
- pNewStudioSeqDesc->autolayerindex = pOldStudioSeqDesc->autolayerindex;
- pNewStudioSeqDesc->weightlistindex = pOldStudioSeqDesc->weightlistindex;
- pNewStudioSeqDesc->posekeyindex = pOldStudioSeqDesc->posekeyindex;
- if (version == 31)
- {
- Msg("31 version exception.\n");
- #if 0
- for (int i = 0; i < pNewStudioHdr->numseq; i++)
- {
- mstudioseqdesc_t *pSeqdesc = (mstudioseqdesc_t *)pNewStudioHdr->pSeqdesc( i );
- pSeqdesc->numiklocks = -1;
- }
- #endif
- }
- else
- {
- Msg("31 version disexception.\n");
- pNewStudioSeqDesc->numiklocks = pOldStudioSeqDesc->numiklocks;
- }
- pNewStudioSeqDesc->iklockindex = pOldStudioSeqDesc->iklockindex;
- pNewStudioSeqDesc->keyvalueindex = pOldStudioSeqDesc->keyvalueindex;
- pNewStudioSeqDesc->keyvaluesize = pOldStudioSeqDesc->keyvaluesize;
- memcpy( pNewStudioSeqDesc->unused, pOldStudioSeqDesc->unused, 3 );
- pNewStudioHdr->id = pOldStudioHdr->id;
- pNewStudioHdr->version = STUDIO_VERSION;
- pNewStudioHdr->checksum = pOldStudioHdr->checksum;
- memcpy( pNewStudioHdr->name, pOldStudioHdr->name, 64 );
- pNewStudioHdr->length = pOldStudioHdr->length;
- pNewStudioHdr->eyeposition = pOldStudioHdr->eyeposition;
- pNewStudioHdr->illumposition = pOldStudioHdr->illumposition;
- pNewStudioHdr->hull_min = pOldStudioHdr->hull_min;
- pNewStudioHdr->hull_max = pOldStudioHdr->hull_max;
- pNewStudioHdr->view_bbmin = pOldStudioHdr->view_bbmin;
- pNewStudioHdr->view_bbmax = pOldStudioHdr->view_bbmax;
- pNewStudioHdr->flags = pOldStudioHdr->flags;
- pNewStudioHdr->numbones = pOldStudioHdr->numbones;
- pNewStudioHdr->boneindex = pOldStudioHdr->boneindex;
- pNewStudioHdr->numbonecontrollers = pOldStudioHdr->numbonecontrollers;
- pNewStudioHdr->bonecontrollerindex = pOldStudioHdr->bonecontrollerindex;
- if (version == 32)
- {
- Msg("32 version exception.\n");
- pNewStudioHdr->numhitboxsets = -1;
- }
- else
- {
- Msg("32 version disexception.\n");
- pNewStudioHdr->numhitboxsets = pOldStudioHdr->numhitboxsets;
- }
- pNewStudioHdr->hitboxsetindex = pOldStudioHdr->hitboxsetindex;
- pNewStudioHdr->numanim = pOldStudioHdr->numanim;
- pNewStudioHdr->animdescindex = pOldStudioHdr->animdescindex;
- if (version == 36)
- {
- Msg("36 version exception.\n");
- pNewStudioHdr->numanimgroup = 0;
- pNewStudioHdr->animgroupindex = 0;
- #if 0
- for( int i = 0; i < pNewStudioHdr->numanimgroup; i++ )
- {
- mstudioanimgroup_t *pAnimGroup = pNewStudioHdr->pAnimGroup( i );
- pAnimGroup->group = 0;
- pAnimGroup->index = 0;
- }
- #endif
- pNewStudioHdr->numbonedesc = 0;
- pNewStudioHdr->bonedescindex = 0;
- #if 0
- for( i = 0; i < pNewStudioHdr->numanimgroup; i++ )
- {
- mstudiobonedesc_t *pExtendBone = pNewStudioHdr->pBoneDesc( i );
- pExtendBone->sznameindex;
- pExtendBone->pszName();
- pExtendBone->parent; // parent bone
- pExtendBone->value; // default DoF values
- pExtendBone->scale; // scale for delta DoF values
- pExtendBone->poseToBone;
- pExtendBone->fivefloat;
- }
- #endif
- }
- else
- {
- Msg("36 version disexception.\n");
- pNewStudioHdr->numanimgroup = 0;
- pNewStudioHdr->animgroupindex = 0;
- pNewStudioHdr->numbonedesc = 0;
- pNewStudioHdr->bonedescindex = 0;
- }
- pNewStudioHdr->numseq = pOldStudioHdr->numseq;
- pNewStudioHdr->seqindex = pOldStudioHdr->seqindex;
- pNewStudioHdr->sequencesindexed = pOldStudioHdr->sequencesindexed;
- pNewStudioHdr->numseqgroups = pOldStudioHdr->numseqgroups;
- pNewStudioHdr->seqgroupindex = pOldStudioHdr->seqgroupindex;
- pNewStudioHdr->numtextures = pOldStudioHdr->numtextures;
- pNewStudioHdr->textureindex = pOldStudioHdr->textureindex;
- pNewStudioHdr->numcdtextures = pOldStudioHdr->numcdtextures;
- pNewStudioHdr->cdtextureindex = pOldStudioHdr->cdtextureindex;
- pNewStudioHdr->numskinref = pOldStudioHdr->numskinref;
- pNewStudioHdr->numskinfamilies = pOldStudioHdr->numskinfamilies;
- pNewStudioHdr->skinindex = pOldStudioHdr->skinindex;
- pNewStudioHdr->numbodyparts = pOldStudioHdr->numbodyparts;
- pNewStudioHdr->bodypartindex = pOldStudioHdr->bodypartindex;
- pNewStudioHdr->numattachments = pOldStudioHdr->numattachments;
- pNewStudioHdr->attachmentindex = pOldStudioHdr->attachmentindex;
- pNewStudioHdr->numtransitions = pOldStudioHdr->numtransitions;
- pNewStudioHdr->transitionindex = pOldStudioHdr->transitionindex;
- pNewStudioHdr->numflexdesc = pOldStudioHdr->numflexdesc;
- pNewStudioHdr->flexdescindex = pOldStudioHdr->flexdescindex;
- pNewStudioHdr->numflexcontrollers = pOldStudioHdr->numflexcontrollers;
- pNewStudioHdr->flexcontrollerindex = pOldStudioHdr->flexcontrollerindex;
- pNewStudioHdr->numflexrules = pOldStudioHdr->numflexrules;
- pNewStudioHdr->flexruleindex = pOldStudioHdr->flexruleindex;
- pNewStudioHdr->numikchains = pOldStudioHdr->numikchains;
- pNewStudioHdr->ikchainindex = pOldStudioHdr->ikchainindex;
- pNewStudioHdr->nummouths = pOldStudioHdr->nummouths;
- pNewStudioHdr->mouthindex = pOldStudioHdr->mouthindex;
- pNewStudioHdr->numposeparameters = pOldStudioHdr->numposeparameters;
- pNewStudioHdr->poseparamindex = pOldStudioHdr->poseparamindex;
- pNewStudioHdr->surfacepropindex = pOldStudioHdr->surfacepropindex;
- pNewStudioHdr->keyvalueindex = pOldStudioHdr->keyvalueindex;
- pNewStudioHdr->keyvaluesize = pOldStudioHdr->keyvaluesize;
- pNewStudioHdr->numikautoplaylocks = pOldStudioHdr->numikautoplaylocks;
- pNewStudioHdr->ikautoplaylockindex = pOldStudioHdr->ikautoplaylockindex;
- pNewStudioHdr->mass = pOldStudioHdr->mass;
- if (version == 35)
- {
- Msg("35 version exception.\n");
- pNewStudioHdr->contents = CONTENTS_SOLID;
- for( int i = 0; i < pNewStudioHdr->numbones; i++ )
- {
- mstudiobone_t *pBone = pNewStudioHdr->pBone( i );
- pBone->contents = CONTENTS_SOLID;
- }
- }
- else
- {
- Msg("35 version disexception.\n");
- pNewStudioHdr->contents = pOldStudioHdr->contents;
- }
- memcpy( pNewStudioHdr->unused, pOldStudioHdr->unused, 5 );
- memset(pOldAnimDesc, 0, sizeof(mstudioanimdesc_t) );
- memset(pOldStudioSeqDesc, 0, sizeof(mstudioseqdesc_t) );
- memset(pOldStudioHdr, 0, sizeof(studiohdr_t) );
- memcpy( pOldAnimDesc, pNewAnimDesc, sizeof(mstudioanimdesc_t) );
- memcpy( pOldStudioSeqDesc, pNewStudioSeqDesc, sizeof(mstudioseqdesc_t) );
- memcpy( pOldStudioHdr, pNewStudioHdr, sizeof(studiohdr_t) );
- Msg( "Numtextures: %i\n", pOldStudioHdr->numtextures );
- }
- //pStudioHdr->version = STUDIO_VERSION;
- //#endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement