mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-06-04 10:30:52 +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;
|
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
|
void
|
||||||
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
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;
|
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
|
void
|
||||||
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -132,6 +132,90 @@ Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype, int *pskinindex)
|
||||||
return pskintype;
|
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
|
void
|
||||||
Mod_LoadAliasModel (model_t *mod, void *buffer, cache_allocator_t allocator)
|
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
|
void
|
||||||
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
Mod_FinalizeAliasModel (model_t *m, aliashdr_t *hdr)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue