mirror of
https://github.com/bearstonem/openmohaa-vr.git
synced 2026-10-23 07:00:22 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
312332ac5e | ||
|
|
27dcbdb49a | ||
|
|
96ecb4535a | ||
|
|
f1f1f6e073 | ||
|
|
55dc84d932 | ||
|
|
6c874641d7 | ||
|
|
fe01523cb1 | ||
|
|
827bd38603 | ||
|
|
862142b6c4 | ||
|
|
014e86747f | ||
|
|
08057f52bc | ||
|
|
d3870ccf45 | ||
|
|
e54f4a65f9 | ||
|
|
a69aa0830a | ||
|
|
fe8170e102 | ||
|
|
c660e0162f | ||
|
|
55ad4dacdd | ||
|
|
dd0799b52f | ||
|
|
d546dd9895 | ||
|
|
389da58ec5 | ||
|
|
4e3eb02915 | ||
|
|
756198a02c | ||
|
|
9a6e7f23f9 | ||
|
|
c4aca55b1a |
No files matched your search
@@ -1,4 +1,6 @@
|
||||
build
|
||||
mohaa-re
|
||||
out
|
||||
Makefile.local
|
||||
*.swp
|
||||
*tags
|
||||
|
||||
@@ -91,9 +91,11 @@ Visual Studio (2019 or 2022) is generally preferred.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||

|
||||

|
||||
| | |
|
||||
|---------------------------------------------------------------------|---------------------------------------------------------------------------|
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
## Third party
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ void CG_ScoresUp_f( void )
|
||||
}
|
||||
|
||||
cg.showScores = qfalse;
|
||||
cgi.UI_HideScoreBoard(cg.scoresMenuName);
|
||||
cgi.UI_HideScoreBoard();
|
||||
}
|
||||
|
||||
baseshader_t* CG_GetShaderUnderCrosshair(qboolean bVerbose, trace_t* pRetTrace)
|
||||
@@ -562,11 +562,12 @@ int CG_WeaponCommandButtonBits(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
iShiftedWeaponCommand = cg.iWeaponCommand << 7;
|
||||
|
||||
cg.iWeaponCommandSend++;
|
||||
if (cg.iWeaponCommandSend > 2) {
|
||||
cg.iWeaponCommand = 0;
|
||||
}
|
||||
|
||||
iShiftedWeaponCommand = cg.iWeaponCommand << 7;
|
||||
return iShiftedWeaponCommand & WEAPON_COMMAND_MASK;
|
||||
}
|
||||
+28
-10
@@ -816,7 +816,7 @@ void CG_DrawPlayerTeam()
|
||||
return;
|
||||
}
|
||||
|
||||
handle = NULL;
|
||||
handle = 0;
|
||||
if (cg.snap->ps.stats[STAT_TEAM] == 3)
|
||||
{
|
||||
handle = cgi.R_RegisterShader("textures/hud/allies");
|
||||
@@ -851,7 +851,7 @@ void CG_DrawPlayerEntInfo()
|
||||
}
|
||||
|
||||
iClientNum = cg.snap->ps.stats[STAT_INFOCLIENT];
|
||||
handle = NULL;
|
||||
handle = 0;
|
||||
pszClientInfo = CG_ConfigString(iClientNum + CS_PLAYERS);
|
||||
pszName = Info_ValueForKey(pszClientInfo, "name");
|
||||
|
||||
@@ -982,14 +982,32 @@ void CG_DrawStopwatch()
|
||||
{
|
||||
int iFraction;
|
||||
|
||||
if (!cg_hud->integer || !cgi.stopWatch->iStartTime
|
||||
|| cgi.stopWatch->iStartTime >= cgi.stopWatch->iEndTime
|
||||
|| cgi.stopWatch->iEndTime <= cg.time
|
||||
// don't draw the stopwatch with the objective menu
|
||||
|| cg.ObjectivesCurrentAlpha >= 0.02
|
||||
// the player isn't alive
|
||||
|| cg.snap && cg.snap->ps.stats[STAT_HEALTH] <= 0)
|
||||
{
|
||||
if (!cg_hud->integer) {
|
||||
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!cgi.stopWatch->iStartTime) {
|
||||
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cgi.stopWatch->iStartTime >= cgi.stopWatch->iEndTime) {
|
||||
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cgi.stopWatch->iEndTime <= cg.time) {
|
||||
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cg.ObjectivesCurrentAlpha >= 0.02) {
|
||||
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cg.snap && cg.snap->ps.stats[STAT_HEALTH] <= 0) {
|
||||
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ clightstyle_t cg_lightstyle[ MAX_LIGHTSTYLES * 2 ];
|
||||
CG_LightStyleColor
|
||||
================
|
||||
*/
|
||||
qboolean CG_LightStyleColor( int style, int realtime, float color[4], qboolean clamp )
|
||||
qboolean CG_LightStyleColor( int style, int realtime, vec4_t color, qboolean clamp )
|
||||
{
|
||||
clightstyle_t *ls;
|
||||
int i, time;
|
||||
|
||||
@@ -302,7 +302,7 @@ typedef struct {
|
||||
float farplane_bias;
|
||||
vec3_t farplane_color;
|
||||
qboolean farplane_cull;
|
||||
int skyboxFarplane;
|
||||
float skyboxFarplane;
|
||||
qboolean renderTerrain;
|
||||
float farclipOverride;
|
||||
vec3_t farplaneColorOverride;
|
||||
@@ -312,7 +312,7 @@ typedef struct {
|
||||
float sky_alpha;
|
||||
vec3_t sky_origin;
|
||||
vec3_t sky_axis[3]; // rotation vectors
|
||||
int skyboxSpeed;
|
||||
float skyboxSpeed;
|
||||
|
||||
// weapon viewkick recoil
|
||||
float viewkick[2];
|
||||
@@ -810,9 +810,9 @@ void CG_MultiBeam( centity_t *cent );
|
||||
// cg_lightstyles.cpp
|
||||
void CG_SetLightStyle( int num, const char *s );
|
||||
#ifdef __cplusplus
|
||||
qboolean CG_LightStyleColor( int style, int realtime, float color[4], qboolean clamp = qfalse );
|
||||
qboolean CG_LightStyleColor( int style, int realtime, vec4_t color, qboolean clamp = qfalse );
|
||||
#else
|
||||
qboolean CG_LightStyleColor( int style, int realtime, float color[4], qboolean clamp );
|
||||
qboolean CG_LightStyleColor( int style, int realtime, vec4_t color, qboolean clamp );
|
||||
#endif
|
||||
void CG_ClearLightStyles( void );
|
||||
int CG_RegisterLightStyle( const char * name );
|
||||
|
||||
@@ -541,7 +541,7 @@ void CG_ParseCGMessage()
|
||||
// get the integer as string
|
||||
snprintf(cTmp, sizeof(cTmp), "%d", iLarge);
|
||||
|
||||
if (iType == 23) {
|
||||
if (iType == 26) {
|
||||
sEffect = "models/fx/crates/debris_";
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -229,22 +229,22 @@ void CG_ParseScores()
|
||||
|
||||
if (cgs.gametype == GT_TOW)
|
||||
{
|
||||
cgi.Cvar_Set("tow_allied_obj1", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_allied_obj2", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_allied_obj3", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_allied_obj4", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_allied_obj5", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_axis_obj1", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_axis_obj2", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_axis_obj3", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_axis_obj4", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_axis_obj5", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("tow_allied_obj1", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_allied_obj2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_allied_obj3", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_allied_obj4", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_allied_obj5", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_axis_obj1", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_axis_obj2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_axis_obj3", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_axis_obj4", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("tow_axis_obj5", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
}
|
||||
|
||||
if (cgs.gametype == GT_LIBERATION)
|
||||
{
|
||||
cgi.Cvar_Set("scoreboard_toggle1", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("scoreboard_toggle2", va("%i", cgi.Argv(iCurrentEntry++)));
|
||||
cgi.Cvar_Set("scoreboard_toggle1", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
cgi.Cvar_Set("scoreboard_toggle2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
|
||||
}
|
||||
|
||||
for (i = 0; i < iEntryCount; ++i)
|
||||
|
||||
@@ -219,16 +219,32 @@ CG_Stopwatch_f
|
||||
|
||||
================
|
||||
*/
|
||||
#if TARGET_GAME_PROTOCOL >= 15
|
||||
|
||||
static void CG_Stopwatch_f()
|
||||
{
|
||||
if (cgi.Argc() < 3) {
|
||||
Com_Error(1, "stopwatch didn't have 2 parameters");
|
||||
}
|
||||
if (cgi.Argc() < 3) {
|
||||
Com_Error(ERR_DROP, "stopwatch didn't have 2 parameters");
|
||||
}
|
||||
|
||||
cgi.stopWatch->iStartTime = 1000 * atoi(cgi.Argv(1));
|
||||
cgi.stopWatch->iEndTime = cgi.stopWatch->iStartTime + 1000 * atoi(cgi.Argv(2));
|
||||
cgi.stopWatch->iStartTime = atoi(cgi.Argv(1));
|
||||
cgi.stopWatch->iEndTime = cgi.stopWatch->iStartTime + 1000 * atoi(cgi.Argv(2));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void CG_Stopwatch_f()
|
||||
{
|
||||
if (cgi.Argc() < 3) {
|
||||
Com_Error(ERR_DROP, "stopwatch didn't have 2 parameters");
|
||||
}
|
||||
|
||||
cgi.stopWatch->iStartTime = 1000 * atoi(cgi.Argv(1));
|
||||
cgi.stopWatch->iEndTime = cgi.stopWatch->iStartTime + 1000 * atoi(cgi.Argv(2));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
================
|
||||
CG_ServerLag_f
|
||||
@@ -271,6 +287,50 @@ static void CG_ServerCommand(void)
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (!strcmp(cmd, "printdeathmsg")) {
|
||||
const char* s1, * s2, * s3, * s4, * s5;
|
||||
const char* result1, * result2;
|
||||
int hudColor;
|
||||
|
||||
result1 = NULL;
|
||||
result2 = NULL;
|
||||
s1 = cgi.Argv(1);
|
||||
s2 = cgi.Argv(2);
|
||||
s3 = cgi.Argv(3);
|
||||
s4 = cgi.Argv(4);
|
||||
s5 = cgi.Argv(5);
|
||||
|
||||
if (*s5 == tolower(*s5)) {
|
||||
hudColor = 4;
|
||||
} else {
|
||||
hudColor = 5;
|
||||
}
|
||||
|
||||
if (*s1 != 'x')
|
||||
result1 = cgi.LV_ConvertString(s1);
|
||||
if (*s2 != 'x')
|
||||
result2 = cgi.LV_ConvertString(s2);
|
||||
if (tolower(*s5) == 's')
|
||||
{
|
||||
cgi.Printf("%c%s %s\n", hudColor, s4, result1);
|
||||
}
|
||||
else if (tolower(*s5) == 'p')
|
||||
{
|
||||
if (*s2 == 'x')
|
||||
cgi.Printf("%c%s %s %s\n", hudColor, s4, result1, s3);
|
||||
else
|
||||
cgi.Printf("%c%s %s %s%s\n", hudColor, s4, result1, s3, result2);
|
||||
}
|
||||
else if (tolower(*s5) == 'w')
|
||||
{
|
||||
cgi.Printf("%c%s %s\n", hudColor, s4, result1);
|
||||
}
|
||||
else
|
||||
{
|
||||
cgi.Printf("%s", cgi.Argv(1));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!strcmp(cmd, "stufftext")) {
|
||||
cgi.Cmd_Stuff(cgi.Argv(1));
|
||||
|
||||
@@ -799,7 +799,7 @@ void CG_DrawActiveFrame( int serverTime, int frameTime, stereoFrame_t stereoView
|
||||
cgi.SendClientCommand("stats");
|
||||
}
|
||||
|
||||
cg.bIntermissionDisplay = qfalse;
|
||||
cg.bIntermissionDisplay = qtrue;
|
||||
}
|
||||
else if (cg.bIntermissionDisplay)
|
||||
{
|
||||
|
||||
+81
-79
@@ -242,6 +242,16 @@ void IN_MoveleftDown(void) {IN_KeyDown(&in_moveleft);}
|
||||
void IN_MoveleftUp(void) {IN_KeyUp(&in_moveleft);}
|
||||
void IN_MoverightDown(void) {IN_KeyDown(&in_moveright);}
|
||||
void IN_MoverightUp(void) {IN_KeyUp(&in_moveright);}
|
||||
void IN_AttackPrimaryDown(void) { IN_KeyDown(&in_buttons[0]);}
|
||||
void IN_AttackPrimaryUp(void) { IN_KeyUp(&in_buttons[0]); }
|
||||
void IN_AttackSecondaryDown(void) { IN_KeyDown(&in_buttons[1]); }
|
||||
void IN_AttackSecondaryUp(void) { IN_KeyUp(&in_buttons[1]); }
|
||||
void IN_UseDown(void) { IN_KeyDown(&in_buttons[3]); }
|
||||
void IN_UseUp(void) { IN_KeyUp(&in_buttons[3]); }
|
||||
void IN_LeanLeftDown(void) { IN_KeyDown(&in_buttons[4]); }
|
||||
void IN_LeanLeftUp(void) { IN_KeyUp(&in_buttons[4]); }
|
||||
void IN_LeanRightDown(void) { IN_KeyDown(&in_buttons[5]); }
|
||||
void IN_LeanRightUp(void) { IN_KeyUp(&in_buttons[5]); }
|
||||
|
||||
void IN_SpeedDown(void) {IN_KeyDown(&in_speed);}
|
||||
void IN_SpeedUp(void) {IN_KeyUp(&in_speed);}
|
||||
@@ -341,22 +351,10 @@ void CL_KeyMove( usercmd_t *cmd ) {
|
||||
int movespeed;
|
||||
int forward, side, up;
|
||||
|
||||
//
|
||||
// adjust for speed key / running
|
||||
// the walking flag is to keep animations consistant
|
||||
// even during acceleration and develeration
|
||||
//
|
||||
if ( in_speed.active ^ cl_run->integer ) {
|
||||
movespeed = 127;
|
||||
cmd->buttons |= BUTTON_RUN;
|
||||
} else {
|
||||
cmd->buttons &= ~BUTTON_RUN;
|
||||
movespeed = 64;
|
||||
}
|
||||
|
||||
forward = 0;
|
||||
side = 0;
|
||||
up = 0;
|
||||
movespeed = 127;
|
||||
if ( in_strafe.active ) {
|
||||
side += movespeed * CL_KeyState (&in_right);
|
||||
side -= movespeed * CL_KeyState (&in_left);
|
||||
@@ -461,16 +459,8 @@ CL_JoystickMove
|
||||
=================
|
||||
*/
|
||||
void CL_JoystickMove( usercmd_t *cmd ) {
|
||||
int movespeed;
|
||||
float anglespeed;
|
||||
|
||||
if ( in_speed.active ^ cl_run->integer ) {
|
||||
movespeed = 2;
|
||||
} else {
|
||||
movespeed = 1;
|
||||
cmd->buttons |= BUTTON_RUN;
|
||||
}
|
||||
|
||||
if ( in_speed.active ) {
|
||||
anglespeed = 0.001 * cls.frametime * cl_anglespeedkey->value;
|
||||
} else {
|
||||
@@ -595,7 +585,7 @@ void CL_CmdButtons( usercmd_t *cmd ) {
|
||||
// allow the game to know if any key at all is
|
||||
// currently pressed, even if it isn't bound to anything
|
||||
if ( anykeydown && Key_GetCatcher() == 0) {
|
||||
cmd->buttons |= BUTTON_ANY2;
|
||||
cmd->buttons |= BUTTON_MOUSE;
|
||||
}
|
||||
|
||||
if (anykeydown) {
|
||||
@@ -988,64 +978,76 @@ CL_InitInput
|
||||
============
|
||||
*/
|
||||
void CL_InitInput( void ) {
|
||||
Cmd_AddCommand ("centerview",IN_CenterView);
|
||||
Cmd_AddCommand("centerview", IN_CenterView);
|
||||
|
||||
Cmd_AddCommand ("+moveup",IN_UpDown);
|
||||
Cmd_AddCommand ("-moveup",IN_UpUp);
|
||||
Cmd_AddCommand ("+movedown",IN_DownDown);
|
||||
Cmd_AddCommand ("-movedown",IN_DownUp);
|
||||
Cmd_AddCommand ("+left",IN_LeftDown);
|
||||
Cmd_AddCommand ("-left",IN_LeftUp);
|
||||
Cmd_AddCommand ("+right",IN_RightDown);
|
||||
Cmd_AddCommand ("-right",IN_RightUp);
|
||||
Cmd_AddCommand ("+forward",IN_ForwardDown);
|
||||
Cmd_AddCommand ("-forward",IN_ForwardUp);
|
||||
Cmd_AddCommand ("+back",IN_BackDown);
|
||||
Cmd_AddCommand ("-back",IN_BackUp);
|
||||
Cmd_AddCommand ("+lookup", IN_LookupDown);
|
||||
Cmd_AddCommand ("-lookup", IN_LookupUp);
|
||||
Cmd_AddCommand ("+lookdown", IN_LookdownDown);
|
||||
Cmd_AddCommand ("-lookdown", IN_LookdownUp);
|
||||
Cmd_AddCommand ("+strafe", IN_StrafeDown);
|
||||
Cmd_AddCommand ("-strafe", IN_StrafeUp);
|
||||
Cmd_AddCommand ("+moveleft", IN_MoveleftDown);
|
||||
Cmd_AddCommand ("-moveleft", IN_MoveleftUp);
|
||||
Cmd_AddCommand ("+moveright", IN_MoverightDown);
|
||||
Cmd_AddCommand ("-moveright", IN_MoverightUp);
|
||||
Cmd_AddCommand ("+speed", IN_SpeedDown);
|
||||
Cmd_AddCommand ("-speed", IN_SpeedUp);
|
||||
Cmd_AddCommand ("+attackprimary", IN_Button0Down);
|
||||
Cmd_AddCommand ("-attackprimary", IN_Button0Up);
|
||||
Cmd_AddCommand ("+attacksecondary", IN_Button1Down);
|
||||
Cmd_AddCommand ("-attacksecondary", IN_Button1Up);
|
||||
// Cmd_AddCommand ("+speed", IN_Button2Down);
|
||||
// Cmd_AddCommand ("-speed", IN_Button2Up);
|
||||
Cmd_AddCommand ("+use", IN_Button3Down);
|
||||
Cmd_AddCommand ("-use", IN_Button3Up);
|
||||
Cmd_AddCommand ("+leanleft", IN_Button4Down);
|
||||
Cmd_AddCommand ("-leanleft", IN_Button4Up);
|
||||
Cmd_AddCommand ("+leanright", IN_Button5Down);
|
||||
Cmd_AddCommand ("-leanright", IN_Button5Up);
|
||||
Cmd_AddCommand ("+button6", IN_Button6Down);
|
||||
Cmd_AddCommand ("-button6", IN_Button6Up);
|
||||
Cmd_AddCommand ("+button7", IN_Button7Down);
|
||||
Cmd_AddCommand ("-button7", IN_Button7Up);
|
||||
Cmd_AddCommand ("+button8", IN_Button8Down);
|
||||
Cmd_AddCommand ("-button8", IN_Button8Up);
|
||||
Cmd_AddCommand ("+button9", IN_Button9Down);
|
||||
Cmd_AddCommand ("-button9", IN_Button9Up);
|
||||
Cmd_AddCommand ("+button10", IN_Button10Down);
|
||||
Cmd_AddCommand ("-button10", IN_Button10Up);
|
||||
Cmd_AddCommand ("+button11", IN_Button11Down);
|
||||
Cmd_AddCommand ("-button11", IN_Button11Up);
|
||||
Cmd_AddCommand ("+button12", IN_Button12Down);
|
||||
Cmd_AddCommand ("-button12", IN_Button12Up);
|
||||
Cmd_AddCommand ("+button13", IN_Button13Down);
|
||||
Cmd_AddCommand ("-button13", IN_Button13Up);
|
||||
Cmd_AddCommand ("+button14", IN_Button14Down);
|
||||
Cmd_AddCommand ("-button14", IN_Button14Up);
|
||||
Cmd_AddCommand ("+mlook", IN_MLookDown);
|
||||
Cmd_AddCommand ("-mlook", IN_MLookUp);
|
||||
Cmd_AddCommand("+moveup", IN_UpDown);
|
||||
Cmd_AddCommand("-moveup", IN_UpUp);
|
||||
Cmd_AddCommand("+movedown", IN_DownDown);
|
||||
Cmd_AddCommand("-movedown", IN_DownUp);
|
||||
Cmd_AddCommand("+left", IN_LeftDown);
|
||||
Cmd_AddCommand("-left", IN_LeftUp);
|
||||
Cmd_AddCommand("+right", IN_RightDown);
|
||||
Cmd_AddCommand("-right", IN_RightUp);
|
||||
Cmd_AddCommand("+forward", IN_ForwardDown);
|
||||
Cmd_AddCommand("-forward", IN_ForwardUp);
|
||||
Cmd_AddCommand("+back", IN_BackDown);
|
||||
Cmd_AddCommand("-back", IN_BackUp);
|
||||
Cmd_AddCommand("+lookup", IN_LookupDown);
|
||||
Cmd_AddCommand("-lookup", IN_LookupUp);
|
||||
Cmd_AddCommand("+lookdown", IN_LookdownDown);
|
||||
Cmd_AddCommand("-lookdown", IN_LookdownUp);
|
||||
Cmd_AddCommand("+strafe", IN_StrafeDown);
|
||||
Cmd_AddCommand("-strafe", IN_StrafeUp);
|
||||
Cmd_AddCommand("+moveleft", IN_MoveleftDown);
|
||||
Cmd_AddCommand("-moveleft", IN_MoveleftUp);
|
||||
Cmd_AddCommand("+moveright", IN_MoverightDown);
|
||||
Cmd_AddCommand("-moveright", IN_MoverightUp);
|
||||
Cmd_AddCommand("+attack", IN_AttackPrimaryDown);
|
||||
Cmd_AddCommand("-attack", IN_AttackPrimaryUp);
|
||||
Cmd_AddCommand("+attackprimary", IN_AttackPrimaryDown);
|
||||
Cmd_AddCommand("-attackprimary", IN_AttackPrimaryUp);
|
||||
Cmd_AddCommand("+attacksecondary", IN_AttackSecondaryDown);
|
||||
Cmd_AddCommand("-attacksecondary", IN_AttackSecondaryUp);
|
||||
Cmd_AddCommand("+use", IN_Button3Down);
|
||||
Cmd_AddCommand("-use", IN_Button3Up);
|
||||
Cmd_AddCommand("+leanleft", IN_LeanLeftDown);
|
||||
Cmd_AddCommand("-leanleft", IN_LeanLeftUp);
|
||||
Cmd_AddCommand("+leanright", IN_LeanRightDown);
|
||||
Cmd_AddCommand("-leanright", IN_LeanRightUp);
|
||||
Cmd_AddCommand("+speed", IN_SpeedUp);
|
||||
Cmd_AddCommand("-speed", IN_SpeedDown);
|
||||
Cmd_AddCommand("+button0", IN_Button0Down);
|
||||
Cmd_AddCommand("-button0", IN_Button0Up);
|
||||
Cmd_AddCommand("+button1", IN_Button1Down);
|
||||
Cmd_AddCommand("-button1", IN_Button1Up);
|
||||
Cmd_AddCommand("+button2", IN_Button2Down);
|
||||
Cmd_AddCommand("-button2", IN_Button2Up);
|
||||
Cmd_AddCommand("+button3", IN_Button3Down);
|
||||
Cmd_AddCommand("-button3", IN_Button3Up);
|
||||
Cmd_AddCommand("+button4", IN_Button4Down);
|
||||
Cmd_AddCommand("-button4", IN_Button4Up);
|
||||
Cmd_AddCommand("+button5", IN_Button5Down);
|
||||
Cmd_AddCommand("-button5", IN_Button5Up);
|
||||
Cmd_AddCommand("+button6", IN_Button6Down);
|
||||
Cmd_AddCommand("-button6", IN_Button6Up);
|
||||
Cmd_AddCommand("+button7", IN_Button7Down);
|
||||
Cmd_AddCommand("-button7", IN_Button7Up);
|
||||
Cmd_AddCommand("+button8", IN_Button8Down);
|
||||
Cmd_AddCommand("-button8", IN_Button8Up);
|
||||
Cmd_AddCommand("+button9", IN_Button9Down);
|
||||
Cmd_AddCommand("-button9", IN_Button9Up);
|
||||
Cmd_AddCommand("+button10", IN_Button10Down);
|
||||
Cmd_AddCommand("-button10", IN_Button10Up);
|
||||
Cmd_AddCommand("+button11", IN_Button11Down);
|
||||
Cmd_AddCommand("-button11", IN_Button11Up);
|
||||
Cmd_AddCommand("+button12", IN_Button12Down);
|
||||
Cmd_AddCommand("-button12", IN_Button12Up);
|
||||
Cmd_AddCommand("+button13", IN_Button13Down);
|
||||
Cmd_AddCommand("-button13", IN_Button13Up);
|
||||
Cmd_AddCommand("+button14", IN_Button14Down);
|
||||
Cmd_AddCommand("-button14", IN_Button14Up);
|
||||
Cmd_AddCommand("+mlook", IN_MLookDown);
|
||||
Cmd_AddCommand("-mlook", IN_MLookUp);
|
||||
|
||||
cl_nodelta = Cvar_Get ("cl_nodelta", "0", 0);
|
||||
cl_debugMove = Cvar_Get ("cl_debugMove", "0", 0);
|
||||
|
||||
@@ -29,9 +29,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
#include "cl_ui.h"
|
||||
|
||||
#if _MSC_VER
|
||||
#include <intrin.h>
|
||||
#endif
|
||||
#include <ctime>
|
||||
|
||||
typedef struct {
|
||||
float fadetime;
|
||||
@@ -1256,6 +1254,10 @@ void UI_PrintConsole( const char *msg )
|
||||
bDeathMessage = qtrue;
|
||||
pColor = &ULightRed;
|
||||
break;
|
||||
case MESSAGE_CHAT_GREEN:
|
||||
bDeathMessage = qtrue;
|
||||
pColor = &UGreen;
|
||||
break;
|
||||
}
|
||||
|
||||
msg++;
|
||||
@@ -4948,7 +4950,7 @@ void UI_RemoveHud_f( void ) {
|
||||
|
||||
if( hud && hudList.ObjectInList( hud ) )
|
||||
{
|
||||
hud->ShowMenu( NULL );
|
||||
hud->ForceHide();
|
||||
hudList.RemoveObject( hud );
|
||||
}
|
||||
}
|
||||
@@ -5439,7 +5441,7 @@ UI_BeginLoadResource
|
||||
====================
|
||||
*/
|
||||
void UI_BeginLoadResource( void ) {
|
||||
uint64_t time = __rdtsc();
|
||||
clock_t time = clock();
|
||||
|
||||
startCountHigh = time >> 32;
|
||||
startCountLow = time;
|
||||
|
||||
@@ -293,19 +293,27 @@ void UIDMBox::Print( const char *text )
|
||||
|
||||
m_items[m_numitems].flags = 0;
|
||||
|
||||
if (*text == 2)
|
||||
if (*text == MESSAGE_CHAT_WHITE)
|
||||
{
|
||||
m_items[m_numitems].color = UGrey;
|
||||
m_items[m_numitems].font = m_fontbold;
|
||||
m_items[m_numitems].flags |= GMBOX_ITEM_FLAG_BOLD;
|
||||
m_items[m_numitems].flags |= DMBOX_ITEM_FLAG_BOLD;
|
||||
|
||||
text1 = text + 1;
|
||||
}
|
||||
else if (*text == 4)
|
||||
else if (*text == MESSAGE_CHAT_RED)
|
||||
{
|
||||
m_items[m_numitems].color = ULightRed;
|
||||
m_items[m_numitems].font = m_fontbold;
|
||||
m_items[m_numitems].flags |= GMBOX_ITEM_FLAG_BOLD;
|
||||
m_items[m_numitems].flags |= DMBOX_ITEM_FLAG_BOLD;
|
||||
|
||||
text1 = text + 1;
|
||||
}
|
||||
else if (*text == MESSAGE_CHAT_GREEN)
|
||||
{
|
||||
m_items[m_numitems].color = UGreen;
|
||||
m_items[m_numitems].font = m_fontbold;
|
||||
m_items[m_numitems].flags |= DMBOX_ITEM_FLAG_BOLD;
|
||||
|
||||
text1 = text + 1;
|
||||
}
|
||||
|
||||
+12
-12
@@ -238,11 +238,11 @@ void BarrelObject::BarrelThink
|
||||
|
||||
if( m_iBarrelType == BARREL_OIL )
|
||||
{
|
||||
gi.MSG_StartCGM( 15 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 19 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_5);
|
||||
}
|
||||
|
||||
m_fFluidAmount -= 1.0f;
|
||||
@@ -254,11 +254,11 @@ void BarrelObject::BarrelThink
|
||||
|
||||
if( m_iBarrelType == BARREL_OIL )
|
||||
{
|
||||
gi.MSG_StartCGM( 16 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_2);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 20 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_6);
|
||||
}
|
||||
|
||||
m_fFluidAmount -= 0.75f;
|
||||
@@ -271,11 +271,11 @@ void BarrelObject::BarrelThink
|
||||
|
||||
if( m_iBarrelType == BARREL_OIL )
|
||||
{
|
||||
gi.MSG_StartCGM( 17 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_3);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 21 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_7);
|
||||
}
|
||||
|
||||
m_fFluidAmount -= 0.5f;
|
||||
@@ -294,11 +294,11 @@ void BarrelObject::BarrelThink
|
||||
|
||||
if( m_iBarrelType == BARREL_OIL )
|
||||
{
|
||||
gi.MSG_StartCGM( 17 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_3);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 21 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_7);
|
||||
}
|
||||
|
||||
gi.MSG_WriteCoord( m_vLeaks[ i ][ 0 ] );
|
||||
@@ -506,18 +506,18 @@ void BarrelObject::BarrelDamaged
|
||||
gi.SetBroadcastVisible( vHitPos, vHitPos );
|
||||
|
||||
if( m_iBarrelType == BARREL_OIL )
|
||||
gi.MSG_StartCGM( 18 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_4);
|
||||
else
|
||||
gi.MSG_StartCGM( 22 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_8);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.SetBroadcastVisible( vHitPos, vHitPos );
|
||||
|
||||
if( m_iBarrelType == BARREL_OIL )
|
||||
gi.MSG_StartCGM( 17 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_3);
|
||||
else
|
||||
gi.MSG_StartCGM( 21 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_EFFECT_7);
|
||||
}
|
||||
|
||||
gi.MSG_WriteCoord( vHitPos[ 0 ] );
|
||||
|
||||
@@ -707,6 +707,51 @@ enum vmAnim_e {
|
||||
VM_ANIM_IDLE_2,
|
||||
};
|
||||
|
||||
enum cg_message_e {
|
||||
CGM_NONE,
|
||||
CGM_BULLET_1,
|
||||
CGM_BULLET_2,
|
||||
CGM_BULLET_3,
|
||||
CGM_BULLET_4,
|
||||
CGM_BULLET_5,
|
||||
CGM_BULLET_6,
|
||||
CGM_BULLET_7,
|
||||
CGM_BULLET_8,
|
||||
CGM_BULLET_9,
|
||||
CGM_BULLET_10,
|
||||
CGM_BULLET_11,
|
||||
CGM_MELEE_IMPACT,
|
||||
CGM_EXPLOSION_EFFECT_1,
|
||||
CGM_EXPLOSION_EFFECT_2,
|
||||
CGM_EXPLOSION_EFFECT_3,
|
||||
CGM_EXPLOSION_EFFECT_4,
|
||||
CGM_PADDING_1,
|
||||
CGM_MAKE_EFFECT_1,
|
||||
CGM_MAKE_EFFECT_2,
|
||||
CGM_MAKE_EFFECT_3,
|
||||
CGM_MAKE_EFFECT_4,
|
||||
CGM_MAKE_EFFECT_5,
|
||||
CGM_MAKE_EFFECT_6,
|
||||
CGM_MAKE_EFFECT_7,
|
||||
CGM_MAKE_EFFECT_8,
|
||||
CGM_MAKE_CRATE_DEBRIS,
|
||||
CGM_MAKE_WINDOW_DEBRIS,
|
||||
CGM_BULLET_NO_BARREL_1,
|
||||
CGM_BULLET_NO_BARREL_2,
|
||||
CGM_HUDDRAW_SHADER,
|
||||
CGM_HUDDRAW_ALIGN,
|
||||
CGM_HUDDRAW_RECT,
|
||||
CGM_HUDDRAW_VIRTUALSIZE,
|
||||
CGM_HUDDRAW_COLOR,
|
||||
CGM_HUDDRAW_ALPHA,
|
||||
CGM_HUDDRAW_STRING,
|
||||
CGM_HUDDRAW_FONT,
|
||||
CGM_NOTIFY_KILL,
|
||||
CGM_NOTIFY_HIT,
|
||||
CGM_VOICE_CHAT,
|
||||
CGM_UNKNOWN_1,
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
enum vmAnim_e {
|
||||
@@ -727,8 +772,79 @@ enum vmAnim_e {
|
||||
VM_ANIM_DISABLED,
|
||||
};
|
||||
|
||||
enum cg_message_e {
|
||||
CGM_NONE,
|
||||
CGM_BULLET_1,
|
||||
CGM_BULLET_2,
|
||||
CGM_BULLET_3,
|
||||
CGM_BULLET_4,
|
||||
CGM_BULLET_5,
|
||||
CGM_BULLET_6,
|
||||
CGM_BULLET_7,
|
||||
CGM_BULLET_8,
|
||||
CGM_BULLET_9,
|
||||
CGM_BULLET_10,
|
||||
CGM_MELEE_IMPACT,
|
||||
CGM_EXPLOSION_EFFECT_1,
|
||||
CGM_EXPLOSION_EFFECT_2,
|
||||
CGM_PADDING_1,
|
||||
CGM_MAKE_EFFECT_1,
|
||||
CGM_MAKE_EFFECT_2,
|
||||
CGM_MAKE_EFFECT_3,
|
||||
CGM_MAKE_EFFECT_4,
|
||||
CGM_MAKE_EFFECT_5,
|
||||
CGM_MAKE_EFFECT_6,
|
||||
CGM_MAKE_EFFECT_7,
|
||||
CGM_MAKE_EFFECT_8,
|
||||
CGM_MAKE_CRATE_DEBRIS,
|
||||
CGM_MAKE_WINDOW_DEBRIS,
|
||||
CGM_BULLET_NO_BARREL_1,
|
||||
CGM_BULLET_NO_BARREL_2,
|
||||
CGM_HUDDRAW_SHADER,
|
||||
CGM_HUDDRAW_ALIGN,
|
||||
CGM_HUDDRAW_RECT,
|
||||
CGM_HUDDRAW_VIRTUALSIZE,
|
||||
CGM_HUDDRAW_COLOR,
|
||||
CGM_HUDDRAW_ALPHA,
|
||||
CGM_HUDDRAW_STRING,
|
||||
CGM_HUDDRAW_FONT,
|
||||
CGM_NOTIFY_KILL,
|
||||
CGM_NOTIFY_HIT,
|
||||
CGM_VOICE_CHAT,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
#define CGM_HUDDRAW_SHADER 27
|
||||
#define CGM_HUDDRAW_ALIGN 28
|
||||
#define CGM_HUDDRAW_RECT 29
|
||||
#define CGM_HUDDRAW_VIRTUALSIZE 30
|
||||
#define CGM_HUDDRAW_COLOR 31
|
||||
#define CGM_HUDDRAW_ALPHA 32
|
||||
#define CGM_HUDDRAW_STRING 33
|
||||
#define CGM_HUDDRAW_FONT 34
|
||||
#define CGM_HUDDRAW_TIMER 38
|
||||
#define CGM_HUDDRAW_3D 39
|
||||
#define CGM_HUDDRAW_BREAK3D 40
|
||||
#define CGM_HUDDRAW_FADE 41
|
||||
#define CGM_HUDDRAW_MOVE 42
|
||||
#define CGM_HUDDRAW_SCALE 43
|
||||
#define CGM_VIEWMODELANIM 44
|
||||
#define CGM_VIEWMODELPREFIX 45
|
||||
#define CGM_MODHEIGHTFLOAT 46
|
||||
#define CGM_SETVMASPEED 47
|
||||
#define CGM_HINTSTRING 48
|
||||
#define CGM_PLAYLOCALSOUND 49
|
||||
#define CGM_SETLOCALSOUNDRATE 50
|
||||
#define CGM_STOPLOCALSOUND 51
|
||||
#define CGM_HUDDRAW_RECTX 52
|
||||
#define CGM_HUDDRAW_RECTY 53
|
||||
#define CGM_HUDDRAW_RECTWH 54
|
||||
#define CGM_REPLICATION 55
|
||||
#define CGM_HUDDRAW_DELETE 56
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -465,7 +465,7 @@ void CrateObject::CrateKilled
|
||||
|
||||
// Tell clients around that a crate is destroyed
|
||||
gi.SetBroadcastVisible( origin, origin );
|
||||
gi.MSG_StartCGM( 23 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_CRATE_DEBRIS);
|
||||
gi.MSG_WriteCoord( vCenter[ 0 ] );
|
||||
gi.MSG_WriteCoord( vCenter[ 1 ] );
|
||||
gi.MSG_WriteCoord( vCenter[ 2 ] );
|
||||
|
||||
@@ -6912,12 +6912,15 @@ void Entity::ProcessHint(gentity_t* client, bool bShow)
|
||||
{
|
||||
if (sv_reborn->integer)
|
||||
{
|
||||
// FIXME: delete
|
||||
/*
|
||||
gi.MSG_SetClient(client - g_entities);
|
||||
|
||||
// Send the hint string once
|
||||
gi.MSG_StartCGM(CGM_HINTSTRING);
|
||||
gi.MSG_WriteString(m_HintString);
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+50
-64
@@ -503,6 +503,7 @@ Hud::~Hud()
|
||||
SetNon3D();
|
||||
}
|
||||
|
||||
/*
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
@@ -510,6 +511,7 @@ Hud::~Hud()
|
||||
WriteNumber();
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
|
||||
hudElements.RemoveObject( this );
|
||||
}
|
||||
@@ -952,7 +954,9 @@ void Hud::FadeOverTime( float time )
|
||||
|
||||
fade_alpha_start = alpha;
|
||||
fade_alpha_target = alpha;
|
||||
|
||||
|
||||
// FIXME: delete
|
||||
/*
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
@@ -961,6 +965,7 @@ void Hud::FadeOverTime( float time )
|
||||
gi.MSG_WriteFloat( time );
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void Hud::MoveOverTime( float time )
|
||||
@@ -982,6 +987,7 @@ void Hud::MoveOverTime( float time )
|
||||
fade_move_x_target = x;
|
||||
fade_move_y_target = y;
|
||||
|
||||
/*
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
@@ -990,6 +996,7 @@ void Hud::MoveOverTime( float time )
|
||||
gi.MSG_WriteFloat( time );
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void Hud::Refresh( int clientNumber )
|
||||
@@ -1092,6 +1099,7 @@ void Hud::Refresh( int clientNumber )
|
||||
{
|
||||
SetBroadcast();
|
||||
|
||||
/*
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_3D );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteCoord( org[ 0 ] );
|
||||
@@ -1103,16 +1111,19 @@ void Hud::Refresh( int clientNumber )
|
||||
gi.MSG_WriteBits( !!always_show, 1 );
|
||||
gi.MSG_WriteBits( !!depth, 1 );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
if( fade_alpha )
|
||||
{
|
||||
SetBroadcast();
|
||||
|
||||
/*
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_FADE );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteFloat( fade_alpha_current );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
|
||||
SetBroadcast();
|
||||
|
||||
@@ -1126,6 +1137,7 @@ void Hud::Refresh( int clientNumber )
|
||||
{
|
||||
SetBroadcast();
|
||||
|
||||
/*
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_MOVE );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteFloat( fade_move_current );
|
||||
@@ -1138,10 +1150,12 @@ void Hud::Refresh( int clientNumber )
|
||||
gi.MSG_WriteShort( ( short )fade_move_x_target );
|
||||
gi.MSG_WriteShort( ( short )fade_move_y_target );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
if( fade_timer_flags & TIMER_ACTIVE )
|
||||
{
|
||||
/*
|
||||
SetBroadcast();
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
|
||||
@@ -1156,6 +1170,7 @@ void Hud::Refresh( int clientNumber )
|
||||
}
|
||||
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1182,7 +1197,8 @@ void Hud::ScaleOverTime( float time, short w, short h )
|
||||
fade_scale_w_target = w;
|
||||
fade_scale_h_target = h;
|
||||
|
||||
#ifdef GAME_DLL
|
||||
// FIXME: delete
|
||||
/*
|
||||
width = w;
|
||||
height = h;
|
||||
|
||||
@@ -1194,7 +1210,7 @@ void Hud::ScaleOverTime( float time, short w, short h )
|
||||
gi.MSG_WriteShort( w );
|
||||
gi.MSG_WriteShort( h );
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
#ifdef GAME_DLL
|
||||
@@ -1235,6 +1251,7 @@ void Hud::Set3D( Vector vector_or_offset, qboolean alwaysOnScreen, qboolean hasD
|
||||
|
||||
isDimensional = true;
|
||||
|
||||
/*
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
@@ -1250,19 +1267,20 @@ void Hud::Set3D( Vector vector_or_offset, qboolean alwaysOnScreen, qboolean hasD
|
||||
gi.MSG_WriteBits( !!hasDepth, 1 );
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void Hud::SetNon3D()
|
||||
{
|
||||
isDimensional = false;
|
||||
|
||||
#ifdef GAME_DLL
|
||||
// FIXME?
|
||||
/*
|
||||
SetBroadcast();
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_BREAK3D );
|
||||
WriteNumber();
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void Hud::SetAlignX( hudAlign_t align )
|
||||
@@ -1418,29 +1436,18 @@ void Hud::SetRectX( short value )
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
if( sv_reborn->integer )
|
||||
{
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_RECTX );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort( ( short )value );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_RECT );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort( ( short )fade_move_x_target );
|
||||
gi.MSG_WriteShort( ( short )fade_move_y_target );
|
||||
gi.MSG_WriteShort( ( short )width );
|
||||
gi.MSG_WriteShort( ( short )height );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort((short)fade_move_x_target);
|
||||
gi.MSG_WriteShort((short)fade_move_y_target);
|
||||
gi.MSG_WriteShort((short)width);
|
||||
gi.MSG_WriteShort((short)height);
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Hud::SetRectY( short value )
|
||||
{
|
||||
//#ifdef CGAME_DLL
|
||||
if( fade_move_y_first )
|
||||
{
|
||||
fade_move_y_target = value;
|
||||
@@ -1451,30 +1458,17 @@ void Hud::SetRectY( short value )
|
||||
y = value;
|
||||
fade_move = false;
|
||||
}
|
||||
//#else
|
||||
// y = value;
|
||||
//#endif
|
||||
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
if( sv_reborn->integer )
|
||||
{
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_RECTY );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort( ( short )value );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_RECT );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort( ( short )fade_move_x_target );
|
||||
gi.MSG_WriteShort( ( short )fade_move_y_target );
|
||||
gi.MSG_WriteShort( ( short )width );
|
||||
gi.MSG_WriteShort( ( short )height );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort((short)fade_move_x_target);
|
||||
gi.MSG_WriteShort((short)fade_move_y_target);
|
||||
gi.MSG_WriteShort((short)width);
|
||||
gi.MSG_WriteShort((short)height);
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1519,24 +1513,13 @@ void Hud::SetShader( const char * s, float w, float h )
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
if( sv_reborn->integer )
|
||||
{
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_RECTWH );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort( ( short )width );
|
||||
gi.MSG_WriteShort( ( short )height );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_RECT );
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort( ( short )x );
|
||||
gi.MSG_WriteShort( ( short )y );
|
||||
gi.MSG_WriteShort( ( short )width );
|
||||
gi.MSG_WriteShort( ( short )height );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
|
||||
WriteNumber();
|
||||
gi.MSG_WriteShort((short)x);
|
||||
gi.MSG_WriteShort((short)y);
|
||||
gi.MSG_WriteShort((short)width);
|
||||
gi.MSG_WriteShort((short)height);
|
||||
gi.MSG_EndCGM();
|
||||
|
||||
SetBroadcast();
|
||||
|
||||
@@ -1586,7 +1569,8 @@ void Hud::SetTimer( float time, float fade_at_time )
|
||||
|
||||
fade_timer_flags = TIMER_ACTIVE;
|
||||
|
||||
#ifdef GAME_DLL
|
||||
// FIXME...
|
||||
/*
|
||||
SetBroadcast();
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
|
||||
@@ -1595,7 +1579,7 @@ void Hud::SetTimer( float time, float fade_at_time )
|
||||
gi.MSG_WriteFloat( fade_at_time );
|
||||
gi.MSG_WriteBits( 0, 1 );
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void Hud::SetTimerUp( float time, float fade_at_time )
|
||||
@@ -1612,6 +1596,7 @@ void Hud::SetTimerUp( float time, float fade_at_time )
|
||||
|
||||
fade_timer_flags = TIMER_ACTIVE | TIMER_UP;
|
||||
|
||||
/*
|
||||
#ifdef GAME_DLL
|
||||
SetBroadcast();
|
||||
|
||||
@@ -1622,6 +1607,7 @@ void Hud::SetTimerUp( float time, float fade_at_time )
|
||||
gi.MSG_WriteBits( 1, 1 );
|
||||
gi.MSG_EndCGM();
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void Hud::SetVirtualSize( qboolean v )
|
||||
|
||||
+25
-16
@@ -38,7 +38,7 @@ void HudWriteNumber( int num )
|
||||
void HudDrawShader( int info, const char *name )
|
||||
{
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x1B);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_SHADER);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteString(name); // s = name (shader_name)
|
||||
gi.MSG_EndCGM();
|
||||
@@ -47,7 +47,7 @@ void HudDrawShader( int info, const char *name )
|
||||
void HudDrawAlign( int info, int horizontalAlign, int verticalAlign )
|
||||
{
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x1C);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_ALIGN);
|
||||
HudWriteNumber( info ); // c = probably "info"
|
||||
gi.MSG_WriteBits(horizontalAlign, 2); // value = 0,1,2 bits = 2
|
||||
// 0 - left \
|
||||
@@ -66,7 +66,7 @@ void HudDrawAlign( int info, int horizontalAlign, int verticalAlign )
|
||||
void HudDrawRect(int info, int x, int y, int width, int height)
|
||||
{
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x1D);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
|
||||
HudWriteNumber( info ); // c = probably "info"
|
||||
gi.MSG_WriteShort(x); // c = probably "x"
|
||||
gi.MSG_WriteShort(y); // c = probably "y"
|
||||
@@ -79,7 +79,7 @@ void HudDrawRect(int info, int x, int y, int width, int height)
|
||||
void HudDrawVirtualSize(int info, int virtualScreen)
|
||||
{
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x1E);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_VIRTUALSIZE);
|
||||
HudWriteNumber( info ); // c = info
|
||||
|
||||
/*__asm
|
||||
@@ -116,7 +116,7 @@ void HudDrawColor(int info, float *color)
|
||||
|
||||
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x1F);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_COLOR);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteByte(temp[0]); // c = color[2]
|
||||
gi.MSG_WriteByte(temp[1]); // c = color[1] - Values can be messed up. To be tested.
|
||||
@@ -132,7 +132,7 @@ void HudDrawAlpha(int info, float alpha)
|
||||
temp = (long int)(alpha*255.0f);
|
||||
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x20);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_ALPHA);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteByte(temp); // c = alpha
|
||||
gi.MSG_EndCGM();
|
||||
@@ -144,7 +144,7 @@ void HudDrawAlpha(int info, float alpha)
|
||||
void HudDrawString(int info, const char *string)
|
||||
{
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x21);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_STRING);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteString(string); // s = string (to show)
|
||||
gi.MSG_EndCGM();
|
||||
@@ -154,7 +154,7 @@ void HudDrawString(int info, const char *string)
|
||||
void HudDrawFont(int info, const char *fontName)
|
||||
{
|
||||
gi.SetBroadcastAll();
|
||||
gi.MSG_StartCGM(0x22);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_FONT);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteString(fontName); // s = fontName (to use)
|
||||
gi.MSG_EndCGM();
|
||||
@@ -163,6 +163,8 @@ void HudDrawFont(int info, const char *fontName)
|
||||
|
||||
void HudDraw3d( int index, vec3_t vector, int ent_num, qboolean bAlwaysShow, qboolean depth )
|
||||
{
|
||||
// FIXME...
|
||||
/*
|
||||
gi.SetBroadcastAll();
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_3D );
|
||||
@@ -176,10 +178,12 @@ void HudDraw3d( int index, vec3_t vector, int ent_num, qboolean bAlwaysShow, qbo
|
||||
gi.MSG_WriteByte( bAlwaysShow );
|
||||
gi.MSG_WriteByte( depth );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void HudDrawTimer( int index, float duration, float fade_out_time )
|
||||
{
|
||||
/*
|
||||
gi.SetBroadcastAll();
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
|
||||
@@ -187,12 +191,13 @@ void HudDrawTimer( int index, float duration, float fade_out_time )
|
||||
gi.MSG_WriteFloat( duration );
|
||||
gi.MSG_WriteFloat( fade_out_time );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void iHudDrawShader( int cl_num, int info, const char *name )
|
||||
{
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x1B);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_SHADER);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteString(name); // s = name (shader_name)
|
||||
gi.MSG_EndCGM();
|
||||
@@ -202,7 +207,7 @@ void iHudDrawShader( int cl_num, int info, const char *name )
|
||||
void iHudDrawAlign(int cl_num, int info, int horizontalAlign, int verticalAlign )
|
||||
{
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x1C);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_ALIGN);
|
||||
HudWriteNumber( info ); // c = probably "info"
|
||||
gi.MSG_WriteBits(horizontalAlign, 2); // value = 0,1,2 bits = 2
|
||||
// 0 - left \
|
||||
@@ -221,7 +226,7 @@ void iHudDrawAlign(int cl_num, int info, int horizontalAlign, int verticalAlign
|
||||
void iHudDrawRect(int cl_num, int info, int x, int y, int width, int height)
|
||||
{
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x1D);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
|
||||
HudWriteNumber( info ); // c = probably "info"
|
||||
gi.MSG_WriteShort(x); // c = probably "x"
|
||||
gi.MSG_WriteShort(y); // c = probably "y"
|
||||
@@ -232,6 +237,7 @@ void iHudDrawRect(int cl_num, int info, int x, int y, int width, int height)
|
||||
|
||||
void iHudDraw3d( int cl_num, int index, vec3_t vector, int ent_num, qboolean bAlwaysShow, qboolean depth )
|
||||
{
|
||||
/*
|
||||
gi.MSG_SetClient( cl_num );
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_3D );
|
||||
@@ -245,10 +251,12 @@ void iHudDraw3d( int cl_num, int index, vec3_t vector, int ent_num, qboolean bAl
|
||||
gi.MSG_WriteByte( bAlwaysShow );
|
||||
gi.MSG_WriteByte( depth );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void iHudDrawTimer( int cl_num, int index, float duration, float fade_out_time )
|
||||
{
|
||||
/*
|
||||
gi.MSG_SetClient( cl_num );
|
||||
|
||||
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
|
||||
@@ -256,12 +264,13 @@ void iHudDrawTimer( int cl_num, int index, float duration, float fade_out_time )
|
||||
gi.MSG_WriteFloat( duration );
|
||||
gi.MSG_WriteFloat( fade_out_time );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void iHudDrawVirtualSize(int cl_num, int info, int virtualScreen)
|
||||
{
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x1E);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_VIRTUALSIZE);
|
||||
HudWriteNumber( info ); // c = info
|
||||
|
||||
gi.MSG_WriteBits(!!virtualScreen, 1); // value = ? bits = 1
|
||||
@@ -285,7 +294,7 @@ void iHudDrawColor(int cl_num, int info, float *color)
|
||||
temp[2] = (long int)(color[2]*255.0f);
|
||||
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x1F);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_COLOR);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteByte(temp[0]); // c = color[2]
|
||||
gi.MSG_WriteByte(temp[1]); // c = color[1] - Values can be messed up. To be tested.
|
||||
@@ -301,7 +310,7 @@ void iHudDrawAlpha(int cl_num, int info, float alpha)
|
||||
temp = (long int)(alpha*255.0f);
|
||||
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x20);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_ALPHA);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteByte(temp); // c = alpha
|
||||
gi.MSG_EndCGM();
|
||||
@@ -313,7 +322,7 @@ void iHudDrawAlpha(int cl_num, int info, float alpha)
|
||||
void iHudDrawString( int cl_num, int info, const char *string )
|
||||
{
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x21);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_STRING);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteString(string); // s = string (to show)
|
||||
gi.MSG_EndCGM();
|
||||
@@ -323,7 +332,7 @@ void iHudDrawString( int cl_num, int info, const char *string )
|
||||
void iHudDrawFont( int cl_num, int info, const char *fontName )
|
||||
{
|
||||
gi.MSG_SetClient(cl_num);
|
||||
gi.MSG_StartCGM(0x22);
|
||||
gi.MSG_StartCGM(CGM_HUDDRAW_FONT);
|
||||
HudWriteNumber( info ); // c = info
|
||||
gi.MSG_WriteString(fontName); // s = fontName (to use)
|
||||
gi.MSG_EndCGM();
|
||||
|
||||
@@ -1149,6 +1149,8 @@ void Item::updatePrefix
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: delete
|
||||
/*
|
||||
Entity *ent = ev->GetEntity( 1 );
|
||||
|
||||
gi.MSG_SetClient( ent->edict - g_entities );
|
||||
@@ -1157,6 +1159,7 @@ void Item::updatePrefix
|
||||
gi.MSG_WriteString( item_name.c_str() );
|
||||
gi.MSG_WriteString( m_sVMprefix.c_str() );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
qboolean Item::IsItemCool
|
||||
|
||||
+36
-67
@@ -2007,15 +2007,6 @@ qboolean Player::checkrun
|
||||
return ( last_ucmd.buttons & BUTTON_RUN ) != 0;
|
||||
}
|
||||
|
||||
qboolean Player::checkholsterweapon
|
||||
(
|
||||
Conditional &condition
|
||||
)
|
||||
|
||||
{
|
||||
return ( last_ucmd.buttons & BUTTON_HOLSTER ) != 0;
|
||||
}
|
||||
|
||||
qboolean Player::checkuse
|
||||
(
|
||||
Conditional &condition
|
||||
@@ -3964,7 +3955,6 @@ Condition<Player> Player::Conditions[] =
|
||||
{ "default", &Player::returntrue },
|
||||
{ "SNEAK", &Player::checksneak },
|
||||
{ "RUN", &Player::checkrun },
|
||||
{ "HOLSTERWEAPON", &Player::checkholsterweapon },
|
||||
{ "USE", &Player::checkuse },
|
||||
{ "LEFT", &Player::checkturnleft },
|
||||
{ "RIGHT", &Player::checkturnright },
|
||||
@@ -5790,9 +5780,9 @@ void Player::Pain
|
||||
{
|
||||
gi.MSG_SetClient( attacker->edict - g_entities );
|
||||
if( IsDead() )
|
||||
gi.MSG_StartCGM( 36 );
|
||||
gi.MSG_StartCGM(CGM_NOTIFY_KILL);
|
||||
else
|
||||
gi.MSG_StartCGM( 35 );
|
||||
gi.MSG_StartCGM(CGM_NOTIFY_HIT);
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
|
||||
@@ -6528,6 +6518,8 @@ void Player::ClientMove
|
||||
{
|
||||
m_bShowingHint = false;
|
||||
|
||||
// FIXME: delete
|
||||
/*
|
||||
if (sv_reborn->integer)
|
||||
{
|
||||
gi.MSG_SetClient(edict - g_entities);
|
||||
@@ -6537,6 +6529,7 @@ void Player::ClientMove
|
||||
gi.MSG_WriteString("");
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
oldorigin = origin;
|
||||
@@ -13221,7 +13214,7 @@ void Player::EventDMMessage
|
||||
if( bInstaMessage )
|
||||
{
|
||||
gi.MSG_SetClient( i );
|
||||
gi.MSG_StartCGM( 37 );
|
||||
gi.MSG_StartCGM(CGM_VOICE_CHAT);
|
||||
gi.MSG_WriteCoord( m_vViewPos[ 0 ] );
|
||||
gi.MSG_WriteCoord( m_vViewPos[ 1 ] );
|
||||
gi.MSG_WriteCoord( m_vViewPos[ 2 ] );
|
||||
@@ -13313,35 +13306,27 @@ qboolean Player::ViewModelAnim( str anim, qboolean force_restart, qboolean bFull
|
||||
}
|
||||
|
||||
if ( Q_stricmp( anim, "charge" ) == 0 ) {
|
||||
viewModelAnim = VMA_CHARGE;
|
||||
viewModelAnim = VM_ANIM_CHARGE;
|
||||
} else if ( Q_stricmp( anim, "fire" ) == 0 ) {
|
||||
viewModelAnim = VMA_FIRE;
|
||||
viewModelAnim = VM_ANIM_FIRE;
|
||||
} else if ( Q_stricmp( anim, "fire_secondary" ) == 0 ) {
|
||||
viewModelAnim = VMA_FIRE_SECONDARY;
|
||||
viewModelAnim = VM_ANIM_FIRE_SECONDARY;
|
||||
} else if ( Q_stricmp( anim, "rechamber" ) == 0 ) {
|
||||
viewModelAnim = VMA_RECHAMBER;
|
||||
viewModelAnim = VM_ANIM_RECHAMBER;
|
||||
} else if ( Q_stricmp( anim, "reload" ) == 0 ) {
|
||||
viewModelAnim = VMA_RELOAD;
|
||||
viewModelAnim = VM_ANIM_RELOAD;
|
||||
} else if ( Q_stricmp( anim, "reload_single" ) == 0 ) {
|
||||
viewModelAnim = VMA_RELOAD_SINGLE;
|
||||
viewModelAnim = VM_ANIM_RELOAD_SINGLE;
|
||||
} else if ( Q_stricmp( anim, "reload_end" ) == 0 ) {
|
||||
viewModelAnim = VMA_RELOAD_END;
|
||||
viewModelAnim = VM_ANIM_RELOAD_END;
|
||||
} else if ( Q_stricmp( anim, "pullout" ) == 0 ) {
|
||||
viewModelAnim = VMA_PULLOUT;
|
||||
viewModelAnim = VM_ANIM_PULLOUT;
|
||||
} else if ( Q_stricmp( anim, "putaway" ) == 0 ) {
|
||||
viewModelAnim = VMA_PUTAWAY;
|
||||
viewModelAnim = VM_ANIM_PUTAWAY;
|
||||
} else if ( Q_stricmp( anim, "ladderstep" ) == 0 ) {
|
||||
viewModelAnim = VMA_LADDERSTEP;
|
||||
viewModelAnim = VM_ANIM_LADDERSTEP;
|
||||
} else if ( Q_stricmp( anim, "idle" ) == 0 ) {
|
||||
viewModelAnim = VMA_IDLE;
|
||||
}
|
||||
else if ( level.reborn )
|
||||
{
|
||||
if ( !anim.icmp( "enable" ) ) {
|
||||
viewModelAnim = VMA_ENABLE;
|
||||
} else {
|
||||
viewModelAnim = VMA_CUSTOMANIMATION;
|
||||
}
|
||||
viewModelAnim = VM_ANIM_IDLE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -13369,16 +13354,6 @@ qboolean Player::ViewModelAnim( str anim, qboolean force_restart, qboolean bFull
|
||||
|
||||
m_sVMcurrent = anim;
|
||||
|
||||
if ( level.reborn && viewModelAnim == VMA_CUSTOMANIMATION )
|
||||
{
|
||||
gi.MSG_SetClient( edict - g_entities );
|
||||
|
||||
gi.MSG_StartCGM( CGM_VIEWMODELANIM );
|
||||
gi.MSG_WriteString( anim.c_str() );
|
||||
gi.MSG_WriteByte( bFullAnim );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
|
||||
if ( viewModelAnim != playerState->iViewModelAnim || force_restart ) {
|
||||
playerState->iViewModelAnimChanged = ( playerState->iViewModelAnimChanged + 1 ) & 3;
|
||||
}
|
||||
@@ -14306,15 +14281,15 @@ void Player::ModifyHeightFloat
|
||||
|
||||
client->ps.pm_flags &= ~( PMF_DUCKED | PMF_VIEW_PRONE | PMF_VIEW_DUCK_RUN | PMF_VIEW_JUMP_START );
|
||||
|
||||
if( sv_reborn->integer )
|
||||
{
|
||||
gi.MSG_SetClient( edict - g_entities);
|
||||
// FIXME...
|
||||
/*
|
||||
gi.MSG_SetClient(edict - g_entities);
|
||||
|
||||
gi.MSG_StartCGM( CGM_MODHEIGHTFLOAT );
|
||||
gi.MSG_WriteLong( height );
|
||||
gi.MSG_WriteFloat( max_z );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
gi.MSG_StartCGM(CGM_MODHEIGHTFLOAT);
|
||||
gi.MSG_WriteLong(height);
|
||||
gi.MSG_WriteFloat(max_z);
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void Player::PlayLocalSound
|
||||
@@ -14348,8 +14323,8 @@ void Player::PlayLocalSound
|
||||
return;
|
||||
}
|
||||
|
||||
if( sv_reborn->integer )
|
||||
{
|
||||
// FIXME...
|
||||
/*
|
||||
gi.MSG_SetClient( client->ps.clientNum );
|
||||
|
||||
gi.MSG_StartCGM( CGM_PLAYLOCALSOUND );
|
||||
@@ -14360,7 +14335,7 @@ void Player::PlayLocalSound
|
||||
gi.MSG_EndCGM();
|
||||
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
if( loop )
|
||||
{
|
||||
@@ -14517,11 +14492,14 @@ void Player::SetLocalSoundRate
|
||||
|
||||
gi.MSG_SetClient( client->ps.clientNum );
|
||||
|
||||
// FIXME...
|
||||
/*
|
||||
gi.MSG_StartCGM( CGM_SETLOCALSOUNDRATE );
|
||||
gi.MSG_WriteString( found );
|
||||
gi.MSG_WriteFloat( rate );
|
||||
gi.MSG_WriteFloat( time );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void Player::SetSpeed
|
||||
@@ -14606,12 +14584,15 @@ void Player::SetVMASpeed
|
||||
vma->name = name;
|
||||
vma->speed = speed;
|
||||
|
||||
// FIXME...
|
||||
/*
|
||||
gi.MSG_SetClient( edict - g_entities );
|
||||
|
||||
gi.MSG_StartCGM( CGM_SETVMASPEED );
|
||||
gi.MSG_WriteString( name );
|
||||
gi.MSG_WriteFloat( speed );
|
||||
gi.MSG_EndCGM();
|
||||
*/
|
||||
}
|
||||
|
||||
void Player::StopLocalSound
|
||||
@@ -14639,20 +14620,8 @@ void Player::StopLocalSound
|
||||
return;
|
||||
}
|
||||
|
||||
if( level.reborn )
|
||||
{
|
||||
gi.MSG_SetClient( client->ps.clientNum );
|
||||
|
||||
gi.MSG_StartCGM( CGM_STOPLOCALSOUND );
|
||||
gi.MSG_WriteString( found );
|
||||
gi.MSG_WriteFloat( time );
|
||||
gi.MSG_EndCGM();
|
||||
}
|
||||
else
|
||||
{
|
||||
edict->s.loopSound = 0;
|
||||
gi.StopSound( entnum, CHAN_LOCAL );
|
||||
}
|
||||
edict->s.loopSound = 0;
|
||||
gi.StopSound(entnum, CHAN_LOCAL);
|
||||
}
|
||||
|
||||
void Player::UseHeld
|
||||
|
||||
@@ -354,7 +354,6 @@ public:
|
||||
qboolean checkattackbuttonright( Conditional &condition );
|
||||
qboolean checksneak( Conditional &condition );
|
||||
qboolean checkrun( Conditional &condition );
|
||||
qboolean checkholsterweapon( Conditional &condition );
|
||||
qboolean checkuse( Conditional &condition );
|
||||
qboolean checkcanturn( Conditional &condition );
|
||||
qboolean checkcanmoveright( Conditional &condition );
|
||||
|
||||
+12
-12
@@ -1785,11 +1785,11 @@ void Explosion::MakeExplosionEffect
|
||||
|
||||
if( !sEffect.icmp( "grenade" ) )
|
||||
{
|
||||
gi.MSG_StartCGM( 12 );
|
||||
gi.MSG_StartCGM(CGM_EXPLOSION_EFFECT_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 13 );
|
||||
gi.MSG_StartCGM(CGM_EXPLOSION_EFFECT_2);
|
||||
}
|
||||
|
||||
gi.MSG_WriteCoord( origin[ 0 ] );
|
||||
@@ -2034,7 +2034,7 @@ float BulletAttack
|
||||
if( ent->edict->solid == 3 && trace.shaderNum >= 0 )
|
||||
{
|
||||
gi.SetBroadcastVisible( trace.endpos, 0 );
|
||||
gi.MSG_StartCGM( 6 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_6);
|
||||
gi.MSG_WriteCoord( trace.endpos[ 0 ] );
|
||||
gi.MSG_WriteCoord( trace.endpos[ 1 ] );
|
||||
gi.MSG_WriteCoord( trace.endpos[ 2 ] );
|
||||
@@ -2192,7 +2192,7 @@ float BulletAttack
|
||||
if( trace.contents > 0 && trace.surfaceFlags & 0xFFFE000 )
|
||||
{
|
||||
gi.SetBroadcastVisible( trace.endpos, NULL );
|
||||
gi.MSG_StartCGM( 6 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_6);
|
||||
gi.MSG_WriteCoord( trace.endpos[ 0 ] );
|
||||
gi.MSG_WriteCoord( trace.endpos[ 1 ] );
|
||||
gi.MSG_WriteCoord( trace.endpos[ 2 ] );
|
||||
@@ -2203,7 +2203,7 @@ float BulletAttack
|
||||
else if( trace.location >= 0 && ent->IsSubclassOfPlayer() )
|
||||
{
|
||||
gi.SetBroadcastVisible( trace.endpos, NULL );
|
||||
gi.MSG_StartCGM( 7 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_7);
|
||||
gi.MSG_WriteCoord( trace.endpos[ 0 ] );
|
||||
gi.MSG_WriteCoord( trace.endpos[ 1 ] );
|
||||
gi.MSG_WriteCoord( trace.endpos[ 2 ] );
|
||||
@@ -2250,7 +2250,7 @@ float BulletAttack
|
||||
{
|
||||
if( iTracerCount )
|
||||
{
|
||||
gi.MSG_StartCGM( 1 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_1);
|
||||
|
||||
gi.MSG_WriteCoord( vBarrel[ 0 ] );
|
||||
gi.MSG_WriteCoord( vBarrel[ 1 ] );
|
||||
@@ -2258,7 +2258,7 @@ float BulletAttack
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 2 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_2);
|
||||
}
|
||||
|
||||
gi.MSG_WriteCoord( start[ 0 ] );
|
||||
@@ -2273,7 +2273,7 @@ float BulletAttack
|
||||
{
|
||||
if( iTracerCount )
|
||||
{
|
||||
gi.MSG_StartCGM( 3 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_3);
|
||||
|
||||
gi.MSG_WriteCoord( vBarrel[ 0 ] );
|
||||
gi.MSG_WriteCoord( vBarrel[ 1 ] );
|
||||
@@ -2286,7 +2286,7 @@ float BulletAttack
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 4 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_4);
|
||||
}
|
||||
|
||||
gi.MSG_WriteCoord( start[ 0 ] );
|
||||
@@ -2349,7 +2349,7 @@ void FakeBulletAttack
|
||||
( *piTracerCount )++;
|
||||
if( *piTracerCount == iTracerFrequency )
|
||||
{
|
||||
gi.MSG_StartCGM( 25 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_NO_BARREL_1);
|
||||
gi.MSG_WriteCoord( vBarrel[ 0 ] );
|
||||
gi.MSG_WriteCoord( vBarrel[ 1 ] );
|
||||
gi.MSG_WriteCoord( vBarrel[ 2 ] );
|
||||
@@ -2357,12 +2357,12 @@ void FakeBulletAttack
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 26 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_NO_BARREL_2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gi.MSG_StartCGM( 26 );
|
||||
gi.MSG_StartCGM(CGM_BULLET_NO_BARREL_2);
|
||||
}
|
||||
|
||||
gi.MSG_WriteCoord( start[ 0 ] );
|
||||
|
||||
@@ -151,7 +151,7 @@ void WindowObject::WindowKilled( Event *ev )
|
||||
vCenter = origin + mins + maxs;
|
||||
|
||||
gi.SetBroadcastVisible( vCenter, vCenter );
|
||||
gi.MSG_StartCGM( 24 );
|
||||
gi.MSG_StartCGM(CGM_MAKE_WINDOW_DEBRIS);
|
||||
gi.MSG_WriteCoord( vCenter[ 0 ] );
|
||||
gi.MSG_WriteCoord( vCenter[ 1 ] );
|
||||
gi.MSG_WriteCoord( vCenter[ 2 ] );
|
||||
|
||||
+55
-26
@@ -391,9 +391,6 @@ ConSimple *World::GetTargetList( const_str targetname )
|
||||
return &m_targetList.addKeyValue( targetname );
|
||||
}
|
||||
|
||||
|
||||
#ifdef GAME_DLL
|
||||
|
||||
World::World()
|
||||
{
|
||||
world = this;
|
||||
@@ -424,11 +421,30 @@ World::World()
|
||||
|
||||
// set the default farplane parameters
|
||||
farplane_distance = 0;
|
||||
farplane_color = "0 0 0";
|
||||
farplane_bias = 0.0;
|
||||
farplane_color = vec_zero;
|
||||
farplane_cull = qtrue;
|
||||
skybox_farplane = 0.0;
|
||||
render_terrain = qtrue;
|
||||
skybox_speed = 0.0;
|
||||
farclip_override = 0.f;
|
||||
farplane_color_override = Vector(-1, -1, -1);
|
||||
animated_farplane_start = 0.0;
|
||||
animated_farplane_end = 0.0;
|
||||
animated_farplane_start_z = 8192.0;
|
||||
animated_farplane_end_z = 0.0;
|
||||
animated_farplane_bias_start = 0.0;
|
||||
animated_farplane_bias_end = 0.0;
|
||||
animated_farplane_bias_start_z = 8192.0;
|
||||
animated_farplane_bias_end_z = 0.0;
|
||||
animated_farplane_color_start = vec_zero;
|
||||
animated_farplane_color_end = vec_zero;
|
||||
animated_farplane_color_start_z = 8192.0;
|
||||
animated_farplane_color_end_z = 0.0;
|
||||
|
||||
UpdateFog();
|
||||
|
||||
sky_alpha = 1.0f;
|
||||
sky_portal = qtrue;
|
||||
UpdateSky();
|
||||
|
||||
@@ -472,19 +488,12 @@ void World::UpdateConfigStrings( void )
|
||||
gi.SetConfigstring( CS_MESSAGE, level.level_name.c_str() );
|
||||
};
|
||||
|
||||
void World::UpdateFog( void )
|
||||
{
|
||||
gi.SetFarPlane( farplane_distance );
|
||||
gi.SetConfigstring( CS_FOGINFO, va( "%d %.0f %.4f %.4f %.4f", farplane_cull, farplane_distance, farplane_color.x, farplane_color.y, farplane_color.z ) );
|
||||
}
|
||||
|
||||
void World::UpdateSky( void )
|
||||
{
|
||||
gi.SetSkyPortal( sky_portal );
|
||||
gi.SetConfigstring( CS_SKYINFO, va( "%.4f %d", sky_alpha, sky_portal ) );
|
||||
}
|
||||
|
||||
|
||||
void World::SetSoundtrack( Event *ev )
|
||||
{
|
||||
const char *text;
|
||||
@@ -566,6 +575,41 @@ void World::SetNorthYaw( Event *ev )
|
||||
m_fNorth = anglemod( ev->GetFloat( 1 ) );
|
||||
}
|
||||
|
||||
#if TARGET_GAME_PROTOCOL >= 15
|
||||
|
||||
void World::UpdateFog(void)
|
||||
{
|
||||
gi.SetFarPlane(farplane_distance);
|
||||
gi.SetConfigstring(CS_FOGINFO, va(
|
||||
"%d %.0f %.0f %.0f %.6f %.4f %.4f %.4f %d %.0f %.2f %.2f %.2f",
|
||||
farplane_cull,
|
||||
farplane_distance,
|
||||
farplane_bias,
|
||||
skybox_farplane,
|
||||
skybox_speed,
|
||||
farplane_color.x,
|
||||
farplane_color.y,
|
||||
farplane_color.z,
|
||||
render_terrain,
|
||||
farclip_override,
|
||||
farplane_color_override.x,
|
||||
farplane_color_override.y,
|
||||
farplane_color_override.z
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void World::UpdateFog(void)
|
||||
{
|
||||
gi.SetFarPlane(farplane_distance);
|
||||
gi.SetConfigstring(CS_FOGINFO, va("%d %.0f %.4f %.4f %.4f", farplane_cull, farplane_distance, farplane_color.x, farplane_color.y, farplane_color.z));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
CLASS_DECLARATION( Entity, World, "worldspawn" )
|
||||
{
|
||||
{ &EV_World_SetSoundtrack, &World::SetSoundtrack },
|
||||
@@ -594,18 +638,3 @@ CLASS_DECLARATION( Entity, World, "worldspawn" )
|
||||
{ &EV_World_SetSunDiffuseColor, NULL },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
World::World()
|
||||
{
|
||||
world = this;
|
||||
world_dying = qfalse;
|
||||
}
|
||||
|
||||
CLASS_DECLARATION( SimpleEntity, World, "worldspawn" )
|
||||
{
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -51,8 +51,26 @@ class World : public SimpleEntity {
|
||||
public:
|
||||
// farplane variables
|
||||
float farplane_distance;
|
||||
float farplane_bias;
|
||||
Vector farplane_color;
|
||||
qboolean farplane_cull;
|
||||
float skybox_farplane;
|
||||
qboolean render_terrain;
|
||||
float skybox_speed;
|
||||
float farclip_override;
|
||||
Vector farplane_color_override;
|
||||
float animated_farplane_start;
|
||||
float animated_farplane_end;
|
||||
float animated_farplane_start_z;
|
||||
float animated_farplane_end_z;
|
||||
float animated_farplane_bias_start;
|
||||
float animated_farplane_bias_end;
|
||||
float animated_farplane_bias_start_z;
|
||||
float animated_farplane_bias_end_z;
|
||||
Vector animated_farplane_color_start;
|
||||
Vector animated_farplane_color_end;
|
||||
float animated_farplane_color_start_z;
|
||||
float animated_farplane_color_end_z;
|
||||
|
||||
// sky variables
|
||||
float sky_alpha;
|
||||
|
||||
@@ -284,7 +284,7 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
|
||||
static int errorCount;
|
||||
int currentTime;
|
||||
|
||||
#ifdef _DEBUG
|
||||
#ifdef COM_ERROR_ASSERT
|
||||
*( int * )0 = 0;
|
||||
assert( 0 );
|
||||
#endif
|
||||
|
||||
@@ -114,7 +114,7 @@ void Z_Free( void *ptr )
|
||||
block->prev = block;
|
||||
block->next = block;
|
||||
|
||||
#if !defined(_DEBUG) && !defined(WIN32)
|
||||
#if !defined(_DEBUG) || !defined(WIN32)
|
||||
// free the block
|
||||
free( block );
|
||||
#else
|
||||
@@ -172,7 +172,7 @@ void *Z_TagMalloc( size_t size, int tag )
|
||||
#endif
|
||||
size = PAD( size, sizeof( intptr_t ) ); // align to 32/64 bit boundary
|
||||
|
||||
#if !defined(_DEBUG) && !defined(WIN32)
|
||||
#if !defined(_DEBUG) || !defined(WIN32)
|
||||
block = ( memblock_t * )malloc( size );
|
||||
#else
|
||||
block = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
|
||||
+28
-17
@@ -161,7 +161,7 @@ int overflows;
|
||||
|
||||
#if TARGET_GAME_PROTOCOL >= 15
|
||||
|
||||
int MSG_NegateValue(int value)
|
||||
int MSG_WriteNegateValue(int value, int bits)
|
||||
{
|
||||
if (value >= 0) {
|
||||
value <<= 1;
|
||||
@@ -173,13 +173,34 @@ int MSG_NegateValue(int value)
|
||||
return value;
|
||||
}
|
||||
|
||||
int MSG_ReadNegateValue(int value, int bits)
|
||||
{
|
||||
if (value & 1) {
|
||||
value = ~(value >> 1);
|
||||
}
|
||||
else {
|
||||
value >>= 1;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int MSG_NegateValue(int value)
|
||||
int MSG_WriteNegateValue(int value, int bits)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
int MSG_ReadNegateValue(int value, int bits)
|
||||
{
|
||||
if (value & (1 << (bits - 1))) {
|
||||
value |= -1 ^ ((1 << bits) - 1);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// negative bit values include signs
|
||||
@@ -216,8 +237,9 @@ void MSG_WriteBits( msg_t *msg, int value, int bits ) {
|
||||
}
|
||||
if ( bits < 0 ) {
|
||||
bits = -bits;
|
||||
value = MSG_NegateValue(value);
|
||||
value = MSG_WriteNegateValue(value, bits);
|
||||
}
|
||||
|
||||
if (msg->oob) {
|
||||
if (msg->cursize + (bits >> 3) > msg->maxsize) {
|
||||
msg->overflowed = qtrue;
|
||||
@@ -326,21 +348,10 @@ int MSG_ReadBits( msg_t *msg, int bits ) {
|
||||
}
|
||||
msg->readcount = (msg->bit>>3)+1;
|
||||
}
|
||||
#if TARGET_GAME_PROTOCOL >= 15
|
||||
|
||||
if (sgn) {
|
||||
if (value & 1) {
|
||||
value = ~(value >> 1);
|
||||
} else {
|
||||
value >>= 1;
|
||||
}
|
||||
value = MSG_ReadNegateValue(value, bits);
|
||||
}
|
||||
#else
|
||||
if (sgn) {
|
||||
if (value & (1 << (bits - 1))) {
|
||||
value |= -1 ^ ((1 << bits) - 1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return value;
|
||||
}
|
||||
@@ -2126,7 +2137,7 @@ float MSG_ReadPackedCoordExtra(msg_t* msg, float fromValue, int bits)
|
||||
void MSG_WritePackedAngle(msg_t* msg, float value, int bits)
|
||||
{
|
||||
int packed = MSG_PackAngle(value, bits);
|
||||
MSG_WriteBits(msg, packed, bits);
|
||||
MSG_WriteBits(msg, packed, abs(bits));
|
||||
}
|
||||
|
||||
void MSG_WritePackedAnimTime(msg_t* msg, float fromValue, float toValue, float frameTime, int bits)
|
||||
|
||||
@@ -346,6 +346,8 @@ short ShortSwapPtr(const void* l);
|
||||
int LongSwapPtr(const void* l);
|
||||
short ShortNoSwapPtr(const void* l);
|
||||
int LongNoSwapPtr(const void* l);
|
||||
float FloatSwapPtr(const void* l);
|
||||
float FloatNoSwapPtr(const void* l);
|
||||
|
||||
#if defined( Q3_BIG_ENDIAN ) && defined( Q3_LITTLE_ENDIAN )
|
||||
#error "Endianness defined as both big and little"
|
||||
@@ -354,11 +356,16 @@ int LongNoSwapPtr(const void* l);
|
||||
#define CopyLittleShort(dest, src) CopyShortSwap(dest, src)
|
||||
#define CopyLittleLong(dest, src) CopyLongSwap(dest, src)
|
||||
|
||||
//
|
||||
// Those Little*Ptr are used to avoid alignment problems
|
||||
//
|
||||
|
||||
#define LittleShort(x) ShortSwap(x)
|
||||
#define LittleLong(x) LongSwap(x)
|
||||
#define LittleFloat(x) FloatSwap(&x)
|
||||
#define LittleShortPtr(x) ShortSwapPtr(&x)
|
||||
#define LittleLongPtr(x) LongSwapPtr(&x)
|
||||
#define LittleFloatPtr(x) FloatSwapPtr(&x)
|
||||
|
||||
#define BigShort
|
||||
#define BigLong
|
||||
@@ -376,6 +383,7 @@ int LongNoSwapPtr(const void* l);
|
||||
#define LittleFloat
|
||||
#define LittleShortPtr(x) ShortNoSwapPtr(&x)
|
||||
#define LittleLongPtr(x) LongNoSwapPtr(&x)
|
||||
#define LittleFloatPtr(x) FloatNoSwapPtr(&x)
|
||||
|
||||
#define BigShort(x) ShortSwap(x)
|
||||
#define BigLong(x) LongSwap(x)
|
||||
|
||||
@@ -1552,6 +1552,20 @@ int LongNoSwapPtr(const void* l)
|
||||
return out;
|
||||
}
|
||||
|
||||
float FloatSwapPtr(const void* l)
|
||||
{
|
||||
float out;
|
||||
CopyLittleLong((int*)&out, l);
|
||||
return out;
|
||||
}
|
||||
|
||||
float FloatNoSwapPtr(const void* l)
|
||||
{
|
||||
float out;
|
||||
Com_Memcpy(&out, l, sizeof(float));
|
||||
return out;
|
||||
}
|
||||
|
||||
void Swap_Init(void)
|
||||
{
|
||||
// Endianness is now computed at compile time
|
||||
|
||||
+10
-35
@@ -37,7 +37,7 @@ extern "C" {
|
||||
// These values are the only one that must be set for the version
|
||||
#define PRODUCT_VERSION_MAJOR 0
|
||||
#define PRODUCT_VERSION_MINOR 53
|
||||
#define PRODUCT_VERSION_PATCH 1
|
||||
#define PRODUCT_VERSION_PATCH 2
|
||||
#define PRODUCT_VERSION_STAGE "alpha"
|
||||
|
||||
//
|
||||
@@ -454,6 +454,7 @@ enum {
|
||||
MESSAGE_CHAT_WHITE,
|
||||
MESSAGE_WHITE,
|
||||
MESSAGE_CHAT_RED,
|
||||
MESSAGE_CHAT_GREEN,
|
||||
MESSAGE_MAX
|
||||
};
|
||||
|
||||
@@ -484,34 +485,6 @@ enum {
|
||||
#define HUD_MESSAGE_CHAT_WHITE "\x02"
|
||||
#define HUD_MESSAGE_CHAT_RED "\x04"
|
||||
|
||||
#define CGM_HUDDRAW_SHADER 27
|
||||
#define CGM_HUDDRAW_ALIGN 28
|
||||
#define CGM_HUDDRAW_RECT 29
|
||||
#define CGM_HUDDRAW_VIRTUALSIZE 30
|
||||
#define CGM_HUDDRAW_COLOR 31
|
||||
#define CGM_HUDDRAW_ALPHA 32
|
||||
#define CGM_HUDDRAW_STRING 33
|
||||
#define CGM_HUDDRAW_FONT 34
|
||||
#define CGM_HUDDRAW_TIMER 38
|
||||
#define CGM_HUDDRAW_3D 39
|
||||
#define CGM_HUDDRAW_BREAK3D 40
|
||||
#define CGM_HUDDRAW_FADE 41
|
||||
#define CGM_HUDDRAW_MOVE 42
|
||||
#define CGM_HUDDRAW_SCALE 43
|
||||
#define CGM_VIEWMODELANIM 44
|
||||
#define CGM_VIEWMODELPREFIX 45
|
||||
#define CGM_MODHEIGHTFLOAT 46
|
||||
#define CGM_SETVMASPEED 47
|
||||
#define CGM_HINTSTRING 48
|
||||
#define CGM_PLAYLOCALSOUND 49
|
||||
#define CGM_SETLOCALSOUNDRATE 50
|
||||
#define CGM_STOPLOCALSOUND 51
|
||||
#define CGM_HUDDRAW_RECTX 52
|
||||
#define CGM_HUDDRAW_RECTY 53
|
||||
#define CGM_HUDDRAW_RECTWH 54
|
||||
#define CGM_REPLICATION 55
|
||||
#define CGM_HUDDRAW_DELETE 56
|
||||
|
||||
extern vec4_t g_color_table[8];
|
||||
|
||||
#define MAKERGB( v, r, g, b ) v[0]=r;v[1]=g;v[2]=b
|
||||
@@ -1756,10 +1729,8 @@ typedef struct playerState_s {
|
||||
#define BUTTON_LEAN_LEFT_BITINDEX 4
|
||||
#define BUTTON_LEAN_RIGHT_BITINDEX 5
|
||||
#define BUTTON_TALK_BITINDEX 6 // displays talk balloon and disables actions
|
||||
#define BUTTON_ANY_BITINDEX 10 // any key whatsoever
|
||||
#define BUTTON_ANY2_BITINDEX 11 // any key whatsoever (regardless of keycatcher)
|
||||
#define BUTTON_MOUSE_BITINDEX 14 // mouse move
|
||||
#define BUTTON_HOLSTER_BITINDEX 15
|
||||
#define BUTTON_ANY_BITINDEX 14 // any key whatsoever
|
||||
#define BUTTON_MOUSE_BITINDEX 15 // mouse move
|
||||
|
||||
#define BUTTON_ATTACKLEFT (1 << BUTTON_ATTACKLEFT_BITINDEX)
|
||||
#define BUTTON_ATTACKRIGHT (1 << BUTTON_ATTACKRIGHT_BITINDEX)
|
||||
@@ -1769,9 +1740,7 @@ typedef struct playerState_s {
|
||||
#define BUTTON_LEAN_RIGHT (1 << BUTTON_LEAN_RIGHT_BITINDEX)
|
||||
#define BUTTON_TALK (1 << BUTTON_TALK_BITINDEX) // displays talk balloon and disables actions
|
||||
#define BUTTON_ANY (1 << BUTTON_ANY_BITINDEX) // any key whatsoever
|
||||
#define BUTTON_ANY2 (1 << BUTTON_ANY_BITINDEX) // any key whatsoever (regardless of keycatcher)
|
||||
#define BUTTON_MOUSE (1 << BUTTON_MOUSE_BITINDEX)
|
||||
#define BUTTON_HOLSTER (1 << BUTTON_HOLSTER_BITINDEX)
|
||||
|
||||
#define WEAPON_COMMAND_USE_PISTOL 1
|
||||
#define WEAPON_COMMAND_USE_RIFLE 2
|
||||
@@ -1788,7 +1757,13 @@ typedef struct playerState_s {
|
||||
#define WEAPON_COMMAND_USE_LAST_WEAPON 13
|
||||
#define WEAPON_COMMAND_HOLSTER 14
|
||||
#define WEAPON_COMMAND_DROP 15
|
||||
|
||||
#if TARGET_GAME_PROTOCOL >= 15
|
||||
#define WEAPON_COMMAND_MAX 31
|
||||
#else
|
||||
#define WEAPON_COMMAND_MAX 15
|
||||
#endif
|
||||
|
||||
#define WEAPON_COMMAND_MASK (WEAPON_COMMAND_MAX << 7)
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ NET
|
||||
|
||||
#define PORT_ANY -1
|
||||
|
||||
#define MAX_RELIABLE_COMMANDS 64 // max string commands buffered for restransmit
|
||||
#define MAX_RELIABLE_COMMANDS 512 // max string commands buffered for restransmit
|
||||
|
||||
typedef enum {
|
||||
NA_BOT,
|
||||
|
||||
+394
-44
@@ -950,24 +950,24 @@ image_t* R_CreateImage(
|
||||
&image->uploadHeight,
|
||||
&image->bytesUsed
|
||||
);
|
||||
} else {
|
||||
Upload32(
|
||||
(unsigned*)pic,
|
||||
image->width,
|
||||
image->height,
|
||||
image->numMipmaps,
|
||||
allowPicmip,
|
||||
image->dynamicallyUpdated,
|
||||
force32bit,
|
||||
hasAlpha,
|
||||
&image->internalFormat,
|
||||
&image->uploadWidth,
|
||||
&image->uploadHeight,
|
||||
&image->bytesUsed,
|
||||
isLightmap
|
||||
);
|
||||
}
|
||||
|
||||
Upload32(
|
||||
(unsigned*)pic,
|
||||
image->width,
|
||||
image->height,
|
||||
image->numMipmaps,
|
||||
allowPicmip,
|
||||
image->dynamicallyUpdated,
|
||||
force32bit,
|
||||
hasAlpha,
|
||||
&image->internalFormat,
|
||||
&image->uploadWidth,
|
||||
&image->uploadHeight,
|
||||
&image->bytesUsed,
|
||||
isLightmap
|
||||
);
|
||||
|
||||
qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glWrapClampModeX );
|
||||
qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, glWrapClampModeY );
|
||||
|
||||
@@ -1300,6 +1300,342 @@ static void LoadPCX32 ( const char *filename, byte **pic, int *width, int *heigh
|
||||
ri.Free (palette);
|
||||
}
|
||||
|
||||
//==========================
|
||||
//
|
||||
// DDS Loading
|
||||
//
|
||||
//==========================
|
||||
|
||||
typedef unsigned int ui32_t;
|
||||
|
||||
typedef struct ddsHeader_s
|
||||
{
|
||||
ui32_t headerSize;
|
||||
ui32_t flags;
|
||||
ui32_t height;
|
||||
ui32_t width;
|
||||
ui32_t pitchOrFirstMipSize;
|
||||
ui32_t volumeDepth;
|
||||
ui32_t numMips;
|
||||
ui32_t reserved1[11];
|
||||
ui32_t always_0x00000020;
|
||||
ui32_t pixelFormatFlags;
|
||||
ui32_t fourCC;
|
||||
ui32_t rgbBitCount;
|
||||
ui32_t rBitMask;
|
||||
ui32_t gBitMask;
|
||||
ui32_t bBitMask;
|
||||
ui32_t aBitMask;
|
||||
ui32_t caps;
|
||||
ui32_t caps2;
|
||||
ui32_t caps3;
|
||||
ui32_t caps4;
|
||||
ui32_t reserved2;
|
||||
}
|
||||
ddsHeader_t;
|
||||
|
||||
// flags:
|
||||
#define _DDSFLAGS_REQUIRED 0x001007
|
||||
#define _DDSFLAGS_PITCH 0x8
|
||||
#define _DDSFLAGS_MIPMAPCOUNT 0x20000
|
||||
#define _DDSFLAGS_FIRSTMIPSIZE 0x80000
|
||||
#define _DDSFLAGS_VOLUMEDEPTH 0x800000
|
||||
|
||||
// pixelFormatFlags:
|
||||
#define DDSPF_ALPHAPIXELS 0x1
|
||||
#define DDSPF_ALPHA 0x2
|
||||
#define DDSPF_FOURCC 0x4
|
||||
#define DDSPF_RGB 0x40
|
||||
#define DDSPF_YUV 0x200
|
||||
#define DDSPF_LUMINANCE 0x20000
|
||||
|
||||
// caps:
|
||||
#define DDSCAPS_COMPLEX 0x8
|
||||
#define DDSCAPS_MIPMAP 0x400000
|
||||
#define DDSCAPS_REQUIRED 0x1000
|
||||
|
||||
// caps2:
|
||||
#define DDSCAPS2_CUBEMAP 0xFE00
|
||||
#define DDSCAPS2_VOLUME 0x200000
|
||||
|
||||
typedef struct ddsHeaderDxt10_s
|
||||
{
|
||||
ui32_t dxgiFormat;
|
||||
ui32_t dimensions;
|
||||
ui32_t miscFlags;
|
||||
ui32_t arraySize;
|
||||
ui32_t miscFlags2;
|
||||
}
|
||||
ddsHeaderDxt10_t;
|
||||
|
||||
// dxgiFormat
|
||||
// from http://msdn.microsoft.com/en-us/library/windows/desktop/bb173059%28v=vs.85%29.aspx
|
||||
typedef enum DXGI_FORMAT {
|
||||
DXGI_FORMAT_UNKNOWN = 0,
|
||||
DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
|
||||
DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
|
||||
DXGI_FORMAT_R32G32B32A32_UINT = 3,
|
||||
DXGI_FORMAT_R32G32B32A32_SINT = 4,
|
||||
DXGI_FORMAT_R32G32B32_TYPELESS = 5,
|
||||
DXGI_FORMAT_R32G32B32_FLOAT = 6,
|
||||
DXGI_FORMAT_R32G32B32_UINT = 7,
|
||||
DXGI_FORMAT_R32G32B32_SINT = 8,
|
||||
DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
|
||||
DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
|
||||
DXGI_FORMAT_R16G16B16A16_UNORM = 11,
|
||||
DXGI_FORMAT_R16G16B16A16_UINT = 12,
|
||||
DXGI_FORMAT_R16G16B16A16_SNORM = 13,
|
||||
DXGI_FORMAT_R16G16B16A16_SINT = 14,
|
||||
DXGI_FORMAT_R32G32_TYPELESS = 15,
|
||||
DXGI_FORMAT_R32G32_FLOAT = 16,
|
||||
DXGI_FORMAT_R32G32_UINT = 17,
|
||||
DXGI_FORMAT_R32G32_SINT = 18,
|
||||
DXGI_FORMAT_R32G8X24_TYPELESS = 19,
|
||||
DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
|
||||
DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
|
||||
DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
|
||||
DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
|
||||
DXGI_FORMAT_R10G10B10A2_UNORM = 24,
|
||||
DXGI_FORMAT_R10G10B10A2_UINT = 25,
|
||||
DXGI_FORMAT_R11G11B10_FLOAT = 26,
|
||||
DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM = 28,
|
||||
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
|
||||
DXGI_FORMAT_R8G8B8A8_UINT = 30,
|
||||
DXGI_FORMAT_R8G8B8A8_SNORM = 31,
|
||||
DXGI_FORMAT_R8G8B8A8_SINT = 32,
|
||||
DXGI_FORMAT_R16G16_TYPELESS = 33,
|
||||
DXGI_FORMAT_R16G16_FLOAT = 34,
|
||||
DXGI_FORMAT_R16G16_UNORM = 35,
|
||||
DXGI_FORMAT_R16G16_UINT = 36,
|
||||
DXGI_FORMAT_R16G16_SNORM = 37,
|
||||
DXGI_FORMAT_R16G16_SINT = 38,
|
||||
DXGI_FORMAT_R32_TYPELESS = 39,
|
||||
DXGI_FORMAT_D32_FLOAT = 40,
|
||||
DXGI_FORMAT_R32_FLOAT = 41,
|
||||
DXGI_FORMAT_R32_UINT = 42,
|
||||
DXGI_FORMAT_R32_SINT = 43,
|
||||
DXGI_FORMAT_R24G8_TYPELESS = 44,
|
||||
DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
|
||||
DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
|
||||
DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
|
||||
DXGI_FORMAT_R8G8_TYPELESS = 48,
|
||||
DXGI_FORMAT_R8G8_UNORM = 49,
|
||||
DXGI_FORMAT_R8G8_UINT = 50,
|
||||
DXGI_FORMAT_R8G8_SNORM = 51,
|
||||
DXGI_FORMAT_R8G8_SINT = 52,
|
||||
DXGI_FORMAT_R16_TYPELESS = 53,
|
||||
DXGI_FORMAT_R16_FLOAT = 54,
|
||||
DXGI_FORMAT_D16_UNORM = 55,
|
||||
DXGI_FORMAT_R16_UNORM = 56,
|
||||
DXGI_FORMAT_R16_UINT = 57,
|
||||
DXGI_FORMAT_R16_SNORM = 58,
|
||||
DXGI_FORMAT_R16_SINT = 59,
|
||||
DXGI_FORMAT_R8_TYPELESS = 60,
|
||||
DXGI_FORMAT_R8_UNORM = 61,
|
||||
DXGI_FORMAT_R8_UINT = 62,
|
||||
DXGI_FORMAT_R8_SNORM = 63,
|
||||
DXGI_FORMAT_R8_SINT = 64,
|
||||
DXGI_FORMAT_A8_UNORM = 65,
|
||||
DXGI_FORMAT_R1_UNORM = 66,
|
||||
DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
|
||||
DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
|
||||
DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
|
||||
DXGI_FORMAT_BC1_TYPELESS = 70,
|
||||
DXGI_FORMAT_BC1_UNORM = 71,
|
||||
DXGI_FORMAT_BC1_UNORM_SRGB = 72,
|
||||
DXGI_FORMAT_BC2_TYPELESS = 73,
|
||||
DXGI_FORMAT_BC2_UNORM = 74,
|
||||
DXGI_FORMAT_BC2_UNORM_SRGB = 75,
|
||||
DXGI_FORMAT_BC3_TYPELESS = 76,
|
||||
DXGI_FORMAT_BC3_UNORM = 77,
|
||||
DXGI_FORMAT_BC3_UNORM_SRGB = 78,
|
||||
DXGI_FORMAT_BC4_TYPELESS = 79,
|
||||
DXGI_FORMAT_BC4_UNORM = 80,
|
||||
DXGI_FORMAT_BC4_SNORM = 81,
|
||||
DXGI_FORMAT_BC5_TYPELESS = 82,
|
||||
DXGI_FORMAT_BC5_UNORM = 83,
|
||||
DXGI_FORMAT_BC5_SNORM = 84,
|
||||
DXGI_FORMAT_B5G6R5_UNORM = 85,
|
||||
DXGI_FORMAT_B5G5R5A1_UNORM = 86,
|
||||
DXGI_FORMAT_B8G8R8A8_UNORM = 87,
|
||||
DXGI_FORMAT_B8G8R8X8_UNORM = 88,
|
||||
DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
|
||||
DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
|
||||
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
|
||||
DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
|
||||
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
|
||||
DXGI_FORMAT_BC6H_TYPELESS = 94,
|
||||
DXGI_FORMAT_BC6H_UF16 = 95,
|
||||
DXGI_FORMAT_BC6H_SF16 = 96,
|
||||
DXGI_FORMAT_BC7_TYPELESS = 97,
|
||||
DXGI_FORMAT_BC7_UNORM = 98,
|
||||
DXGI_FORMAT_BC7_UNORM_SRGB = 99,
|
||||
DXGI_FORMAT_AYUV = 100,
|
||||
DXGI_FORMAT_Y410 = 101,
|
||||
DXGI_FORMAT_Y416 = 102,
|
||||
DXGI_FORMAT_NV12 = 103,
|
||||
DXGI_FORMAT_P010 = 104,
|
||||
DXGI_FORMAT_P016 = 105,
|
||||
DXGI_FORMAT_420_OPAQUE = 106,
|
||||
DXGI_FORMAT_YUY2 = 107,
|
||||
DXGI_FORMAT_Y210 = 108,
|
||||
DXGI_FORMAT_Y216 = 109,
|
||||
DXGI_FORMAT_NV11 = 110,
|
||||
DXGI_FORMAT_AI44 = 111,
|
||||
DXGI_FORMAT_IA44 = 112,
|
||||
DXGI_FORMAT_P8 = 113,
|
||||
DXGI_FORMAT_A8P8 = 114,
|
||||
DXGI_FORMAT_B4G4R4A4_UNORM = 115,
|
||||
DXGI_FORMAT_FORCE_UINT = 0xffffffffUL
|
||||
} DXGI_FORMAT;
|
||||
|
||||
#define EncodeFourCC(x) ((((ui32_t)((x)[0])) ) | \
|
||||
(((ui32_t)((x)[1])) << 8 ) | \
|
||||
(((ui32_t)((x)[2])) << 16) | \
|
||||
(((ui32_t)((x)[3])) << 24) )
|
||||
|
||||
|
||||
static void LoadDDS(const char* name, byte** pic, int* width, int* height, qboolean* hasAlpha, int* glCompressMode, int* numMipmaps, int* piMipmapsAvailable) {
|
||||
union {
|
||||
byte* b;
|
||||
void* v;
|
||||
} buffer;
|
||||
int len;
|
||||
ddsHeader_t* ddsHeader = NULL;
|
||||
ddsHeaderDxt10_t* ddsHeaderDxt10 = NULL;
|
||||
byte* data;
|
||||
|
||||
*pic = 0;
|
||||
*piMipmapsAvailable = 0;
|
||||
|
||||
if (width)
|
||||
*width = 0;
|
||||
if (height)
|
||||
*height = 0;
|
||||
|
||||
*pic = NULL;
|
||||
|
||||
//
|
||||
// load the file
|
||||
//
|
||||
len = ri.FS_ReadFile((char*)name, &buffer.v);
|
||||
if (!buffer.b || len < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// reject files that are too small to hold even a header
|
||||
//
|
||||
if (len < 4 + sizeof(*ddsHeader))
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "File %s is too small to be a DDS file.\n", name);
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// reject files that don't start with "DDS "
|
||||
//
|
||||
if (*((ui32_t*)(buffer.b)) != EncodeFourCC("DDS "))
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "File %s is not a DDS file.\n", name);
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// parse header and dx10 header if available
|
||||
//
|
||||
ddsHeader = (ddsHeader_t*)(buffer.b + 4);
|
||||
if ((ddsHeader->pixelFormatFlags & DDSPF_FOURCC) && ddsHeader->fourCC == EncodeFourCC("DX10"))
|
||||
{
|
||||
if (len < 4 + sizeof(*ddsHeader) + sizeof(*ddsHeaderDxt10))
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "File %s indicates a DX10 header it is too small to contain.\n", name);
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
return;
|
||||
}
|
||||
|
||||
ddsHeaderDxt10 = (ddsHeaderDxt10_t*)(buffer.b + 4 + sizeof(ddsHeader_t));
|
||||
data = buffer.b + 4 + sizeof(*ddsHeader) + sizeof(*ddsHeaderDxt10);
|
||||
len -= 4 + sizeof(*ddsHeader) + sizeof(*ddsHeaderDxt10);
|
||||
}
|
||||
else
|
||||
{
|
||||
data = buffer.b + 4 + sizeof(*ddsHeader);
|
||||
len -= 4 + sizeof(*ddsHeader);
|
||||
}
|
||||
|
||||
if (width)
|
||||
*width = ddsHeader->width;
|
||||
if (height)
|
||||
*height = ddsHeader->height;
|
||||
|
||||
if (piMipmapsAvailable)
|
||||
{
|
||||
if (ddsHeader->flags & _DDSFLAGS_MIPMAPCOUNT)
|
||||
*piMipmapsAvailable = ddsHeader->numMips;
|
||||
else
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
|
||||
// FIXME: handle cube map
|
||||
//if ((ddsHeader->caps2 & DDSCAPS2_CUBEMAP) == DDSCAPS2_CUBEMAP)
|
||||
|
||||
//
|
||||
// Convert DXGI format/FourCC into OpenGL format
|
||||
//
|
||||
if (ddsHeaderDxt10)
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "DDS File %s has unsupported DXGI format %d.", name, ddsHeaderDxt10->dxgiFormat);
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ddsHeader->pixelFormatFlags & DDSPF_FOURCC)
|
||||
{
|
||||
if (ddsHeader->fourCC == EncodeFourCC("DXT1"))
|
||||
*glCompressMode = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||
else if (ddsHeader->fourCC == EncodeFourCC("DXT2"))
|
||||
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||
else if (ddsHeader->fourCC == EncodeFourCC("DXT3"))
|
||||
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||
else if (ddsHeader->fourCC == EncodeFourCC("DXT4"))
|
||||
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
else if (ddsHeader->fourCC == EncodeFourCC("DXT5"))
|
||||
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
else
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "DDS File %s has unsupported FourCC.", name);
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (ddsHeader->pixelFormatFlags == (DDSPF_RGB | DDSPF_ALPHAPIXELS)
|
||||
&& ddsHeader->rgbBitCount == 32
|
||||
&& ddsHeader->rBitMask == 0x000000ff
|
||||
&& ddsHeader->gBitMask == 0x0000ff00
|
||||
&& ddsHeader->bBitMask == 0x00ff0000
|
||||
&& ddsHeader->aBitMask == 0xff000000)
|
||||
{
|
||||
*glCompressMode = GL_RGBA8;
|
||||
}
|
||||
else
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "DDS File %s has unsupported RGBA format.", name);
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
*pic = ri.Malloc(len);
|
||||
Com_Memcpy(*pic, data, len);
|
||||
|
||||
ri.FS_FreeFile(buffer.v);
|
||||
}
|
||||
|
||||
/*
|
||||
=========================================================
|
||||
|
||||
@@ -2087,6 +2423,8 @@ Loads any of the supported image types into a cannonical
|
||||
static void R_LoadImage(const char* name, byte** pic, int* width, int* height, qboolean* hasAlpha, int* glCompressMode, int* numMipmaps, int* piMipmapsAvailable) {
|
||||
size_t len;
|
||||
char tempName[MAX_STRING_TOKENS + 1];
|
||||
char altname[MAX_QPATH];
|
||||
|
||||
|
||||
*hasAlpha = qfalse;
|
||||
*glCompressMode = 0;
|
||||
@@ -2099,36 +2437,48 @@ static void R_LoadImage(const char* name, byte** pic, int* width, int* height, q
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Q_stricmp(name + len - 4, ".tga") || !Q_stricmp(name + len - 4, ".jpg")) {
|
||||
char altname[MAX_QPATH];
|
||||
strcpy(altname, name);
|
||||
if (r_loadjpg->integer) {
|
||||
len = strlen(altname);
|
||||
altname[len - 3] = 'j';
|
||||
altname[len - 2] = 'p';
|
||||
altname[len - 1] = 'g';
|
||||
// try jpg first
|
||||
LoadJPG(altname, pic, width, height);
|
||||
strcpy(altname, name);
|
||||
len = strlen(altname);
|
||||
if (glConfig.textureCompression == 1)
|
||||
{
|
||||
len = strlen(altname);
|
||||
altname[len - 3] = 'd';
|
||||
altname[len - 2] = 'd';
|
||||
altname[len - 1] = 's';
|
||||
LoadDDS(altname, pic, width, height, hasAlpha, glCompressMode, numMipmaps, piMipmapsAvailable);
|
||||
}
|
||||
|
||||
if (!*pic)
|
||||
{
|
||||
if (!Q_stricmp(name + len - 4, ".tga") || !Q_stricmp(name + len - 4, ".jpg")) {
|
||||
if (r_loadjpg->integer) {
|
||||
len = strlen(altname);
|
||||
altname[len - 3] = 'j';
|
||||
altname[len - 2] = 'p';
|
||||
altname[len - 1] = 'g';
|
||||
// try jpg first
|
||||
LoadJPG(altname, pic, width, height);
|
||||
}
|
||||
if (!*pic) {
|
||||
altname[len - 3] = 't';
|
||||
altname[len - 2] = 'g';
|
||||
altname[len - 1] = 'a';
|
||||
LoadTGA(altname, pic, width, height);
|
||||
}
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
if (!*pic) {
|
||||
altname[len - 3] = 't';
|
||||
altname[len - 2] = 'g';
|
||||
altname[len - 1] = 'a';
|
||||
LoadTGA(name, pic, width, height);
|
||||
else if (!Q_stricmp(name + len - 4, ".pcx")) {
|
||||
LoadPCX32(name, pic, width, height);
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
else if (!Q_stricmp(name + len - 4, ".bmp")) {
|
||||
LoadBMP(name, pic, width, height);
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
else if (!Q_stricmp(name + len - 4, ".jpg")) {
|
||||
LoadJPG(name, pic, width, height);
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
else if (!Q_stricmp(name + len - 4, ".pcx")) {
|
||||
LoadPCX32(name, pic, width, height);
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
else if (!Q_stricmp(name + len - 4, ".bmp")) {
|
||||
LoadBMP(name, pic, width, height);
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
else if (!Q_stricmp(name + len - 4, ".jpg")) {
|
||||
LoadJPG(name, pic, width, height);
|
||||
*piMipmapsAvailable = 1;
|
||||
}
|
||||
|
||||
if (scr_initialized)
|
||||
|
||||
@@ -1966,7 +1966,7 @@ void RE_AddRefEntityToScene( const refEntity_t *ent, int parentEntityNumber);
|
||||
void RE_AddRefSpriteToScene(const refEntity_t* ent);
|
||||
void RE_AddTerrainMarkToScene(int iTerrainIndex, qhandle_t hShader, int numVerts, const polyVert_t* verts, int renderfx);
|
||||
refEntity_t* RE_GetRenderEntity(int entityNumber);
|
||||
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, polyVert_t* verts, int renderfx);
|
||||
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, const polyVert_t* verts, int renderfx);
|
||||
void RE_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b, int type );
|
||||
void RE_AddAdditiveLightToScene( const vec3_t org, float intensity, float r, float g, float b );
|
||||
void RE_RenderScene( const refdef_t *fd );
|
||||
|
||||
@@ -126,7 +126,7 @@ typedef struct {
|
||||
dtiki_t* (*R_Model_GetHandle)(qhandle_t handle);
|
||||
void (*DrawString)(fontheader_t* font, const char* text, float x, float y, int maxLen, qboolean virtualScreen);
|
||||
float (*GetFontHeight)(const fontheader_t* font);
|
||||
float (*GetFontStringWidth)(const fontheader_t* font, char* string);
|
||||
float (*GetFontStringWidth)(const fontheader_t* font, const char* string);
|
||||
fontheader_t* (*LoadFont)(const char* name);
|
||||
void (*SwipeBegin)(float thisTime, float life, qhandle_t hShader);
|
||||
void (*SwipePoint)(vec3_t point1, vec3_t point2, float time);
|
||||
|
||||
@@ -131,7 +131,7 @@ RE_AddPolyToScene
|
||||
|
||||
=====================
|
||||
*/
|
||||
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, polyVert_t* verts, int renderfx) {
|
||||
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, const polyVert_t* verts, int renderfx) {
|
||||
srfPoly_t *poly;
|
||||
|
||||
if ( !tr.registered ) {
|
||||
|
||||
@@ -619,7 +619,7 @@ void RB_CalcColorFromOneMinusEntity( unsigned char *dstColors )
|
||||
{
|
||||
int i;
|
||||
int *pColors = ( int * ) dstColors;
|
||||
unsigned char invModulate[3];
|
||||
unsigned char invModulate[4];
|
||||
int c;
|
||||
|
||||
if ( !backEnd.currentEntity )
|
||||
|
||||
@@ -1317,8 +1317,8 @@ void R_AddTerrainSurfaces()
|
||||
{
|
||||
Com_DPrintf(
|
||||
"%5d tris / %5d verts / %4d splits / %4d merges\n",
|
||||
g_nTris + ~g_tri.nFree,
|
||||
g_nVerts + ~g_vert.nFree,
|
||||
g_nTris - g_tri.nFree,
|
||||
g_nVerts - g_vert.nFree,
|
||||
g_nSplit,
|
||||
g_nMerge);
|
||||
}
|
||||
|
||||
@@ -225,7 +225,8 @@ void SV_DirectConnect( netadr_t from ) {
|
||||
char userinfo[MAX_INFO_STRING];
|
||||
int i;
|
||||
client_t *cl, *newcl;
|
||||
client_t temp;
|
||||
// Make this a temp variable to avoid stack overflow issues
|
||||
static client_t temp;
|
||||
gentity_t *ent;
|
||||
int clientNum;
|
||||
int version;
|
||||
|
||||
+14
-14
@@ -371,11 +371,11 @@ void TIKI_CacheFileSkel( skelHeader_t *pHeader, skelcache_t *cache, int length )
|
||||
iOffset += sizeof(skelWeight_t) * numWeights;
|
||||
iOffset += sizeof(skeletorVertex_t);
|
||||
|
||||
skelVert->normal[0] = LittleFloat(pVert->normal[0]);
|
||||
skelVert->normal[1] = LittleFloat(pVert->normal[1]);
|
||||
skelVert->normal[2] = LittleFloat(pVert->normal[2]);
|
||||
skelVert->texCoords[0] = LittleFloat(pVert->texCoords[0]);
|
||||
skelVert->texCoords[1] = LittleFloat(pVert->texCoords[1]);
|
||||
skelVert->normal[0] = LittleFloatPtr(pVert->normal[0]);
|
||||
skelVert->normal[1] = LittleFloatPtr(pVert->normal[1]);
|
||||
skelVert->normal[2] = LittleFloatPtr(pVert->normal[2]);
|
||||
skelVert->texCoords[0] = LittleFloatPtr(pVert->texCoords[0]);
|
||||
skelVert->texCoords[1] = LittleFloatPtr(pVert->texCoords[1]);
|
||||
skelVert->numWeights = numWeights;
|
||||
skelVert->numMorphs = numMorphs;
|
||||
|
||||
@@ -384,21 +384,21 @@ void TIKI_CacheFileSkel( skelHeader_t *pHeader, skelcache_t *cache, int length )
|
||||
skeletorMorph_t* skelMorph = (skeletorMorph_t*)((byte*)skelVert + sizeof(skeletorVertex_t));
|
||||
for (k = 0; k < pVert->numMorphs; k++, pMorph++, skelMorph++)
|
||||
{
|
||||
skelMorph->morphIndex = pMorph->morphIndex;
|
||||
skelMorph->offset[0] = LittleFloat(pMorph->offset[0]);
|
||||
skelMorph->offset[1] = LittleFloat(pMorph->offset[1]);
|
||||
skelMorph->offset[2] = LittleFloat(pMorph->offset[2]);
|
||||
skelMorph->morphIndex = LittleLongPtr(pMorph->morphIndex);
|
||||
skelMorph->offset[0] = LittleFloatPtr(pMorph->offset[0]);
|
||||
skelMorph->offset[1] = LittleFloatPtr(pMorph->offset[1]);
|
||||
skelMorph->offset[2] = LittleFloatPtr(pMorph->offset[2]);
|
||||
}
|
||||
|
||||
skelWeight_t* pWeight = (skelWeight_t * )((byte*)pMorph);
|
||||
skelWeight_t* skelWeight = (skelWeight_t*)((byte*)skelMorph);
|
||||
for (k = 0; k < pVert->numWeights; k++, skelWeight++, pWeight++)
|
||||
{
|
||||
skelWeight->boneIndex = LittleLong(pWeight->boneIndex);
|
||||
skelWeight->boneWeight = LittleLong(pWeight->boneWeight);
|
||||
skelWeight->offset[0] = LittleFloat(pWeight->offset[0]);
|
||||
skelWeight->offset[1] = LittleFloat(pWeight->offset[1]);
|
||||
skelWeight->offset[2] = LittleFloat(pWeight->offset[2]);
|
||||
skelWeight->boneIndex = LittleLongPtr(pWeight->boneIndex);
|
||||
skelWeight->boneWeight = LittleFloatPtr(pWeight->boneWeight);
|
||||
skelWeight->offset[0] = LittleFloatPtr(pWeight->offset[0]);
|
||||
skelWeight->offset[1] = LittleFloatPtr(pWeight->offset[1]);
|
||||
skelWeight->offset[2] = LittleFloatPtr(pWeight->offset[2]);
|
||||
}
|
||||
|
||||
pVert = (skeletorVertex_t*)((byte*)pVert + iOffset);
|
||||
|
||||
+25
-15
@@ -69,7 +69,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#include <X11/extensions/xf86dgaconst.h>
|
||||
#include <X11/extensions/xf86vmode.h>
|
||||
|
||||
#define WINDOW_CLASS_NAME "Quake III: Arena"
|
||||
#define WINDOW_CLASS_NAME PRODUCT_NAME_FULL
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@@ -1160,23 +1160,33 @@ static void GLW_InitExtensions( void )
|
||||
ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" );
|
||||
|
||||
// GL_S3_s3tc
|
||||
if ( Q_stristr( glConfig.extensions_string, "GL_S3_s3tc" ) )
|
||||
if (strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc") && strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
|
||||
{
|
||||
if ( r_ext_compressed_textures->value )
|
||||
{
|
||||
glConfig.textureCompression = TC_S3TC;
|
||||
ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" );
|
||||
} else
|
||||
{
|
||||
glConfig.textureCompression = TC_NONE;
|
||||
ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" );
|
||||
}
|
||||
} else
|
||||
if (r_ext_compressed_textures->integer)
|
||||
{
|
||||
qglCompressedTexImage2DARB = dlsym(glw_state.OpenGLLib, "glCompressedTexImage2DARB");
|
||||
glConfig.textureCompression = TC_S3TC;
|
||||
ri.Printf(PRINT_ALL, "...using GL_S3_s3tc\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
glConfig.textureCompression = TC_NONE;
|
||||
ri.Printf(PRINT_ALL, "...ignoring GL_S3_s3tc\n");
|
||||
}
|
||||
}
|
||||
else if (!strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc"))
|
||||
{
|
||||
glConfig.textureCompression = TC_NONE;
|
||||
ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
|
||||
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
|
||||
}
|
||||
else if (strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
|
||||
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
|
||||
}
|
||||
|
||||
// GL_EXT_texture_env_add
|
||||
glConfig.textureEnvAddAvailable = qfalse;
|
||||
if ( Q_stristr( glConfig.extensions_string, "EXT_texture_env_add" ) )
|
||||
|
||||
@@ -3006,12 +3006,6 @@ void QGL_Shutdown( void )
|
||||
qglVertexPointer = NULL;
|
||||
qglViewport = NULL;
|
||||
|
||||
qglCompressedTexImage3DARB = NULL;
|
||||
qglCompressedTexImage2DARB = NULL;
|
||||
qglCompressedTexSubImage3DARB = NULL;
|
||||
qglCompressedTexSubImage2DARB = NULL;
|
||||
qglGetCompressedTexImageARB = NULL;
|
||||
|
||||
// bk001129 - from cvs1.17 (mkv)
|
||||
#if defined(__FX__)
|
||||
qfxMesaCreateContext = NULL;
|
||||
@@ -3409,12 +3403,6 @@ qboolean QGL_Init( const char *dllname )
|
||||
qglVertexPointer = dllVertexPointer = GPA( "glVertexPointer" );
|
||||
qglViewport = dllViewport = GPA( "glViewport" );
|
||||
|
||||
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB = GPA("glCompressedTexImage3DARB");
|
||||
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB = GPA("qglCompressedTexImage2DARB");
|
||||
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = GPA("qglCompressedTexSubImage3DARB");
|
||||
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = GPA("qglCompressedTexSubImage2DARB");
|
||||
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB = GPA("qglGetCompressedTexImageARB");
|
||||
|
||||
// bk001129 - from cvs1.17 (mkv)
|
||||
#if defined(__FX__)
|
||||
qfxMesaCreateContext = GPA("fxMesaCreateContext");
|
||||
@@ -4165,12 +4153,6 @@ void QGL_EnableLogging( qboolean enable ) {
|
||||
qglVertex4sv = dllVertex4sv ;
|
||||
qglVertexPointer = dllVertexPointer ;
|
||||
qglViewport = dllViewport ;
|
||||
|
||||
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB;
|
||||
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB;
|
||||
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB;
|
||||
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB;
|
||||
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -981,7 +981,7 @@ void* Sys_GetCGameAPI(void* parms)
|
||||
const char* gamedir;
|
||||
const char* homepath;
|
||||
const char* fn;
|
||||
const char* gamename = "cgame" ARCH_STRING DLL_EXT;
|
||||
const char* gamename = "cgame" ARCH_STRING DLL_SUFFIX DLL_EXT;
|
||||
|
||||
if (cgame_library)
|
||||
Com_Error(ERR_FATAL, "Sys_GetCGameAPI without calling Sys_UnloadCGame");
|
||||
@@ -1098,7 +1098,10 @@ void *Sys_LoadDll( const char *name, char *fqpath ,
|
||||
snprintf (fname, sizeof(fname), "%smips.so", name);
|
||||
#elif defined __x86_64__
|
||||
snprintf(fname, sizeof(fname), "%sx86_64.so", name);
|
||||
#else
|
||||
#elif defined __arm__
|
||||
snprintf(fname, sizeof(fname), "%sarm.so", name);
|
||||
#elif defined __aarch64__
|
||||
snprintf(fname, sizeof(fname), "%saarch64.so", name);
|
||||
#error Unknown arch
|
||||
#endif
|
||||
|
||||
|
||||
+13
-2
@@ -970,11 +970,13 @@ static void GLW_InitExtensions( void )
|
||||
ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" );
|
||||
|
||||
// GL_S3_s3tc
|
||||
qglCompressedTexImage2DARB = NULL;
|
||||
glConfig.textureCompression = TC_NONE;
|
||||
if ( strstr( glConfig.extensions_string, "GL_S3_s3tc" ) )
|
||||
if ( strstr( glConfig.extensions_string, "GL_EXT_texture_compression_s3tc" ) && strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
|
||||
{
|
||||
if ( r_ext_compressed_textures->integer )
|
||||
{
|
||||
qglCompressedTexImage2DARB = wglGetProcAddress("glCompressedTexImage2DARB");
|
||||
glConfig.textureCompression = TC_S3TC;
|
||||
ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" );
|
||||
}
|
||||
@@ -984,9 +986,18 @@ static void GLW_InitExtensions( void )
|
||||
ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" );
|
||||
}
|
||||
}
|
||||
else if (!strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc"))
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
|
||||
}
|
||||
else if (strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
|
||||
{
|
||||
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
|
||||
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
|
||||
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
|
||||
}
|
||||
|
||||
// GL_EXT_texture_env_add
|
||||
|
||||
@@ -3628,12 +3628,6 @@ qboolean QGL_Init( const char *dllname )
|
||||
qglVertexPointer = dllVertexPointer = GPA( "glVertexPointer" );
|
||||
qglViewport = dllViewport = GPA( "glViewport" );
|
||||
|
||||
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB = GPA("glCompressedTexImage3D");
|
||||
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB = GPA("glCompressedTexImage2D");
|
||||
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = GPA("glCompressedTexSubImage3D");
|
||||
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = GPA("glCompressedTexSubImage2D");
|
||||
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB = GPA("glGetCompressedTexImage");
|
||||
|
||||
qwglCopyContext = GPA( "wglCopyContext" );
|
||||
qwglCreateContext = GPA( "wglCreateContext" );
|
||||
qwglCreateLayerContext = GPA( "wglCreateLayerContext" );
|
||||
@@ -4393,12 +4387,6 @@ void QGL_EnableLogging( qboolean enable )
|
||||
qglVertex4sv = dllVertex4sv ;
|
||||
qglVertexPointer = dllVertexPointer ;
|
||||
qglViewport = dllViewport ;
|
||||
|
||||
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB;
|
||||
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB;
|
||||
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB;
|
||||
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB;
|
||||
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 399 KiB |
Reference in new issue
Block a user