add wrappers for function pointers with default arguments

This commit is contained in:
Jonathan Gray 2013-04-22 19:13:42 +10:00
parent 72b488e1c1
commit 36efb74c91
11 changed files with 127 additions and 46 deletions

View file

@ -632,7 +632,7 @@ void CG_PredictPlayerState( void ) {
//FIXME: is this bad???
cg_pmove.gent = NULL;
cg_pmove.ps = &cg.predicted_player_state;
cg_pmove.trace = CG_Trace;
cg_pmove._trace = CG_Trace;
cg_pmove.pointcontents = CG_PointContents;
cg_pmove.tracemask = MASK_PLAYERSOLID;
cg_pmove.noFootsteps = 0;//( cgs.dmflags & DF_NO_FOOTSTEPS ) > 0;

View file

@ -236,10 +236,10 @@ void CL_InitUI( void ) {
uii.R_RegisterShader = re.RegisterShader;
uii.R_RegisterShaderNoMip = re.RegisterShaderNoMip;
uii.R_RegisterFont = re.RegisterFont;
uii.R_Font_StrLenPixels = re.Font_StrLenPixels;
uii._R_Font_StrLenPixels = re._Font_StrLenPixels;
uii.R_Font_StrLenChars = re.Font_StrLenChars;
uii.R_Font_HeightPixels = re.Font_HeightPixels;
uii.R_Font_DrawString = re.Font_DrawString;
uii._R_Font_HeightPixels = re._Font_HeightPixels;
uii._R_Font_DrawString = re._Font_DrawString;
uii.Language_IsAsian = re.Language_IsAsian;
uii.Language_UsesSpaces = re.Language_UsesSpaces;
uii.AnyLanguage_ReadCharFromString = re.AnyLanguage_ReadCharFromString;

View file

@ -9234,7 +9234,7 @@ void Interface_Init( interface_export_t *pe )
//Save / Load functions
pe->I_WriteSaveData = gi.AppendToSaveGame;
pe->I_ReadSaveData = gi.ReadFromSaveGame;
pe->_I_ReadSaveData = gi._ReadFromSaveGame;
pe->I_LinkEntity = ICARUS_LinkEntity;
gclient_t *client;

View file

@ -131,8 +131,13 @@ typedef struct {
// callbacks to test the world
// these will be different functions during game and cgame
void (*trace)( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
const int passEntityNum, const int contentMask, const EG2_Collision eG2TraceType = (EG2_Collision)0, const int useLod = 0 );
void (*_trace)( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
const int passEntityNum, const int contentMask, const EG2_Collision eG2TraceType, const int useLod );
void trace( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
const int passEntityNum, const int contentMask, const EG2_Collision eG2TraceType = (EG2_Collision)0, const int useLod = 0 )
{
return (*_trace)(results, start, mins, maxs, end, passEntityNum, contentMask, eG2TraceType, useLod);
}
int (*pointcontents)( const vec3_t point, int passEntityNum );
} pmove_t;
@ -621,4 +626,4 @@ void PlayerStateToEntityState( playerState_t *ps, entityState_t *s );
qboolean BG_PlayerTouchesItem( playerState_t *ps, entityState_t *item, int atTime );
#endif//#ifndef __BG_PUBLIC_H__
#endif//#ifndef __BG_PUBLIC_H__

View file

@ -2774,7 +2774,7 @@ extern cvar_t *g_skippingcin;
pm.cmd = *ucmd;
// pm.tracemask = MASK_PLAYERSOLID; // used differently for navgen
pm.tracemask = ent->clipmask;
pm.trace = gi.trace;
pm._trace = gi._trace;
pm.pointcontents = gi.pointcontents;
pm.debugLevel = g_debugMove->integer;
pm.noFootsteps = 0;//( g_dmflags->integer & DF_NO_FOOTSTEPS ) > 0;

View file

@ -151,8 +151,16 @@ typedef struct {
// Savegame handling
//
qboolean (*AppendToSaveGame)(unsigned long chid, void *data, int length);
int (*ReadFromSaveGame)(unsigned long chid, void *pvAddress, int iLength, void **ppvAddressPtr = NULL);
int (*ReadFromSaveGameOptional)(unsigned long chid, void *pvAddress, int iLength, void **ppvAddressPtr = NULL);
int (*_ReadFromSaveGame)(unsigned long chid, void *pvAddress, int iLength, void **ppvAddressPtr);
int ReadFromSaveGame(unsigned long chid, void *pvAddress, int iLength, void **ppvAddressPtr = NULL)
{
return (*_ReadFromSaveGame)(chid, pvAddress, iLength, ppvAddressPtr);
}
int (*_ReadFromSaveGameOptional)(unsigned long chid, void *pvAddress, int iLength, void **ppvAddressPtr);
int ReadFromSaveGameOptional(unsigned long chid, void *pvAddress, int iLength, void **ppvAddressPtr = NULL)
{
return (*_ReadFromSaveGameOptional)(chid, pvAddress, iLength, ppvAddressPtr);
}
// add commands to the console as if they were typed in
// for map changing, etc
@ -189,8 +197,13 @@ typedef struct {
void (*SetBrushModel)( gentity_t *ent, const char *name );
// collision detection against all linked entities
void (*trace)( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
const int passEntityNum, const int contentmask , const EG2_Collision eG2TraceType = (EG2_Collision)0, const int useLod = 0);
void (*_trace)( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
const int passEntityNum, const int contentmask , const EG2_Collision eG2TraceType, const int useLod);
void trace( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
const int passEntityNum, const int contentmask , const EG2_Collision eG2TraceType = (EG2_Collision)0, const int useLod = 0)
{
return (*_trace)(results, start, mins, maxs, end, passEntityNum, contentmask, eG2TraceType, useLod);
}
// point contents against all linked entities
int (*pointcontents)( const vec3_t point, int passEntityNum );
@ -225,8 +238,13 @@ Ghoul2 Insert Start
*/
qhandle_t (*G2API_PrecacheGhoul2Model)(const char *fileName);
int (*G2API_InitGhoul2Model)(CGhoul2Info_v &ghoul2, const char *fileName, int modelIndex, qhandle_t customSkin = NULL,
qhandle_t customShader = NULL, int modelFlags = 0, int lodBias = 0);
int (*_G2API_InitGhoul2Model)(CGhoul2Info_v &ghoul2, const char *fileName, int modelIndex, qhandle_t customSkin,
qhandle_t customShader, int modelFlags, int lodBias);
int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int modelIndex, qhandle_t customSkin = NULL,
qhandle_t customShader = NULL, int modelFlags = 0, int lodBias = 0)
{
return (*_G2API_InitGhoul2Model)(ghoul2, fileName, modelIndex, customSkin, customShader, modelFlags, lodBias);
}
qboolean (*G2API_SetLodBias)(CGhoul2Info *ghlInfo, int lodBias);
qboolean (*G2API_SetSkin)(CGhoul2Info *ghlInfo, qhandle_t customSkin);
qboolean (*G2API_SetShader)(CGhoul2Info *ghlInfo, qhandle_t customShader);
@ -235,8 +253,13 @@ qboolean (*G2API_SetSurfaceOnOff)(CGhoul2Info *ghlInfo, const char *surfaceName,
qboolean (*G2API_SetRootSurface)(CGhoul2Info_v &ghlInfo, const int modelIndex, const char *surfaceName);
qboolean (*G2API_RemoveSurface)(CGhoul2Info *ghlInfo, const int index);
int (*G2API_AddSurface)(CGhoul2Info *ghlInfo, int surfaceNumber, int polyNumber, float BarycentricI, float BarycentricJ, int lod );
qboolean (*G2API_SetBoneAnim)(CGhoul2Info *ghlInfo, const char *boneName, const int startFrame, const int endFrame,
const int flags, const float animSpeed, const int currentTime, const float setFrame = -1, const int blendTime = -1);
qboolean (*_G2API_SetBoneAnim)(CGhoul2Info *ghlInfo, const char *boneName, const int startFrame, const int endFrame,
const int flags, const float animSpeed, const int currentTime, const float setFrame, const int blendTime);
qboolean G2API_SetBoneAnim(CGhoul2Info *ghlInfo, const char *boneName, const int startFrame, const int endFrame,
const int flags, const float animSpeed, const int currentTime, const float setFrame = -1, const int blendTime = -1)
{
return (*_G2API_SetBoneAnim)(ghlInfo, boneName, startFrame, endFrame, flags, animSpeed, currentTime, setFrame, blendTime);
}
qboolean (*G2API_GetBoneAnim)(CGhoul2Info *ghlInfo, const char *boneName, const int currentTime, float *currentFrame,
int *startFrame, int *endFrame, int *flags, float *animSpeed, int *modelList);
qboolean (*G2API_GetBoneAnimIndex)(CGhoul2Info *ghlInfo, const int iBoneIndex, const int currentTime, float *currentFrame,
@ -248,11 +271,22 @@ qboolean (*G2API_PauseBoneAnim)(CGhoul2Info *ghlInfo, const char *boneName, cons
qboolean (*G2API_PauseBoneAnimIndex)(CGhoul2Info *ghlInfo, const int boneIndex, const int currentTime);
qboolean (*G2API_IsPaused)(CGhoul2Info *ghlInfo, const char *boneName);
qboolean (*G2API_StopBoneAnim)(CGhoul2Info *ghlInfo, const char *boneName);
qboolean (*G2API_SetBoneAngles)(CGhoul2Info *ghlInfo, const char *boneName, const vec3_t angles,
qboolean (*_G2API_SetBoneAngles)(CGhoul2Info *ghlInfo, const char *boneName, const vec3_t angles,
const int flags, const Eorientations up, const Eorientations right, const Eorientations forward,
qhandle_t *modelList, int blendTime = 0, int blendStart = 0);
qboolean (*G2API_SetBoneAnglesMatrix)(CGhoul2Info *ghlInfo, const char *boneName, const mdxaBone_t &matrix, const int flags,
qhandle_t *modelList, int blendTime = 0, int currentTime = 0);
qhandle_t *modelList, int blendTime, int blendStart);
qboolean G2API_SetBoneAngles(CGhoul2Info *ghlInfo, const char *boneName, const vec3_t angles,
const int flags, const Eorientations up, const Eorientations right, const Eorientations forward,
qhandle_t *modelList, int blendTime = 0, int blendStart = 0)
{
return (*_G2API_SetBoneAngles)(ghlInfo, boneName, angles, flags, up, right, forward, modelList, blendTime, blendStart);
}
qboolean (*_G2API_SetBoneAnglesMatrix)(CGhoul2Info *ghlInfo, const char *boneName, const mdxaBone_t &matrix, const int flags,
qhandle_t *modelList, int blendTime, int currentTime);
qboolean G2API_SetBoneAnglesMatrix(CGhoul2Info *ghlInfo, const char *boneName, const mdxaBone_t &matrix, const int flags,
qhandle_t *modelList, int blendTime = 0, int currentTime = 0)
{
return (*_G2API_SetBoneAnglesMatrix)(ghlInfo, boneName, matrix, flags, modelList, blendTime, currentTime);
}
qboolean (*G2API_StopBoneAngles)(CGhoul2Info *ghlInfo, const char *boneName);
qboolean (*G2API_RemoveBone)(CGhoul2Info *ghlInfo, const char *boneName);
qboolean (*G2API_RemoveBolt)(CGhoul2Info *ghlInfo, const int index);
@ -276,7 +310,11 @@ void (*G2API_CollisionDetect)(CCollisionRecord *collRecMap, CGhoul2Info_v &ghou
int frameNumber, int entNum, vec3_t rayStart, vec3_t rayEnd, vec3_t scale, CMiniHeap *G2VertSpace,
EG2_Collision eG2TraceType, int useLod, float fRadius);
void (*G2API_GiveMeVectorFromMatrix)(mdxaBone_t &boltMatrix, Eorientations flags, vec3_t &vec);
void (*G2API_CopyGhoul2Instance)(CGhoul2Info_v &ghoul2From, CGhoul2Info_v &ghoul2To, int modelIndex = -1);
void (*_G2API_CopyGhoul2Instance)(CGhoul2Info_v &ghoul2From, CGhoul2Info_v &ghoul2To, int modelIndex);
void G2API_CopyGhoul2Instance(CGhoul2Info_v &ghoul2From, CGhoul2Info_v &ghoul2To, int modelIndex = -1)
{
return (*_G2API_CopyGhoul2Instance)(ghoul2From, ghoul2To, modelIndex);
}
void (*G2API_CleanGhoul2Models)(CGhoul2Info_v &ghoul2);
IGhoul2InfoArray & (*TheGhoul2InfoArray)();
int (*G2API_GetParentSurface)(CGhoul2Info *ghlInfo, const int index);
@ -287,12 +325,22 @@ qboolean (*G2API_SetNewOrigin)(CGhoul2Info *ghlInfo, const int boltIndex);
int (*G2API_GetBoneIndex)(CGhoul2Info *ghlInfo, const char *boneName, qboolean bAddIfNotFound);
qboolean (*G2API_StopBoneAnglesIndex)(CGhoul2Info *ghlInfo, const int index);
qboolean (*G2API_StopBoneAnimIndex)(CGhoul2Info *ghlInfo, const int index);
qboolean (*G2API_SetBoneAnglesIndex)(CGhoul2Info *ghlInfo, const int index, const vec3_t angles, const int flags,
qboolean (*_G2API_SetBoneAnglesIndex)(CGhoul2Info *ghlInfo, const int index, const vec3_t angles, const int flags,
const Eorientations yaw, const Eorientations pitch, const Eorientations roll,
qhandle_t *modelList, int blendTime = 0, int currentTime = 0);
qhandle_t *modelList, int blendTime, int currentTime);
qboolean G2API_SetBoneAnglesIndex(CGhoul2Info *ghlInfo, const int index, const vec3_t angles, const int flags,
const Eorientations yaw, const Eorientations pitch, const Eorientations roll,
qhandle_t *modelList, int blendTime = 0, int currentTime = 0)
{
return (*_G2API_SetBoneAnglesIndex)(ghlInfo, index, angles, flags, yaw, pitch, roll, modelList, blendTime, currentTime);
}
qboolean (*G2API_SetBoneAnglesMatrixIndex)(CGhoul2Info *ghlInfo, const int index, const mdxaBone_t &matrix,
const int flags, qhandle_t *modelList, int blendTime, int currentTime);
qboolean (*G2API_SetBoneAnimIndex)(CGhoul2Info *ghlInfo, const int index, const int startFrame, const int endFrame, const int flags, const float animSpeed, const int currentTime, const float setFrame = -1, const int blendTime = -1);
qboolean (*_G2API_SetBoneAnimIndex)(CGhoul2Info *ghlInfo, const int index, const int startFrame, const int endFrame, const int flags, const float animSpeed, const int currentTime, const float setFrame, const int blendTime);
qboolean G2API_SetBoneAnimIndex(CGhoul2Info *ghlInfo, const int index, const int startFrame, const int endFrame, const int flags, const float animSpeed, const int currentTime, const float setFrame = -1, const int blendTime = -1)
{
return (*_G2API_SetBoneAnimIndex)(ghlInfo, index, startFrame, endFrame, flags, animSpeed, currentTime, setFrame, blendTime);
}
qboolean (*G2API_SaveGhoul2Models)(CGhoul2Info_v &ghoul2, char **buffer, int *size);
void (*G2API_LoadGhoul2Models)(CGhoul2Info_v &ghoul2, char *buffer);
void (*G2API_LoadSaveCodeDestructGhoul2Info)(CGhoul2Info_v &ghoul2);

View file

@ -60,9 +60,13 @@ typedef struct interface_export_s
//Save / Load functions
int (*I_WriteSaveData)( unsigned long chid, void *data, int length );
int (*I_ReadSaveData)( unsigned long chid, void *address, int length, void **addressptr = NULL );
int (*_I_ReadSaveData)( unsigned long chid, void *address, int length, void **addressptr );
int I_ReadSaveData( unsigned long chid, void *address, int length, void **addressptr = NULL )
{
return (*_I_ReadSaveData)(chid, address, length, addressptr);
}
int (*I_LinkEntity)( int entID, CSequencer *sequencer, CTaskManager *taskManager );
} interface_export_t;
#endif //__INTERFACE__
#endif //__INTERFACE__

View file

@ -1388,10 +1388,10 @@ refexport_t *GetRefAPI ( int apiVersion, refimport_t *rimp ) {
re.GetBModelVerts = RE_GetBModelVerts;
re.RegisterFont = RE_RegisterFont;
re.Font_StrLenPixels = RE_Font_StrLenPixels;
re._Font_StrLenPixels = RE_Font_StrLenPixels;
re.Font_StrLenChars = RE_Font_StrLenChars;
re.Font_HeightPixels = RE_Font_HeightPixels;
re.Font_DrawString = RE_Font_DrawString;
re._Font_HeightPixels = RE_Font_HeightPixels;
re._Font_DrawString = RE_Font_DrawString;
re.Language_IsAsian = Language_IsAsian;
re.Language_UsesSpaces = Language_UsesSpaces;
re.AnyLanguage_ReadCharFromString = AnyLanguage_ReadCharFromString;

View file

@ -102,10 +102,22 @@ typedef struct {
int (*RegisterFont)(const char *name);
int (*Font_HeightPixels)(const int index, const float scale = 1.0f);
int (*Font_StrLenPixels)(const char *s, const int index, const float scale = 1.0f);
int (*_Font_HeightPixels)(const int index, const float scale);
int Font_HeightPixels(const int index, const float scale = 1.0f)
{
return (*_Font_HeightPixels)(index, scale);
}
int (*_Font_StrLenPixels)(const char *s, const int index, const float scale);
int Font_StrLenPixels(const char *s, const int index, const float scale = 1.0f)
{
return (*_Font_StrLenPixels)(s, index, scale);
}
int (*Font_StrLenChars) (const char *s);
void (*Font_DrawString)(int x, int y, const char *s, const float *rgba, const int iFontHandle, int iMaxPixelWidth, const float scale = 1.0f);
void (*_Font_DrawString)(int x, int y, const char *s, const float *rgba, const int iFontHandle, int iMaxPixelWidth, const float scale);
void Font_DrawString(int x, int y, const char *s, const float *rgba, const int iFontHandle, int iMaxPixelWidth, const float scale = 1.0f)
{
return (*_Font_DrawString)(x, y, s, rgba, iFontHandle, iMaxPixelWidth, scale);
}
qboolean (*Language_IsAsian) (void);
qboolean (*Language_UsesSpaces) (void);
unsigned int (*AnyLanguage_ReadCharFromString)( const char **ppsText, qboolean *pbIsTrailingPunctuation /* = NULL */);

View file

@ -353,7 +353,7 @@ void SV_InitGameProgs (void) {
import.unlinkentity = SV_UnlinkEntity;
import.EntitiesInBox = SV_AreaEntities;
import.EntityContact = SV_EntityContact;
import.trace = SV_Trace;
import._trace = SV_Trace;
import.pointcontents = SV_PointContents;
import.SetBrushModel = SV_SetBrushModel;
@ -386,8 +386,8 @@ void SV_InitGameProgs (void) {
import.FS_GetFileList = FS_GetFileList;
import.AppendToSaveGame = SG_Append;
import.ReadFromSaveGame = SG_Read;
import.ReadFromSaveGameOptional = SG_ReadOptional;
import._ReadFromSaveGame = SG_Read;
import._ReadFromSaveGameOptional = SG_ReadOptional;
import.AdjustAreaPortalState = SV_AdjustAreaPortalState;
import.AreasConnected = CM_AreasConnected;
@ -412,7 +412,7 @@ Ghoul2 Insert Start
import.G2API_GetBoneAnimIndex = G2API_GetBoneAnimIndex;
import.G2API_AddSurface = G2API_AddSurface;
import.G2API_HaveWeGhoul2Models =G2API_HaveWeGhoul2Models;
import.G2API_InitGhoul2Model = G2API_InitGhoul2Model;
import._G2API_InitGhoul2Model = G2API_InitGhoul2Model;
import.G2API_IsPaused = G2API_IsPaused;
import.G2API_ListBones = G2API_ListBones;
import.G2API_ListSurfaces = G2API_ListSurfaces;
@ -422,9 +422,9 @@ Ghoul2 Insert Start
import.G2API_RemoveBolt = G2API_RemoveBolt;
import.G2API_RemoveBone = G2API_RemoveBone;
import.G2API_RemoveGhoul2Model = G2API_RemoveGhoul2Model;
import.G2API_SetBoneAngles = G2API_SetBoneAngles;
import.G2API_SetBoneAnglesMatrix = G2API_SetBoneAnglesMatrix;
import.G2API_SetBoneAnim = G2API_SetBoneAnim;
import._G2API_SetBoneAngles = G2API_SetBoneAngles;
import._G2API_SetBoneAnglesMatrix = G2API_SetBoneAnglesMatrix;
import._G2API_SetBoneAnim = G2API_SetBoneAnim;
import.G2API_SetLodBias = G2API_SetLodBias;
import.G2API_SetRootSurface = G2API_SetRootSurface;
import.G2API_SetShader = G2API_SetShader;
@ -438,7 +438,7 @@ Ghoul2 Insert Start
import.G2API_GetAnimRange = G2API_GetAnimRange;
import.G2API_GetAnimRangeIndex = G2API_GetAnimRangeIndex;
import.G2API_GiveMeVectorFromMatrix = G2API_GiveMeVectorFromMatrix;
import.G2API_CopyGhoul2Instance = G2API_CopyGhoul2Instance;
import._G2API_CopyGhoul2Instance = G2API_CopyGhoul2Instance;
import.G2API_GetGhoul2ModelFlags = G2API_GetGhoul2ModelFlags;
import.G2API_CleanGhoul2Models = G2API_CleanGhoul2Models;
import.TheGhoul2InfoArray = TheGhoul2InfoArray;
@ -450,9 +450,9 @@ Ghoul2 Insert Start
import.G2API_GetBoneIndex = G2API_GetBoneIndex;
import.G2API_StopBoneAnglesIndex = G2API_StopBoneAnglesIndex;
import.G2API_StopBoneAnimIndex = G2API_StopBoneAnimIndex;
import.G2API_SetBoneAnglesIndex = G2API_SetBoneAnglesIndex;
import._G2API_SetBoneAnglesIndex = G2API_SetBoneAnglesIndex;
import.G2API_SetBoneAnglesMatrixIndex = G2API_SetBoneAnglesMatrixIndex;
import.G2API_SetBoneAnimIndex = G2API_SetBoneAnimIndex;
import._G2API_SetBoneAnimIndex = G2API_SetBoneAnimIndex;
import.G2API_SaveGhoul2Models = G2API_SaveGhoul2Models;
import.G2API_LoadGhoul2Models = G2API_LoadGhoul2Models;
import.G2API_FreeSaveBuffer = G2API_FreeSaveBuffer;

View file

@ -48,10 +48,22 @@ typedef struct {
qhandle_t (*R_RegisterShader)( const char *name ); // returns white if not found
qhandle_t (*R_RegisterShaderNoMip)( const char *name ); // returns white if not found
qhandle_t (*R_RegisterFont)( const char *name ); // returns 0 for bad font
int (*R_Font_StrLenPixels)(const char *text, const int setIndex, const float scale = 1.0f);
int (*_R_Font_StrLenPixels)(const char *text, const int setIndex, const float scale);
int R_Font_StrLenPixels(const char *text, const int setIndex, const float scale = 1.0f)
{
return (*_R_Font_StrLenPixels)(text, setIndex, scale);
}
int (*R_Font_StrLenChars)(const char *text);
int (*R_Font_HeightPixels)(const int setIndex, const float scale = 1.0f);
void (*R_Font_DrawString)(int ox, int oy, const char *text, const float *rgba, const int setIndex, int iMaxPixelWidth, const float scale = 1.0f);
int (*_R_Font_HeightPixels)(const int setIndex, const float scale);
int R_Font_HeightPixels(const int setIndex, const float scale = 1.0f)
{
return (*_R_Font_HeightPixels)(setIndex, scale);
}
void (*_R_Font_DrawString)(int ox, int oy, const char *text, const float *rgba, const int setIndex, int iMaxPixelWidth, const float scale);
void R_Font_DrawString(int ox, int oy, const char *text, const float *rgba, const int setIndex, int iMaxPixelWidth, const float scale = 1.0f)
{
return (*_R_Font_DrawString)(ox, oy, text, rgba, setIndex, iMaxPixelWidth, scale);
}
qboolean (*Language_IsAsian) (void);
qboolean (*Language_UsesSpaces) (void);
unsigned int (*AnyLanguage_ReadCharFromString)( const char **ppsText, qboolean *pbIsTrailingPunctuation /* = NULL */);