mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-13 00:24:12 +00:00
Fix skin functions for plugins.
This commit is contained in:
parent
f5d6959f4b
commit
52e518bb1b
14 changed files with 57 additions and 50 deletions
|
@ -96,8 +96,6 @@ typedef struct vid_model_funcs_s {
|
||||||
void (*Skin_SetTranslation) (int cmap, int top, int bottom);
|
void (*Skin_SetTranslation) (int cmap, int top, int bottom);
|
||||||
void (*Skin_ProcessTranslation) (int cmap, const byte *translation);
|
void (*Skin_ProcessTranslation) (int cmap, const byte *translation);
|
||||||
void (*Skin_InitTranslations) (void);
|
void (*Skin_InitTranslations) (void);
|
||||||
int (*Skin_Init_Textures) (int base);
|
|
||||||
void (*Skin_SetPlayerSkin) (int width, int height, const byte *data);
|
|
||||||
} vid_model_funcs_t;
|
} vid_model_funcs_t;
|
||||||
|
|
||||||
typedef struct vid_render_funcs_s {
|
typedef struct vid_render_funcs_s {
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
#include "QF/model.h"
|
#include "QF/model.h"
|
||||||
#include "QF/skin.h"
|
#include "QF/skin.h"
|
||||||
|
#include "QF/plugin/vid_render.h"
|
||||||
|
|
||||||
|
extern vid_model_funcs_t *m_funcs;
|
||||||
|
|
||||||
void Mod_LoadExternalTextures (model_t *mod);
|
void Mod_LoadExternalTextures (model_t *mod);
|
||||||
void Mod_LoadLighting (bsp_t *bsp);
|
void Mod_LoadLighting (bsp_t *bsp);
|
||||||
|
@ -15,10 +18,19 @@ void Mod_LoadSpriteModel (model_t *mod, void *buffer);
|
||||||
void Skin_Init (void);
|
void Skin_Init (void);
|
||||||
skin_t *Skin_SetColormap (skin_t *skin, int cmap);
|
skin_t *Skin_SetColormap (skin_t *skin, int cmap);
|
||||||
skin_t *Skin_SetSkin (skin_t *skin, int cmap, const char *skinname);
|
skin_t *Skin_SetSkin (skin_t *skin, int cmap, const char *skinname);
|
||||||
void Skin_SetupSkin (skin_t *skin, int cmap);
|
|
||||||
void Skin_SetTranslation (int cmap, int top, int bottom);
|
void Skin_SetTranslation (int cmap, int top, int bottom);
|
||||||
void Skin_ProcessTranslation (int cmap, const byte *translation);
|
|
||||||
void Skin_InitTranslations (void);
|
void sw_Skin_SetupSkin (skin_t *skin, int cmap);
|
||||||
int Skin_Init_Textures (int base);
|
void sw_Skin_ProcessTranslation (int cmap, const byte *translation);
|
||||||
void Skin_SetPlayerSkin (int width, int height, const byte *data);
|
void sw_Skin_InitTranslations (void);
|
||||||
|
|
||||||
|
void glsl_Skin_SetupSkin (skin_t *skin, int cmap);
|
||||||
|
void glsl_Skin_ProcessTranslation (int cmap, const byte *translation);
|
||||||
|
void glsl_Skin_InitTranslations (void);
|
||||||
|
|
||||||
|
void gl_Skin_SetupSkin (skin_t *skin, int cmap);
|
||||||
|
void gl_Skin_ProcessTranslation (int cmap, const byte *translation);
|
||||||
|
void gl_Skin_InitTranslations (void);
|
||||||
|
int gl_Skin_Init_Textures (int base);
|
||||||
|
void gl_Skin_SetPlayerSkin (int width, int height, const byte *data);
|
||||||
#endif// __mod_internal_h
|
#endif// __mod_internal_h
|
||||||
|
|
|
@ -14,7 +14,6 @@ lib_ldflags=-version-info $(QUAKE_LIBRARY_VERSION_INFO) \
|
||||||
models_sources = clip_hull.c model.c portal.c trace.c winding.c
|
models_sources = clip_hull.c model.c portal.c trace.c winding.c
|
||||||
|
|
||||||
common_libs = \
|
common_libs = \
|
||||||
$(top_builddir)/libs/image/libQFimage.la \
|
|
||||||
$(top_builddir)/libs/util/libQFutil.la
|
$(top_builddir)/libs/util/libQFutil.la
|
||||||
|
|
||||||
models_libs=brush/libbrush.la $(common_libs)
|
models_libs=brush/libbrush.la $(common_libs)
|
||||||
|
@ -28,7 +27,8 @@ gl_sources=gl_model_fullbright.c gl_skin.c skin.c
|
||||||
gl_libs= \
|
gl_libs= \
|
||||||
alias/libalias_gl.la \
|
alias/libalias_gl.la \
|
||||||
brush/libbrush_gl.la \
|
brush/libbrush_gl.la \
|
||||||
sprite/libsprite_gl.la
|
sprite/libsprite_gl.la \
|
||||||
|
$(top_builddir)/libs/image/libQFimage.la
|
||||||
libmodels_gl_la_LDFLAGS=
|
libmodels_gl_la_LDFLAGS=
|
||||||
libmodels_gl_la_LIBADD= $(gl_libs)
|
libmodels_gl_la_LIBADD= $(gl_libs)
|
||||||
libmodels_gl_la_DEPENDENCIES= $(gl_libs)
|
libmodels_gl_la_DEPENDENCIES= $(gl_libs)
|
||||||
|
@ -37,7 +37,8 @@ libmodels_gl_la_SOURCES= $(gl_sources)
|
||||||
glsl_libs= \
|
glsl_libs= \
|
||||||
alias/libalias_glsl.la \
|
alias/libalias_glsl.la \
|
||||||
brush/libbrush_glsl.la \
|
brush/libbrush_glsl.la \
|
||||||
sprite/libsprite_glsl.la
|
sprite/libsprite_glsl.la \
|
||||||
|
$(top_builddir)/libs/image/libQFimage.la
|
||||||
libmodels_glsl_la_LDFLAGS=
|
libmodels_glsl_la_LDFLAGS=
|
||||||
libmodels_glsl_la_LIBADD= $(glsl_libs)
|
libmodels_glsl_la_LIBADD= $(glsl_libs)
|
||||||
libmodels_glsl_la_DEPENDENCIES= $(glsl_libs)
|
libmodels_glsl_la_DEPENDENCIES= $(glsl_libs)
|
||||||
|
@ -46,7 +47,8 @@ libmodels_glsl_la_SOURCES= glsl_skin.c skin.c
|
||||||
sw_libs= \
|
sw_libs= \
|
||||||
alias/libalias_sw.la \
|
alias/libalias_sw.la \
|
||||||
brush/libbrush_sw.la \
|
brush/libbrush_sw.la \
|
||||||
sprite/libsprite_sw.la
|
sprite/libsprite_sw.la \
|
||||||
|
$(top_builddir)/libs/image/libQFimage.la
|
||||||
libmodels_sw_la_LDFLAGS=
|
libmodels_sw_la_LDFLAGS=
|
||||||
libmodels_sw_la_LIBADD= $(sw_libs)
|
libmodels_sw_la_LIBADD= $(sw_libs)
|
||||||
libmodels_sw_la_DEPENDENCIES= $(sw_libs)
|
libmodels_sw_la_DEPENDENCIES= $(sw_libs)
|
||||||
|
|
|
@ -72,8 +72,8 @@ Mod_LoadSkin (byte * skin, int skinsize, int snum, int gnum, qboolean group,
|
||||||
// save 8 bit texels for the player model to remap
|
// save 8 bit texels for the player model to remap
|
||||||
// FIXME remove model restriction
|
// FIXME remove model restriction
|
||||||
if (strequal (loadmodel->name, "progs/player.mdl"))
|
if (strequal (loadmodel->name, "progs/player.mdl"))
|
||||||
Skin_SetPlayerSkin (pheader->mdl.skinwidth, pheader->mdl.skinheight,
|
gl_Skin_SetPlayerSkin (pheader->mdl.skinwidth, pheader->mdl.skinheight,
|
||||||
pskin);
|
pskin);
|
||||||
|
|
||||||
QFS_StripExtension (loadmodel->name, modname);
|
QFS_StripExtension (loadmodel->name, modname);
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ do_fb_skin (glskin_t *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_SetPlayerSkin (int width, int height, const byte *data)
|
gl_Skin_SetPlayerSkin (int width, int height, const byte *data)
|
||||||
{
|
{
|
||||||
int size = width * height;
|
int size = width * height;
|
||||||
glskin_t *s;
|
glskin_t *s;
|
||||||
|
@ -211,7 +211,7 @@ build_skin (skin_t *skin, int cmap)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_ProcessTranslation (int cmap, const byte *translation)
|
gl_Skin_ProcessTranslation (int cmap, const byte *translation)
|
||||||
{
|
{
|
||||||
int changed;
|
int changed;
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ Skin_ProcessTranslation (int cmap, const byte *translation)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_SetupSkin (skin_t *skin, int cmap)
|
gl_Skin_SetupSkin (skin_t *skin, int cmap)
|
||||||
{
|
{
|
||||||
int changed;
|
int changed;
|
||||||
glskin_t *s;
|
glskin_t *s;
|
||||||
|
@ -252,12 +252,12 @@ Skin_SetupSkin (skin_t *skin, int cmap)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_InitTranslations (void)
|
gl_Skin_InitTranslations (void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Skin_Init_Textures (int base)
|
gl_Skin_Init_Textures (int base)
|
||||||
{
|
{
|
||||||
skin_textures = base;
|
skin_textures = base;
|
||||||
base += MAX_TRANSLATIONS;
|
base += MAX_TRANSLATIONS;
|
||||||
|
|
|
@ -57,7 +57,7 @@ static GLuint cmap_tex[MAX_TRANSLATIONS];
|
||||||
static GLuint skin_tex[MAX_TRANSLATIONS];
|
static GLuint skin_tex[MAX_TRANSLATIONS];
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_ProcessTranslation (int cmap, const byte *translation)
|
glsl_Skin_ProcessTranslation (int cmap, const byte *translation)
|
||||||
{
|
{
|
||||||
byte top[4 * VID_GRADES * 16];
|
byte top[4 * VID_GRADES * 16];
|
||||||
byte bottom[4 * VID_GRADES * 16];
|
byte bottom[4 * VID_GRADES * 16];
|
||||||
|
@ -95,7 +95,7 @@ Skin_ProcessTranslation (int cmap, const byte *translation)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_SetupSkin (skin_t *skin, int cmap)
|
glsl_Skin_SetupSkin (skin_t *skin, int cmap)
|
||||||
{
|
{
|
||||||
skin->texnum = 0;
|
skin->texnum = 0;
|
||||||
if (cmap) {
|
if (cmap) {
|
||||||
|
@ -123,7 +123,7 @@ Skin_SetupSkin (skin_t *skin, int cmap)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_InitTranslations (void)
|
glsl_Skin_InitTranslations (void)
|
||||||
{
|
{
|
||||||
byte map[4 * VID_GRADES * 256];
|
byte map[4 * VID_GRADES * 256];
|
||||||
byte *src, *dst;
|
byte *src, *dst;
|
||||||
|
|
|
@ -227,7 +227,8 @@ Mod_RealLoadModel (model_t *mod, qboolean crash, cache_allocator_t allocator)
|
||||||
// Version 38: Quake 2 .bsp
|
// Version 38: Quake 2 .bsp
|
||||||
Mod_LoadBrushModel (mod, buf);
|
Mod_LoadBrushModel (mod, buf);
|
||||||
|
|
||||||
if (gl_textures_external->int_val)
|
if (gl_textures_external->int_val
|
||||||
|
&& mod_funcs->Mod_LoadExternalTextures)
|
||||||
mod_funcs->Mod_LoadExternalTextures (mod);
|
mod_funcs->Mod_LoadExternalTextures (mod);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,8 @@ typedef struct skinbank_s {
|
||||||
int users;
|
int users;
|
||||||
} skinbank_t;
|
} skinbank_t;
|
||||||
|
|
||||||
|
vid_model_funcs_t *m_funcs;
|
||||||
|
|
||||||
// each translation has one extra line for palette (vs colormap) based
|
// each translation has one extra line for palette (vs colormap) based
|
||||||
// translation (for 32bit rendering)
|
// translation (for 32bit rendering)
|
||||||
static byte translations[MAX_TRANSLATIONS][(VID_GRADES + 1) * 256];
|
static byte translations[MAX_TRANSLATIONS][(VID_GRADES + 1) * 256];
|
||||||
|
@ -119,7 +121,7 @@ Skin_SetTranslation (int cmap, int top, int bottom)
|
||||||
else
|
else
|
||||||
dest[BOTTOM_RANGE + i] = bottom + 15 - i;
|
dest[BOTTOM_RANGE + i] = bottom + 15 - i;
|
||||||
}
|
}
|
||||||
Skin_ProcessTranslation (cmap, translations[cmap - 1]);
|
m_funcs->Skin_ProcessTranslation (cmap, translations[cmap - 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
skin_t *
|
skin_t *
|
||||||
|
@ -134,7 +136,7 @@ Skin_SetColormap (skin_t *skin, int cmap)
|
||||||
}
|
}
|
||||||
if (cmap)
|
if (cmap)
|
||||||
skin->colormap = translations[cmap - 1];
|
skin->colormap = translations[cmap - 1];
|
||||||
Skin_SetupSkin (skin, cmap);
|
m_funcs->Skin_SetupSkin (skin, cmap);
|
||||||
return skin;
|
return skin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +221,7 @@ Skin_SetSkin (skin_t *skin, int cmap, const char *skinname)
|
||||||
skin = new_skin ();
|
skin = new_skin ();
|
||||||
skin->texels = tex;
|
skin->texels = tex;
|
||||||
skin->name = name;
|
skin->name = name;
|
||||||
Skin_SetupSkin (skin, cmap);
|
m_funcs->Skin_SetupSkin (skin, cmap);
|
||||||
return skin;
|
return skin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,5 +245,5 @@ void
|
||||||
Skin_Init (void)
|
Skin_Init (void)
|
||||||
{
|
{
|
||||||
skin_cache = Hash_NewTable (127, skin_getkey, skin_free, 0);
|
skin_cache = Hash_NewTable (127, skin_getkey, skin_free, 0);
|
||||||
Skin_InitTranslations ();
|
m_funcs->Skin_InitTranslations ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,16 +36,16 @@ static __attribute__ ((used)) const char rcsid[] = "$Id$";
|
||||||
#include "mod_internal.h"
|
#include "mod_internal.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_ProcessTranslation (int cmap, const byte *translation)
|
sw_Skin_ProcessTranslation (int cmap, const byte *translation)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_SetupSkin (skin_t *skin, int cmap)
|
sw_Skin_SetupSkin (skin_t *skin, int cmap)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Skin_InitTranslations (void)
|
sw_Skin_InitTranslations (void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,7 +155,7 @@ gl_R_Init (void)
|
||||||
|
|
||||||
gl_texture_number = gl_R_InitGraphTextures (gl_texture_number);
|
gl_texture_number = gl_R_InitGraphTextures (gl_texture_number);
|
||||||
|
|
||||||
gl_texture_number = Skin_Init_Textures (gl_texture_number);
|
gl_texture_number = gl_Skin_Init_Textures (gl_texture_number);
|
||||||
|
|
||||||
r_init = 1;
|
r_init = 1;
|
||||||
gl_R_InitParticles ();
|
gl_R_InitParticles ();
|
||||||
|
|
|
@ -49,12 +49,10 @@ static vid_model_funcs_t model_funcs = {
|
||||||
|
|
||||||
Skin_SetColormap,
|
Skin_SetColormap,
|
||||||
Skin_SetSkin,
|
Skin_SetSkin,
|
||||||
Skin_SetupSkin,
|
gl_Skin_SetupSkin,
|
||||||
Skin_SetTranslation,
|
Skin_SetTranslation,
|
||||||
Skin_ProcessTranslation,
|
gl_Skin_ProcessTranslation,
|
||||||
Skin_InitTranslations,
|
gl_Skin_InitTranslations,
|
||||||
Skin_Init_Textures,
|
|
||||||
Skin_SetPlayerSkin,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vid_render_funcs_t gl_vid_render_funcs = {
|
vid_render_funcs_t gl_vid_render_funcs = {
|
||||||
|
|
|
@ -49,12 +49,10 @@ static vid_model_funcs_t model_funcs = {
|
||||||
|
|
||||||
Skin_SetColormap,
|
Skin_SetColormap,
|
||||||
Skin_SetSkin,
|
Skin_SetSkin,
|
||||||
Skin_SetupSkin,
|
glsl_Skin_SetupSkin,
|
||||||
Skin_SetTranslation,
|
Skin_SetTranslation,
|
||||||
Skin_ProcessTranslation,
|
glsl_Skin_ProcessTranslation,
|
||||||
Skin_InitTranslations,
|
glsl_Skin_InitTranslations,
|
||||||
Skin_Init_Textures,
|
|
||||||
Skin_SetPlayerSkin,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vid_render_funcs_t glsl_vid_render_funcs = {
|
vid_render_funcs_t glsl_vid_render_funcs = {
|
||||||
|
|
|
@ -44,12 +44,10 @@ static vid_model_funcs_t model_funcs = {
|
||||||
|
|
||||||
Skin_SetColormap,
|
Skin_SetColormap,
|
||||||
Skin_SetSkin,
|
Skin_SetSkin,
|
||||||
Skin_SetupSkin,
|
sw_Skin_SetupSkin,
|
||||||
Skin_SetTranslation,
|
Skin_SetTranslation,
|
||||||
Skin_ProcessTranslation,
|
sw_Skin_ProcessTranslation,
|
||||||
Skin_InitTranslations,
|
sw_Skin_InitTranslations,
|
||||||
Skin_Init_Textures,
|
|
||||||
Skin_SetPlayerSkin,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vid_render_funcs_t sw_vid_render_funcs = {
|
vid_render_funcs_t sw_vid_render_funcs = {
|
||||||
|
|
|
@ -49,12 +49,10 @@ static vid_model_funcs_t model_funcs = {
|
||||||
|
|
||||||
Skin_SetColormap,
|
Skin_SetColormap,
|
||||||
Skin_SetSkin,
|
Skin_SetSkin,
|
||||||
Skin_SetupSkin,
|
sw_Skin_SetupSkin,
|
||||||
Skin_SetTranslation,
|
Skin_SetTranslation,
|
||||||
Skin_ProcessTranslation,
|
sw_Skin_ProcessTranslation,
|
||||||
Skin_InitTranslations,
|
sw_Skin_InitTranslations,
|
||||||
Skin_Init_Textures,
|
|
||||||
Skin_SetPlayerSkin,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vid_render_funcs_t sw32_vid_render_funcs = {
|
vid_render_funcs_t sw32_vid_render_funcs = {
|
||||||
|
|
Loading…
Reference in a new issue