mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-22 02:11:19 +00:00
And do the real merge.
That drastically simplifies the processes of alias model loading for glsl :)
This commit is contained in:
parent
c0d37ddc1e
commit
e62eb23f67
4 changed files with 84 additions and 182 deletions
|
@ -105,90 +105,6 @@ Mod_LoadSkin (byte * skin, int skinsize, int snum, int gnum, qboolean group,
|
|||
return skin + skinsize;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasFrame (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
daliasframe_t *pdaliasframe;
|
||||
trivertx_t *pinframe;
|
||||
|
||||
pdaliasframe = (daliasframe_t *) pin;
|
||||
|
||||
strncpy (frame->name, pdaliasframe->name, sizeof (frame->name));
|
||||
frame->name[sizeof (frame->name) - 1] = 0;
|
||||
frame->firstpose = (*posenum);
|
||||
frame->numposes = 1;
|
||||
|
||||
// byte values, don't worry about endianness
|
||||
VectorCopy (pdaliasframe->bboxmin.v, frame->bboxmin.v);
|
||||
VectorCopy (pdaliasframe->bboxmax.v, frame->bboxmax.v);
|
||||
VectorCompMin (frame->bboxmin.v, aliasbboxmins, aliasbboxmins);
|
||||
VectorCompMax (frame->bboxmax.v, aliasbboxmaxs, aliasbboxmaxs);
|
||||
|
||||
pinframe = (trivertx_t *) (pdaliasframe + 1);
|
||||
|
||||
poseverts[(*posenum)] = pinframe;
|
||||
(*posenum)++;
|
||||
|
||||
pinframe += pheader->mdl.numverts;
|
||||
if (extra)
|
||||
pinframe += pheader->mdl.numverts;
|
||||
|
||||
return pinframe;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasGroup (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
daliasgroup_t *pingroup;
|
||||
daliasinterval_t *pin_intervals;
|
||||
float *poutintervals;
|
||||
int i, numframes;
|
||||
maliasgroup_t *paliasgroup;
|
||||
void *ptemp;
|
||||
|
||||
pingroup = (daliasgroup_t *) pin;
|
||||
|
||||
numframes = LittleLong (pingroup->numframes);
|
||||
|
||||
frame->firstpose = (*posenum);
|
||||
frame->numposes = numframes;
|
||||
|
||||
paliasgroup = Hunk_AllocName (field_offset (maliasgroup_t,
|
||||
frames[numframes]), loadname);
|
||||
paliasgroup->numframes = numframes;
|
||||
frame->frame = (byte *) paliasgroup - (byte *) pheader;
|
||||
|
||||
// these are byte values, so we don't have to worry about endianness
|
||||
VectorCopy (pingroup->bboxmin.v, frame->bboxmin.v);
|
||||
VectorCopy (pingroup->bboxmax.v, frame->bboxmax.v);
|
||||
VectorCompMin (frame->bboxmin.v, aliasbboxmins, aliasbboxmins);
|
||||
VectorCompMax (frame->bboxmax.v, aliasbboxmaxs, aliasbboxmaxs);
|
||||
|
||||
pin_intervals = (daliasinterval_t *) (pingroup + 1);
|
||||
poutintervals = Hunk_AllocName (numframes * sizeof (float), loadname);
|
||||
paliasgroup->intervals = (byte *) poutintervals - (byte *) pheader;
|
||||
frame->interval = LittleFloat (pin_intervals->interval);
|
||||
for (i = 0; i < numframes; i++) {
|
||||
*poutintervals = LittleFloat (pin_intervals->interval);
|
||||
if (*poutintervals <= 0.0)
|
||||
Sys_Error ("Mod_LoadAliasGroup: interval<=0");
|
||||
poutintervals++;
|
||||
pin_intervals++;
|
||||
}
|
||||
|
||||
ptemp = (void *) pin_intervals;
|
||||
for (i = 0; i < numframes; i++) {
|
||||
maliasframedesc_t temp_frame;
|
||||
ptemp = Mod_LoadAliasFrame (ptemp, posenum, &temp_frame, extra);
|
||||
memcpy (&paliasgroup->frames[i], &temp_frame,
|
||||
sizeof (paliasgroup->frames[i]));
|
||||
}
|
||||
|
||||
return ptemp;
|
||||
}
|
||||
|
||||
void
|
||||
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
||||
{
|
||||
|
|
|
@ -49,20 +49,6 @@ Mod_LoadSkin (byte * skin, int skinsize, int snum, int gnum, qboolean group,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasFrame (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasGroup (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
||||
{
|
||||
|
|
|
@ -132,6 +132,90 @@ Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype, int *pskinindex)
|
|||
return pskintype;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasFrame (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
daliasframe_t *pdaliasframe;
|
||||
trivertx_t *pinframe;
|
||||
|
||||
pdaliasframe = (daliasframe_t *) pin;
|
||||
|
||||
strncpy (frame->name, pdaliasframe->name, sizeof (frame->name));
|
||||
frame->name[sizeof (frame->name) - 1] = 0;
|
||||
frame->firstpose = (*posenum);
|
||||
frame->numposes = 1;
|
||||
|
||||
// byte values, don't worry about endianness
|
||||
VectorCopy (pdaliasframe->bboxmin.v, frame->bboxmin.v);
|
||||
VectorCopy (pdaliasframe->bboxmax.v, frame->bboxmax.v);
|
||||
VectorCompMin (frame->bboxmin.v, aliasbboxmins, aliasbboxmins);
|
||||
VectorCompMax (frame->bboxmax.v, aliasbboxmaxs, aliasbboxmaxs);
|
||||
|
||||
pinframe = (trivertx_t *) (pdaliasframe + 1);
|
||||
|
||||
poseverts[(*posenum)] = pinframe;
|
||||
(*posenum)++;
|
||||
|
||||
pinframe += pheader->mdl.numverts;
|
||||
if (extra)
|
||||
pinframe += pheader->mdl.numverts;
|
||||
|
||||
return pinframe;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasGroup (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
daliasgroup_t *pingroup;
|
||||
daliasinterval_t *pin_intervals;
|
||||
float *poutintervals;
|
||||
int i, numframes;
|
||||
maliasgroup_t *paliasgroup;
|
||||
void *ptemp;
|
||||
|
||||
pingroup = (daliasgroup_t *) pin;
|
||||
|
||||
numframes = LittleLong (pingroup->numframes);
|
||||
|
||||
frame->firstpose = (*posenum);
|
||||
frame->numposes = numframes;
|
||||
|
||||
paliasgroup = Hunk_AllocName (field_offset (maliasgroup_t,
|
||||
frames[numframes]), loadname);
|
||||
paliasgroup->numframes = numframes;
|
||||
frame->frame = (byte *) paliasgroup - (byte *) pheader;
|
||||
|
||||
// these are byte values, so we don't have to worry about endianness
|
||||
VectorCopy (pingroup->bboxmin.v, frame->bboxmin.v);
|
||||
VectorCopy (pingroup->bboxmax.v, frame->bboxmax.v);
|
||||
VectorCompMin (frame->bboxmin.v, aliasbboxmins, aliasbboxmins);
|
||||
VectorCompMax (frame->bboxmax.v, aliasbboxmaxs, aliasbboxmaxs);
|
||||
|
||||
pin_intervals = (daliasinterval_t *) (pingroup + 1);
|
||||
poutintervals = Hunk_AllocName (numframes * sizeof (float), loadname);
|
||||
paliasgroup->intervals = (byte *) poutintervals - (byte *) pheader;
|
||||
frame->interval = LittleFloat (pin_intervals->interval);
|
||||
for (i = 0; i < numframes; i++) {
|
||||
*poutintervals = LittleFloat (pin_intervals->interval);
|
||||
if (*poutintervals <= 0.0)
|
||||
Sys_Error ("Mod_LoadAliasGroup: interval<=0");
|
||||
poutintervals++;
|
||||
pin_intervals++;
|
||||
}
|
||||
|
||||
ptemp = (void *) pin_intervals;
|
||||
for (i = 0; i < numframes; i++) {
|
||||
maliasframedesc_t temp_frame;
|
||||
ptemp = Mod_LoadAliasFrame (ptemp, posenum, &temp_frame, extra);
|
||||
memcpy (&paliasgroup->frames[i], &temp_frame,
|
||||
sizeof (paliasgroup->frames[i]));
|
||||
}
|
||||
|
||||
return ptemp;
|
||||
}
|
||||
|
||||
void
|
||||
Mod_LoadAliasModel (model_t *mod, void *buffer, cache_allocator_t allocator)
|
||||
{
|
||||
|
|
|
@ -131,90 +131,6 @@ Mod_MakeAliasModelDisplayLists (model_t *m, aliashdr_t *hdr, void *_m, int _s,
|
|||
}
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasFrame (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
daliasframe_t *pdaliasframe;
|
||||
trivertx_t *pinframe;
|
||||
|
||||
pdaliasframe = (daliasframe_t *) pin;
|
||||
|
||||
strncpy (frame->name, pdaliasframe->name, sizeof (frame->name));
|
||||
frame->name[sizeof (frame->name) - 1] = 0;
|
||||
frame->firstpose = (*posenum);
|
||||
frame->numposes = 1;
|
||||
|
||||
// byte values, don't worry about endianness
|
||||
VectorCopy (pdaliasframe->bboxmin.v, frame->bboxmin.v);
|
||||
VectorCopy (pdaliasframe->bboxmax.v, frame->bboxmax.v);
|
||||
VectorCompMin (frame->bboxmin.v, aliasbboxmins, aliasbboxmins);
|
||||
VectorCompMax (frame->bboxmax.v, aliasbboxmaxs, aliasbboxmaxs);
|
||||
|
||||
pinframe = (trivertx_t *) (pdaliasframe + 1);
|
||||
|
||||
poseverts[(*posenum)] = pinframe;
|
||||
(*posenum)++;
|
||||
|
||||
pinframe += pheader->mdl.numverts;
|
||||
if (extra)
|
||||
pinframe += pheader->mdl.numverts;
|
||||
|
||||
return pinframe;
|
||||
}
|
||||
|
||||
void *
|
||||
Mod_LoadAliasGroup (void *pin, int *posenum, maliasframedesc_t *frame,
|
||||
int extra)
|
||||
{
|
||||
daliasgroup_t *pingroup;
|
||||
daliasinterval_t *pin_intervals;
|
||||
float *poutintervals;
|
||||
int i, numframes;
|
||||
maliasgroup_t *paliasgroup;
|
||||
void *ptemp;
|
||||
|
||||
pingroup = (daliasgroup_t *) pin;
|
||||
|
||||
numframes = LittleLong (pingroup->numframes);
|
||||
|
||||
frame->firstpose = (*posenum);
|
||||
frame->numposes = numframes;
|
||||
|
||||
paliasgroup = Hunk_AllocName (field_offset (maliasgroup_t,
|
||||
frames[numframes]), loadname);
|
||||
paliasgroup->numframes = numframes;
|
||||
frame->frame = (byte *) paliasgroup - (byte *) pheader;
|
||||
|
||||
// these are byte values, so we don't have to worry about endianness
|
||||
VectorCopy (pingroup->bboxmin.v, frame->bboxmin.v);
|
||||
VectorCopy (pingroup->bboxmax.v, frame->bboxmax.v);
|
||||
VectorCompMin (frame->bboxmin.v, aliasbboxmins, aliasbboxmins);
|
||||
VectorCompMax (frame->bboxmax.v, aliasbboxmaxs, aliasbboxmaxs);
|
||||
|
||||
pin_intervals = (daliasinterval_t *) (pingroup + 1);
|
||||
poutintervals = Hunk_AllocName (numframes * sizeof (float), loadname);
|
||||
paliasgroup->intervals = (byte *) poutintervals - (byte *) pheader;
|
||||
frame->interval = LittleFloat (pin_intervals->interval);
|
||||
for (i = 0; i < numframes; i++) {
|
||||
*poutintervals = LittleFloat (pin_intervals->interval);
|
||||
if (*poutintervals <= 0.0)
|
||||
Sys_Error ("Mod_LoadAliasGroup: interval<=0");
|
||||
poutintervals++;
|
||||
pin_intervals++;
|
||||
}
|
||||
|
||||
ptemp = (void *) pin_intervals;
|
||||
for (i = 0; i < numframes; i++) {
|
||||
maliasframedesc_t temp_frame;
|
||||
ptemp = Mod_LoadAliasFrame (ptemp, posenum, &temp_frame, extra);
|
||||
memcpy (&paliasgroup->frames[i], &temp_frame,
|
||||
sizeof (paliasgroup->frames[i]));
|
||||
}
|
||||
|
||||
return ptemp;
|
||||
}
|
||||
|
||||
void
|
||||
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue