Merge branch 'master' into feature_openxr

This commit is contained in:
Lubos 2022-03-30 09:44:15 +02:00
commit e7a2229edc
23 changed files with 1664 additions and 530 deletions

View file

@ -443,8 +443,11 @@ ifeq ($(PLATFORM),android)
-fno-builtin-cos -fno-builtin-sin -fPIC -DARCH_STRING=\\\"$(ARCH)\\\"
CLIENT_CFLAGS += $(SDL_CFLAGS) -DSDL_DISABLE_IMMINTRIN_H -fno-builtin-cos -fno-builtin-sin
# Flag -ffast-math replacement: https://pspdfkit.com/blog/2021/understanding-fast-math/
# Flags -ffp-contract=fast -fno-trapping-math are unused because they are causing lightmap issues
OPTIMIZEFASTMATH = -ffinite-math-only -fno-math-errno -fassociative-math -freciprocal-math -fno-signed-zeros
OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer
OPTIMIZE = $(OPTIMIZEVM)
OPTIMIZE = $(OPTIMIZEVM) $(OPTIMIZEFASTMATH)
HAVE_VM_COMPILED = false

View file

@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.drbeef.ioq3quest"
android:installLocation="preferExternal"
android:versionCode="39"
android:versionName="0.26.2">
android:versionCode="40"
android:versionName="0.28.0">
<uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" />
<uses-feature android:glEsVersion="0x00030001" />
<!-- <uses-feature android:name="oculus.software.overlay_keyboard" android:required="false"/>-->

View file

@ -933,9 +933,6 @@ void UI_MouseEvent( int dx, int dy )
else if (uis.cursory > SCREEN_HEIGHT+16)
uis.cursory = SCREEN_HEIGHT+16;
vr->menuCursorX = &uis.cursorx;
vr->menuCursorY = &uis.cursory;
// region test the active menu items
for (i=0; i<uis.activemenu->nitems; i++)
{

View file

@ -50,13 +50,17 @@ Q_EXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2, int arg3, i
case UI_INIT: {
int ptr[2] = {arg1, arg2};
vr = (vr_clientinfo_t *) (*(long *) (ptr));
UI_Init();
vr->menuCursorX = &uis.cursorx;
vr->menuCursorY = &uis.cursory;
}
return 0;
case UI_SHUTDOWN:
UI_Shutdown();
case UI_SHUTDOWN: {
vr->menuCursorX = NULL;
vr->menuCursorY = NULL;
UI_Shutdown();
}
return 0;
case UI_KEY_EVENT:

View file

@ -378,6 +378,8 @@ static void PlayerModel_DrawPlayer( void *self )
}
UI_DrawPlayer( b->generic.x, b->generic.y, b->width, b->height, &s_playermodel.playerinfo, uis.realtime/2 );
UI_DrawString( 320, 460, "To change player name use the companion app.", UI_CENTER|UI_SMALLFONT, text_color_normal );
}
/*
@ -606,7 +608,7 @@ static void PlayerModel_MenuInit( void )
s_playermodel.playername.generic.type = MTYPE_PTEXT;
s_playermodel.playername.generic.flags = QMF_CENTER_JUSTIFY|QMF_INACTIVE;
s_playermodel.playername.generic.x = 320;
s_playermodel.playername.generic.y = 440;
s_playermodel.playername.generic.y = 430;
s_playermodel.playername.string = playername;
s_playermodel.playername.style = UI_CENTER;
s_playermodel.playername.color = text_color_normal;

View file

@ -108,7 +108,7 @@ PlayerSettings_DrawName
*/
static void PlayerSettings_DrawName( void *self ) {
menufield_s *f;
qboolean focus;
//qboolean focus;
int style;
char *txt;
char c;
@ -120,14 +120,14 @@ static void PlayerSettings_DrawName( void *self ) {
f = (menufield_s*)self;
basex = f->generic.x;
y = f->generic.y;
focus = (f->generic.parent->cursor == f->generic.menuPosition);
//focus = (f->generic.parent->cursor == f->generic.menuPosition);
style = UI_LEFT|UI_SMALLFONT;
color = text_color_normal;
if( focus ) {
style |= UI_PULSE;
color = text_color_highlight;
}
//if( focus ) {
// style |= UI_PULSE;
// color = text_color_highlight;
//}
UI_DrawProportionalString( basex, y, "Name", style, color );
@ -138,7 +138,8 @@ static void PlayerSettings_DrawName( void *self ) {
color = g_color_table[ColorIndex(COLOR_WHITE)];
x = basex;
while ( (c = *txt) != 0 ) {
if ( !focus && Q_IsColorString( txt ) ) {
//if ( !focus && Q_IsColorString( txt ) ) {
if ( Q_IsColorString( txt ) ) {
n = ColorIndex( *(txt+1) );
if( n == 0 ) {
n = 7;
@ -153,23 +154,24 @@ static void PlayerSettings_DrawName( void *self ) {
}
// draw cursor if we have focus
if( focus ) {
if ( trap_Key_GetOverstrikeMode() ) {
c = 11;
} else {
c = 10;
}
style &= ~UI_PULSE;
style |= UI_BLINK;
UI_DrawChar( basex + f->field.cursor * SMALLCHAR_WIDTH, y, c, style, color_white );
}
//if( focus ) {
// if ( trap_Key_GetOverstrikeMode() ) {
// c = 11;
// } else {
// c = 10;
// }
//
// style &= ~UI_PULSE;
// style |= UI_BLINK;
//
// UI_DrawChar( basex + f->field.cursor * SMALLCHAR_WIDTH, y, c, style, color_white );
//}
// draw at bottom also using proportional font
Q_strncpyz( name, f->field.buffer, sizeof(name) );
Q_CleanStr( name );
UI_DrawProportionalString( 320, 440, name, UI_CENTER|UI_BIGFONT, text_color_normal );
UI_DrawProportionalString( 320, 430, name, UI_CENTER|UI_BIGFONT, text_color_normal );
UI_DrawString( 320, 460, "To change player name use the companion app.", UI_CENTER|UI_SMALLFONT, text_color_normal );
}
@ -397,8 +399,10 @@ static void PlayerSettings_MenuInit( void ) {
s_playersettings.framer.height = 334;
y = 112;
s_playersettings.name.generic.type = MTYPE_FIELD;
s_playersettings.name.generic.flags = QMF_NODEFAULTINIT;
//s_playersettings.name.generic.type = MTYPE_FIELD;
//s_playersettings.name.generic.flags = QMF_NODEFAULTINIT;
s_playersettings.name.generic.type = MTYPE_BTEXT;
s_playersettings.name.generic.flags = QMF_INACTIVE;
s_playersettings.name.generic.ownerdraw = PlayerSettings_DrawName;
s_playersettings.name.field.widthInChars = MAX_NAMELENGTH;
s_playersettings.name.field.maxchars = MAX_NAMELENGTH;

View file

@ -126,14 +126,7 @@ static void Preferences_SetMenuItems( void ) {
s_preferences.drawhud.curvalue = trap_Cvar_VariableValue( "cg_drawStatus" ) != 0;
// s_preferences.allowdownload.curvalue = trap_Cvar_VariableValue( "cl_allowDownload" ) != 0;
s_preferences.holster2d.curvalue = trap_Cvar_VariableValue( "cg_weaponSelectorSimple2DIcons" ) != 0;
//GORE
{
int level = trap_Cvar_VariableValue( "com_blood" ) +
trap_Cvar_VariableValue( "cg_gibs" ) +
trap_Cvar_VariableValue( "cg_megagibs" );
s_preferences.gore.curvalue = level % NUM_GORE;
}
s_preferences.gore.curvalue = trap_Cvar_VariableValue( "vr_goreLevel" );
s_preferences.showinhand.curvalue = trap_Cvar_VariableValue( "vr_showItemInHand" ) != 0;
s_preferences.selectorwithhud.curvalue = trap_Cvar_VariableValue( "vr_weaponSelectorWithHud" ) != 0;
}

View file

@ -251,8 +251,10 @@ GRAPHICS OPTIONS MENU
#define ID_REFRESHRATE 111
#define ID_DYNAMICLIGHTS 112
#define ID_SYNCEVERYFRAME 113
#define ID_SHADOWS 114
#define NUM_REFRESHRATE 4
#define NUM_SHADOWS 2
typedef struct {
menuframework_s menu;
@ -282,6 +284,7 @@ typedef struct {
menulist_s refreshrate;
menuradiobutton_s dynamiclights;
menuradiobutton_s synceveryframe;
menulist_s shadows;
menubitmap_s apply;
menubitmap_s back;
@ -302,6 +305,7 @@ typedef struct
int refreshrate;
qboolean dynamiclights;
qboolean synceveryframe;
int shadows;
} InitialVideoOptions_s;
static InitialVideoOptions_s s_ivo;
@ -379,99 +383,99 @@ static qboolean resolutionsDetected = qfalse;
GraphicsOptions_FindBuiltinResolution
=================
*/
static int GraphicsOptions_FindBuiltinResolution( int mode )
{
int i;
if( !resolutionsDetected )
return mode;
if( mode < 0 )
return -1;
for( i = 0; builtinResolutions[ i ]; i++ )
{
if( !Q_stricmp( builtinResolutions[ i ], detectedResolutions[ mode ] ) )
return i;
}
return -1;
}
// static int GraphicsOptions_FindBuiltinResolution( int mode )
// {
// int i;
//
// if( !resolutionsDetected )
// return mode;
//
// if( mode < 0 )
// return -1;
//
// for( i = 0; builtinResolutions[ i ]; i++ )
// {
// if( !Q_stricmp( builtinResolutions[ i ], detectedResolutions[ mode ] ) )
// return i;
// }
//
// return -1;
// }
/*
=================
GraphicsOptions_FindDetectedResolution
=================
*/
static int GraphicsOptions_FindDetectedResolution( int mode )
{
int i;
if( !resolutionsDetected )
return mode;
if( mode < 0 )
return -1;
for( i = 0; detectedResolutions[ i ]; i++ )
{
if( !Q_stricmp( builtinResolutions[ mode ], detectedResolutions[ i ] ) )
return i;
}
return -1;
}
// static int GraphicsOptions_FindDetectedResolution( int mode )
// {
// int i;
//
// if( !resolutionsDetected )
// return mode;
//
// if( mode < 0 )
// return -1;
//
// for( i = 0; detectedResolutions[ i ]; i++ )
// {
// if( !Q_stricmp( builtinResolutions[ mode ], detectedResolutions[ i ] ) )
// return i;
// }
//
// return -1;
// }
/*
=================
GraphicsOptions_GetAspectRatios
=================
*/
static void GraphicsOptions_GetAspectRatios( void )
{
int i, r;
// build ratio list from resolutions
for( r = 0; resolutions[r]; r++ )
{
int w, h;
char *x;
char str[ sizeof(ratioBuf[0]) ];
// calculate resolution's aspect ratio
x = strchr( resolutions[r], 'x' ) + 1;
Q_strncpyz( str, resolutions[r], x-resolutions[r] );
w = atoi( str );
h = atoi( x );
Com_sprintf( str, sizeof(str), "%.2f:1", (float)w / (float)h );
// rename common ratios ("1.33:1" -> "4:3")
for( i = 0; knownRatios[i][0]; i++ ) {
if( !Q_stricmp( str, knownRatios[i][0] ) ) {
Q_strncpyz( str, knownRatios[i][1], sizeof( str ) );
break;
}
}
// add ratio to list if it is new
// establish res/ratio relationship
for( i = 0; ratioBuf[i][0]; i++ )
{
if( !Q_stricmp( str, ratioBuf[i] ) )
break;
}
if( !ratioBuf[i][0] )
{
Q_strncpyz( ratioBuf[i], str, sizeof(ratioBuf[i]) );
ratioToRes[i] = r;
}
ratios[r] = ratioBuf[r];
resToRatio[r] = i;
}
ratios[r] = NULL;
}
// static void GraphicsOptions_GetAspectRatios( void )
// {
// int i, r;
//
// // build ratio list from resolutions
// for( r = 0; resolutions[r]; r++ )
// {
// int w, h;
// char *x;
// char str[ sizeof(ratioBuf[0]) ];
//
// // calculate resolution's aspect ratio
// x = strchr( resolutions[r], 'x' ) + 1;
// Q_strncpyz( str, resolutions[r], x-resolutions[r] );
// w = atoi( str );
// h = atoi( x );
// Com_sprintf( str, sizeof(str), "%.2f:1", (float)w / (float)h );
//
// // rename common ratios ("1.33:1" -> "4:3")
// for( i = 0; knownRatios[i][0]; i++ ) {
// if( !Q_stricmp( str, knownRatios[i][0] ) ) {
// Q_strncpyz( str, knownRatios[i][1], sizeof( str ) );
// break;
// }
// }
//
// // add ratio to list if it is new
// // establish res/ratio relationship
// for( i = 0; ratioBuf[i][0]; i++ )
// {
// if( !Q_stricmp( str, ratioBuf[i] ) )
// break;
// }
// if( !ratioBuf[i][0] )
// {
// Q_strncpyz( ratioBuf[i], str, sizeof(ratioBuf[i]) );
// ratioToRes[i] = r;
// }
//
// ratios[r] = ratioBuf[r];
// resToRatio[r] = i;
// }
//
// ratios[r] = NULL;
// }
/*
=================
@ -481,10 +485,10 @@ GraphicsOptions_GetInitialVideo
static void GraphicsOptions_GetInitialVideo( void )
{
s_ivo.colordepth = s_graphicsoptions.colordepth.curvalue;
s_ivo.driver = s_graphicsoptions.driver.curvalue;
s_ivo.mode = s_graphicsoptions.mode.curvalue;
s_ivo.fullscreen = s_graphicsoptions.fs.curvalue;
s_ivo.extensions = s_graphicsoptions.allow_extensions.curvalue;
// s_ivo.driver = s_graphicsoptions.driver.curvalue;
// s_ivo.mode = s_graphicsoptions.mode.curvalue;
// s_ivo.fullscreen = s_graphicsoptions.fs.curvalue;
// s_ivo.extensions = s_graphicsoptions.allow_extensions.curvalue;
s_ivo.tq = s_graphicsoptions.tq.curvalue;
s_ivo.lighting = s_graphicsoptions.lighting.curvalue;
s_ivo.geometry = s_graphicsoptions.geometry.curvalue;
@ -493,6 +497,7 @@ static void GraphicsOptions_GetInitialVideo( void )
s_ivo.refreshrate = s_graphicsoptions.refreshrate.curvalue;
s_ivo.dynamiclights = s_graphicsoptions.dynamiclights.curvalue;
s_ivo.synceveryframe = s_graphicsoptions.synceveryframe.curvalue;
s_ivo.shadows = s_graphicsoptions.refreshrate.curvalue;
}
/*
@ -500,81 +505,81 @@ static void GraphicsOptions_GetInitialVideo( void )
GraphicsOptions_GetResolutions
=================
*/
static void GraphicsOptions_GetResolutions( void )
{
trap_Cvar_VariableStringBuffer("r_availableModes", resbuf, sizeof(resbuf));
if(*resbuf)
{
char* s = resbuf;
unsigned int i = 0;
while( s && i < ARRAY_LEN(detectedResolutions)-1 )
{
detectedResolutions[i++] = s;
s = strchr(s, ' ');
if( s )
*s++ = '\0';
}
detectedResolutions[ i ] = NULL;
// add custom resolution if not in mode list
if ( i < ARRAY_LEN(detectedResolutions)-1 )
{
Com_sprintf( currentResolution, sizeof ( currentResolution ), "%dx%d", uis.glconfig.vidWidth, uis.glconfig.vidHeight );
for( i = 0; detectedResolutions[ i ]; i++ )
{
if ( strcmp( detectedResolutions[ i ], currentResolution ) == 0 )
break;
}
if ( detectedResolutions[ i ] == NULL )
{
detectedResolutions[ i++ ] = currentResolution;
detectedResolutions[ i ] = NULL;
}
}
resolutions = detectedResolutions;
resolutionsDetected = qtrue;
}
}
// static void GraphicsOptions_GetResolutions( void )
// {
// trap_Cvar_VariableStringBuffer("r_availableModes", resbuf, sizeof(resbuf));
// if(*resbuf)
// {
// char* s = resbuf;
// unsigned int i = 0;
// while( s && i < ARRAY_LEN(detectedResolutions)-1 )
// {
// detectedResolutions[i++] = s;
// s = strchr(s, ' ');
// if( s )
// *s++ = '\0';
// }
// detectedResolutions[ i ] = NULL;
//
// // add custom resolution if not in mode list
// if ( i < ARRAY_LEN(detectedResolutions)-1 )
// {
// Com_sprintf( currentResolution, sizeof ( currentResolution ), "%dx%d", uis.glconfig.vidWidth, uis.glconfig.vidHeight );
//
// for( i = 0; detectedResolutions[ i ]; i++ )
// {
// if ( strcmp( detectedResolutions[ i ], currentResolution ) == 0 )
// break;
// }
//
// if ( detectedResolutions[ i ] == NULL )
// {
// detectedResolutions[ i++ ] = currentResolution;
// detectedResolutions[ i ] = NULL;
// }
// }
//
// resolutions = detectedResolutions;
// resolutionsDetected = qtrue;
// }
// }
/*
=================
GraphicsOptions_CheckConfig
=================
*/
static void GraphicsOptions_CheckConfig( void )
{
int i;
for ( i = 0; i < NUM_IVO_TEMPLATES-1; i++ )
{
if ( s_ivo_templates[i].colordepth != s_graphicsoptions.colordepth.curvalue )
continue;
if ( s_ivo_templates[i].driver != s_graphicsoptions.driver.curvalue )
continue;
if ( GraphicsOptions_FindDetectedResolution(s_ivo_templates[i].mode) != s_graphicsoptions.mode.curvalue )
continue;
if ( s_ivo_templates[i].fullscreen != s_graphicsoptions.fs.curvalue )
continue;
if ( s_ivo_templates[i].tq != s_graphicsoptions.tq.curvalue )
continue;
if ( s_ivo_templates[i].lighting != s_graphicsoptions.lighting.curvalue )
continue;
if ( s_ivo_templates[i].geometry != s_graphicsoptions.geometry.curvalue )
continue;
if ( s_ivo_templates[i].filter != s_graphicsoptions.filter.curvalue )
continue;
// static void GraphicsOptions_CheckConfig( void )
// {
// int i;
//
// for ( i = 0; i < NUM_IVO_TEMPLATES-1; i++ )
// {
// if ( s_ivo_templates[i].colordepth != s_graphicsoptions.colordepth.curvalue )
// continue;
// if ( s_ivo_templates[i].driver != s_graphicsoptions.driver.curvalue )
// continue;
// if ( GraphicsOptions_FindDetectedResolution(s_ivo_templates[i].mode) != s_graphicsoptions.mode.curvalue )
// continue;
// if ( s_ivo_templates[i].fullscreen != s_graphicsoptions.fs.curvalue )
// continue;
// if ( s_ivo_templates[i].tq != s_graphicsoptions.tq.curvalue )
// continue;
// if ( s_ivo_templates[i].lighting != s_graphicsoptions.lighting.curvalue )
// continue;
// if ( s_ivo_templates[i].geometry != s_graphicsoptions.geometry.curvalue )
// continue;
// if ( s_ivo_templates[i].filter != s_graphicsoptions.filter.curvalue )
// continue;
// if ( s_ivo_templates[i].texturebits != s_graphicsoptions.texturebits.curvalue )
// continue;
s_graphicsoptions.list.curvalue = i;
return;
}
// return 'Custom' ivo template
s_graphicsoptions.list.curvalue = NUM_IVO_TEMPLATES - 1;
}
// s_graphicsoptions.list.curvalue = i;
// return;
// }
//
// // return 'Custom' ivo template
// s_graphicsoptions.list.curvalue = NUM_IVO_TEMPLATES - 1;
// }
/*
=================
@ -583,49 +588,49 @@ GraphicsOptions_UpdateMenuItems
*/
static void GraphicsOptions_UpdateMenuItems( void )
{
if ( s_graphicsoptions.driver.curvalue == 1 )
{
s_graphicsoptions.fs.curvalue = 1;
s_graphicsoptions.fs.generic.flags |= QMF_GRAYED;
s_graphicsoptions.colordepth.curvalue = 1;
}
else
{
s_graphicsoptions.fs.generic.flags &= ~QMF_GRAYED;
}
// if ( s_graphicsoptions.driver.curvalue == 1 )
// {
// s_graphicsoptions.fs.curvalue = 1;
// s_graphicsoptions.fs.generic.flags |= QMF_GRAYED;
// s_graphicsoptions.colordepth.curvalue = 1;
// }
// else
// {
// s_graphicsoptions.fs.generic.flags &= ~QMF_GRAYED;
// }
if ( s_graphicsoptions.fs.curvalue == 0 || s_graphicsoptions.driver.curvalue == 1 )
{
s_graphicsoptions.colordepth.curvalue = 0;
s_graphicsoptions.colordepth.generic.flags |= QMF_GRAYED;
}
else
{
s_graphicsoptions.colordepth.generic.flags &= ~QMF_GRAYED;
}
// if ( s_graphicsoptions.fs.curvalue == 0 || s_graphicsoptions.driver.curvalue == 1 )
// {
// s_graphicsoptions.colordepth.curvalue = 0;
// s_graphicsoptions.colordepth.generic.flags |= QMF_GRAYED;
// }
// else
// {
// s_graphicsoptions.colordepth.generic.flags &= ~QMF_GRAYED;
// }
if ( s_graphicsoptions.allow_extensions.curvalue == 0 )
{
if ( s_graphicsoptions.texturebits.curvalue == 0 )
{
s_graphicsoptions.texturebits.curvalue = 1;
}
}
// if ( s_graphicsoptions.allow_extensions.curvalue == 0 )
// {
// if ( s_graphicsoptions.texturebits.curvalue == 0 )
// {
// s_graphicsoptions.texturebits.curvalue = 1;
// }
// }
s_graphicsoptions.apply.generic.flags |= QMF_HIDDEN|QMF_INACTIVE;
if ( s_ivo.mode != s_graphicsoptions.mode.curvalue )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
}
if ( s_ivo.fullscreen != s_graphicsoptions.fs.curvalue )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
}
if ( s_ivo.extensions != s_graphicsoptions.allow_extensions.curvalue )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
}
// if ( s_ivo.mode != s_graphicsoptions.mode.curvalue )
// {
// s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
// }
// if ( s_ivo.fullscreen != s_graphicsoptions.fs.curvalue )
// {
// s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
// }
// if ( s_ivo.extensions != s_graphicsoptions.allow_extensions.curvalue )
// {
// s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
// }
if ( s_ivo.tq != s_graphicsoptions.tq.curvalue )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
@ -638,10 +643,10 @@ static void GraphicsOptions_UpdateMenuItems( void )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
}
if ( s_ivo.driver != s_graphicsoptions.driver.curvalue )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
}
// if ( s_ivo.driver != s_graphicsoptions.driver.curvalue )
// {
// s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
// }
if ( s_ivo.texturebits != s_graphicsoptions.texturebits.curvalue )
{
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
@ -655,8 +660,8 @@ static void GraphicsOptions_UpdateMenuItems( void )
s_graphicsoptions.apply.generic.flags &= ~(QMF_HIDDEN|QMF_INACTIVE);
}
GraphicsOptions_CheckConfig();
}
// GraphicsOptions_CheckConfig();
}
/*
=================
@ -681,34 +686,36 @@ static void GraphicsOptions_ApplyChanges( void *unused, int notification )
break;
}
trap_Cvar_SetValue( "r_picmip", 3 - s_graphicsoptions.tq.curvalue );
trap_Cvar_SetValue( "r_allowExtensions", s_graphicsoptions.allow_extensions.curvalue );
if( resolutionsDetected )
{
// search for builtin mode that matches the detected mode
int mode;
if ( s_graphicsoptions.mode.curvalue == -1
|| s_graphicsoptions.mode.curvalue >= ARRAY_LEN( detectedResolutions ) )
s_graphicsoptions.mode.curvalue = 0;
// trap_Cvar_SetValue( "r_allowExtensions", s_graphicsoptions.allow_extensions.curvalue );
mode = GraphicsOptions_FindBuiltinResolution( s_graphicsoptions.mode.curvalue );
if( mode == -1 )
{
char w[ 16 ], h[ 16 ];
Q_strncpyz( w, detectedResolutions[ s_graphicsoptions.mode.curvalue ], sizeof( w ) );
*strchr( w, 'x' ) = 0;
Q_strncpyz( h,
strchr( detectedResolutions[ s_graphicsoptions.mode.curvalue ], 'x' ) + 1, sizeof( h ) );
trap_Cvar_Set( "r_customwidth", w );
trap_Cvar_Set( "r_customheight", h );
}
// if( resolutionsDetected )
// {
// // search for builtin mode that matches the detected mode
// int mode;
// if ( s_graphicsoptions.mode.curvalue == -1
// || s_graphicsoptions.mode.curvalue >= ARRAY_LEN( detectedResolutions ) )
// s_graphicsoptions.mode.curvalue = 0;
//
// mode = GraphicsOptions_FindBuiltinResolution( s_graphicsoptions.mode.curvalue );
// if( mode == -1 )
// {
// char w[ 16 ], h[ 16 ];
// Q_strncpyz( w, detectedResolutions[ s_graphicsoptions.mode.curvalue ], sizeof( w ) );
// *strchr( w, 'x' ) = 0;
// Q_strncpyz( h,
// strchr( detectedResolutions[ s_graphicsoptions.mode.curvalue ], 'x' ) + 1, sizeof( h ) );
// trap_Cvar_Set( "r_customwidth", w );
// trap_Cvar_Set( "r_customheight", h );
// }
//
// trap_Cvar_SetValue( "r_mode", mode );
// }
// else
// trap_Cvar_SetValue( "r_mode", s_graphicsoptions.mode.curvalue );
trap_Cvar_SetValue( "r_mode", mode );
}
else
trap_Cvar_SetValue( "r_mode", s_graphicsoptions.mode.curvalue );
// trap_Cvar_SetValue( "r_fullscreen", s_graphicsoptions.fs.curvalue );
trap_Cvar_SetValue( "r_fullscreen", s_graphicsoptions.fs.curvalue );
switch ( s_graphicsoptions.colordepth.curvalue )
{
case 0:
@ -727,11 +734,12 @@ static void GraphicsOptions_ApplyChanges( void *unused, int notification )
trap_Cvar_SetValue( "r_stencilbits", 8 );
break;
}
trap_Cvar_SetValue( "r_vertexLight", s_graphicsoptions.lighting.curvalue );
if ( s_graphicsoptions.geometry.curvalue == 2 )
{
trap_Cvar_SetValue( "r_lodBias", 0 );
trap_Cvar_SetValue( "r_lodBias", -1 );
trap_Cvar_SetValue( "r_subdivisions", 4 );
}
else if ( s_graphicsoptions.geometry.curvalue == 1 )
@ -741,8 +749,8 @@ static void GraphicsOptions_ApplyChanges( void *unused, int notification )
}
else
{
trap_Cvar_SetValue( "r_lodBias", 1 );
trap_Cvar_SetValue( "r_subdivisions", 20 );
trap_Cvar_SetValue( "r_lodBias", 2 );
trap_Cvar_SetValue( "r_subdivisions", 80 );
}
if ( s_graphicsoptions.filter.curvalue )
@ -816,22 +824,36 @@ static void GraphicsOptions_Event( void* ptr, int event ) {
trap_Cvar_SetValue( "r_finish", s_graphicsoptions.synceveryframe.curvalue );
break;
case ID_LIST:
ivo = &s_ivo_templates[s_graphicsoptions.list.curvalue];
s_graphicsoptions.mode.curvalue = GraphicsOptions_FindDetectedResolution(ivo->mode);
s_graphicsoptions.ratio.curvalue =
resToRatio[ s_graphicsoptions.mode.curvalue ];
s_graphicsoptions.tq.curvalue = ivo->tq;
s_graphicsoptions.lighting.curvalue = ivo->lighting;
s_graphicsoptions.colordepth.curvalue = ivo->colordepth;
s_graphicsoptions.texturebits.curvalue = ivo->texturebits;
s_graphicsoptions.geometry.curvalue = ivo->geometry;
s_graphicsoptions.filter.curvalue = ivo->filter;
s_graphicsoptions.fs.curvalue = ivo->fullscreen;
s_graphicsoptions.refreshrate.curvalue = ivo->refreshrate;
case ID_SHADOWS: {
int shadows;
switch (s_graphicsoptions.shadows.curvalue) {
case 0:
shadows = 1;
break;
default:
shadows = 3;
break;
}
trap_Cvar_SetValue("cg_shadows", shadows);
}
break;
// case ID_LIST:
// ivo = &s_ivo_templates[s_graphicsoptions.list.curvalue];
//
// s_graphicsoptions.mode.curvalue = GraphicsOptions_FindDetectedResolution(ivo->mode);
// s_graphicsoptions.ratio.curvalue =
// resToRatio[ s_graphicsoptions.mode.curvalue ];
// s_graphicsoptions.tq.curvalue = ivo->tq;
// s_graphicsoptions.lighting.curvalue = ivo->lighting;
// s_graphicsoptions.colordepth.curvalue = ivo->colordepth;
// s_graphicsoptions.texturebits.curvalue = ivo->texturebits;
// s_graphicsoptions.geometry.curvalue = ivo->geometry;
// s_graphicsoptions.filter.curvalue = ivo->filter;
// s_graphicsoptions.fs.curvalue = ivo->fullscreen;
// s_graphicsoptions.refreshrate.curvalue = ivo->refreshrate;
// break;
case ID_DRIVERINFO:
UI_DriverInfo_Menu();
break;
@ -894,40 +916,40 @@ GraphicsOptions_SetMenuItems
*/
static void GraphicsOptions_SetMenuItems( void )
{
s_graphicsoptions.mode.curvalue =
GraphicsOptions_FindDetectedResolution( trap_Cvar_VariableValue( "r_mode" ) );
if ( s_graphicsoptions.mode.curvalue < 0 )
{
if( resolutionsDetected )
{
int i;
char buf[MAX_STRING_CHARS];
trap_Cvar_VariableStringBuffer("r_customwidth", buf, sizeof(buf)-2);
buf[strlen(buf)+1] = 0;
buf[strlen(buf)] = 'x';
trap_Cvar_VariableStringBuffer("r_customheight", buf+strlen(buf), sizeof(buf)-strlen(buf));
for(i = 0; detectedResolutions[i]; ++i)
{
if(!Q_stricmp(buf, detectedResolutions[i]))
{
s_graphicsoptions.mode.curvalue = i;
break;
}
}
if ( s_graphicsoptions.mode.curvalue < 0 )
s_graphicsoptions.mode.curvalue = 0;
}
else
{
s_graphicsoptions.mode.curvalue = 3;
}
}
s_graphicsoptions.ratio.curvalue =
resToRatio[ s_graphicsoptions.mode.curvalue ];
s_graphicsoptions.fs.curvalue = trap_Cvar_VariableValue("r_fullscreen");
s_graphicsoptions.allow_extensions.curvalue = trap_Cvar_VariableValue("r_allowExtensions");
// s_graphicsoptions.mode.curvalue =
// GraphicsOptions_FindDetectedResolution( trap_Cvar_VariableValue( "r_mode" ) );
//
// if ( s_graphicsoptions.mode.curvalue < 0 )
// {
// if( resolutionsDetected )
// {
// int i;
// char buf[MAX_STRING_CHARS];
// trap_Cvar_VariableStringBuffer("r_customwidth", buf, sizeof(buf)-2);
// buf[strlen(buf)+1] = 0;
// buf[strlen(buf)] = 'x';
// trap_Cvar_VariableStringBuffer("r_customheight", buf+strlen(buf), sizeof(buf)-strlen(buf));
//
// for(i = 0; detectedResolutions[i]; ++i)
// {
// if(!Q_stricmp(buf, detectedResolutions[i]))
// {
// s_graphicsoptions.mode.curvalue = i;
// break;
// }
// }
// if ( s_graphicsoptions.mode.curvalue < 0 )
// s_graphicsoptions.mode.curvalue = 0;
// }
// else
// {
// s_graphicsoptions.mode.curvalue = 3;
// }
// }
// s_graphicsoptions.ratio.curvalue =
// resToRatio[ s_graphicsoptions.mode.curvalue ];
// s_graphicsoptions.fs.curvalue = trap_Cvar_VariableValue("r_fullscreen");
// s_graphicsoptions.allow_extensions.curvalue = trap_Cvar_VariableValue("r_allowExtensions");
s_graphicsoptions.tq.curvalue = 3-trap_Cvar_VariableValue( "r_picmip");
if ( s_graphicsoptions.tq.curvalue < 0 )
{
@ -962,20 +984,13 @@ static void GraphicsOptions_SetMenuItems( void )
s_graphicsoptions.filter.curvalue = 1;
}
if ( trap_Cvar_VariableValue( "r_lodBias" ) > 0 )
{
if ( trap_Cvar_VariableValue( "r_subdivisions" ) >= 20 )
{
s_graphicsoptions.geometry.curvalue = 0;
}
else
{
s_graphicsoptions.geometry.curvalue = 1;
}
}
else
{
int lodbias = trap_Cvar_VariableValue( "r_lodBias" );
if (lodbias == -1) {
s_graphicsoptions.geometry.curvalue = 2;
} else if (lodbias == 1) {
s_graphicsoptions.geometry.curvalue = 1;
} else {
s_graphicsoptions.geometry.curvalue = 0;
}
switch ( ( int ) trap_Cvar_VariableValue( "r_colorbits" ) )
@ -992,14 +1007,14 @@ static void GraphicsOptions_SetMenuItems( void )
break;
}
if ( s_graphicsoptions.fs.curvalue == 0 )
{
s_graphicsoptions.colordepth.curvalue = 0;
}
if ( s_graphicsoptions.driver.curvalue == 1 )
{
s_graphicsoptions.colordepth.curvalue = 1;
}
// if ( s_graphicsoptions.fs.curvalue == 0 )
// {
// s_graphicsoptions.colordepth.curvalue = 0;
//}
//if ( s_graphicsoptions.driver.curvalue == 1 )
//{
// s_graphicsoptions.colordepth.curvalue = 1;
// }
switch ( (int) trap_Cvar_VariableValue( "vr_refreshrate" ) )
{
@ -1016,6 +1031,17 @@ static void GraphicsOptions_SetMenuItems( void )
s_graphicsoptions.refreshrate.curvalue = 3;
break;
}
switch ( (int) trap_Cvar_VariableValue( "cg_shadows" ) )
{
case 1:
s_graphicsoptions.shadows.curvalue = 0;
break;
default:
s_graphicsoptions.shadows.curvalue = 1;
break;
}
s_graphicsoptions.dynamiclights.curvalue = trap_Cvar_VariableValue( "r_dynamiclight" ) != 0;
s_graphicsoptions.synceveryframe.curvalue = trap_Cvar_VariableValue( "r_finish" ) != 0;
}
@ -1087,7 +1113,8 @@ void GraphicsOptions_MenuInit( void )
"On",
NULL
};
*/ static const char *s_refreshrate[] =
*/
static const char *s_refreshrate[] =
{
"60",
"72 (Recommended)",
@ -1095,14 +1122,20 @@ void GraphicsOptions_MenuInit( void )
"90",
NULL
};
static const char *s_shadows[] =
{
"Low",
"High",
NULL
};
int y;
// zero set all our globals
memset( &s_graphicsoptions, 0 ,sizeof(graphicsoptions_t) );
GraphicsOptions_GetResolutions();
GraphicsOptions_GetAspectRatios();
//GraphicsOptions_GetResolutions();
//GraphicsOptions_GetAspectRatios();
GraphicsOptions_Cache();
@ -1173,16 +1206,16 @@ void GraphicsOptions_MenuInit( void )
s_graphicsoptions.network.style = UI_RIGHT;
s_graphicsoptions.network.color = color_red;
y = 272 - 7 * (BIGCHAR_HEIGHT + 2);
s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL;
s_graphicsoptions.list.generic.name = "Graphics Settings:";
s_graphicsoptions.list.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_graphicsoptions.list.generic.x = 400;
s_graphicsoptions.list.generic.y = y;
s_graphicsoptions.list.generic.callback = GraphicsOptions_Event;
s_graphicsoptions.list.generic.id = ID_LIST;
s_graphicsoptions.list.itemnames = s_graphics_options_names;
y += 2 * ( BIGCHAR_HEIGHT + 2 );
y = 254 - 6 * (BIGCHAR_HEIGHT + 2);
// s_graphicsoptions.list.generic.type = MTYPE_SPINCONTROL;
// s_graphicsoptions.list.generic.name = "Graphics Settings:";
// s_graphicsoptions.list.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
// s_graphicsoptions.list.generic.x = 400;
// s_graphicsoptions.list.generic.y = y;
// s_graphicsoptions.list.generic.callback = GraphicsOptions_Event;
// s_graphicsoptions.list.generic.id = ID_LIST;
// s_graphicsoptions.list.itemnames = s_graphics_options_names;
// y += 2 * ( BIGCHAR_HEIGHT + 2 );
// s_graphicsoptions.driver.generic.type = MTYPE_SPINCONTROL;
// s_graphicsoptions.driver.generic.name = "GL Driver:";
@ -1282,6 +1315,18 @@ void GraphicsOptions_MenuInit( void )
s_graphicsoptions.dynamiclights.generic.id = ID_DYNAMICLIGHTS;
y += BIGCHAR_HEIGHT+2;
// references "cg_shadows"
s_graphicsoptions.shadows.generic.type = MTYPE_SPINCONTROL;
s_graphicsoptions.shadows.generic.name = "Shadow Detail:";
s_graphicsoptions.shadows.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_graphicsoptions.shadows.generic.x = 400;
s_graphicsoptions.shadows.generic.y = y;
s_graphicsoptions.shadows.itemnames = s_shadows;
s_graphicsoptions.shadows.generic.callback = GraphicsOptions_Event;
s_graphicsoptions.shadows.generic.id = ID_SHADOWS;
s_graphicsoptions.shadows.numitems = NUM_SHADOWS;
y += BIGCHAR_HEIGHT+2;
// references/modifies "r_lodBias" & "subdivisions"
s_graphicsoptions.geometry.generic.type = MTYPE_SPINCONTROL;
s_graphicsoptions.geometry.generic.name = "Geometric Detail:";
@ -1360,7 +1405,7 @@ void GraphicsOptions_MenuInit( void )
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.sound );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.network );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driver );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.allow_extensions );
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.ratio );
@ -1371,6 +1416,7 @@ void GraphicsOptions_MenuInit( void )
// Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.dynamiclights );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.shadows );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq );
Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits );

View file

@ -164,6 +164,19 @@ R_ComputeLOD
=================
*/
int R_ComputeLOD( trRefEntity_t *ent ) {
//HACK: force specific LOD (for VR it fits better)
if (1)
{
//high -> 0, medium -> 2, low -> 4
int lod = r_lodbias->integer + r_lodbias->integer;
if (lod >= tr.currentModel->numLods)
lod = tr.currentModel->numLods - 1;
if (lod < 0)
lod = 0;
return lod;
}
float radius;
float flod, lodscale;
float projectedRadius;

View file

@ -22,8 +22,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
// tr_vbo.c
#include "tr_local.h"
//#define GL_BUFFER_RECYCLING
void R_VaoPackTangent(int16_t *out, vec4_t v)
{
@ -393,17 +391,18 @@ void R_BindNullVao(void)
if(glState.currentVao)
{
#ifdef GL_BUFFER_RECYCLING
if (glRefConfig.vertexArrayObject)
{
qglBindVertexArray(0);
// why you no save GL_ELEMENT_ARRAY_BUFFER binding, Intel?
if (1) qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
else
{
qglBindBuffer(GL_ARRAY_BUFFER, 0);
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
#endif
glState.currentVao = NULL;
}
@ -606,6 +605,9 @@ void RB_UpdateTessVao(unsigned int attribBits)
R_BindVao(tess.vao);
// orphan old vertex buffer so we don't stall on it
qglBufferData(GL_ARRAY_BUFFER, tess.vao->vertexesSize, NULL, GL_DYNAMIC_DRAW);
// if nothing to set, set everything
if(!(attribBits & ATTR_BITS))
attribBits = ATTR_BITS;
@ -651,8 +653,10 @@ void RB_UpdateTessVao(unsigned int attribBits)
}
}
#define VAOCACHE_QUEUE_MAX_SURFACES MAX_POLYS
#define VAOCACHE_QUEUE_MAX_VERTEXES MAX_POLYVERTS
// FIXME: This sets a limit of 65536 verts/262144 indexes per static surface
// This is higher than the old vq3 limits but is worth noting
#define VAOCACHE_QUEUE_MAX_SURFACES (1 << 10)
#define VAOCACHE_QUEUE_MAX_VERTEXES (1 << 16)
#define VAOCACHE_QUEUE_MAX_INDEXES (VAOCACHE_QUEUE_MAX_VERTEXES * 4)
typedef struct queuedSurface_s
@ -929,19 +933,15 @@ void VaoCache_CheckAdd(qboolean *endSurface, qboolean *recycleVertexBuffer, qboo
void VaoCache_RecycleVertexBuffer(void)
{
#ifdef GL_BUFFER_RECYCLING
qglBindBuffer(GL_ARRAY_BUFFER, vc.vao->vertexesVBO);
qglBufferData(GL_ARRAY_BUFFER, vc.vao->vertexesSize, NULL, GL_DYNAMIC_DRAW);
#endif
vc.vertexOffset = 0;
}
void VaoCache_RecycleIndexBuffer(void)
{
#ifdef GL_BUFFER_RECYCLING
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vc.vao->indexesIBO);
qglBufferData(GL_ELEMENT_ARRAY_BUFFER, vc.vao->indexesSize, NULL, GL_DYNAMIC_DRAW);
#endif
vc.indexOffset = 0;
vc.numSurfaces = 0;
vc.numBatches = 0;

View file

@ -1105,10 +1105,10 @@ Responsible for doing a swapbuffers
*/
void GLimp_EndFrame( void )
{
// don't flip if drawing to front buffer
//swap window is implemented in VR API, no need to do it here
if ( Q_stricmp( r_drawBuffer->string, "GL_FRONT" ) != 0 )
{
SDL_GL_SwapWindow( SDL_window );
//SDL_GL_SwapWindow( SDL_window );
}
if( r_fullscreen->modified )

View file

@ -163,15 +163,20 @@ Q_EXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2, int arg3, i
return UI_API_VERSION;
case UI_INIT: {
int ptr[2] = {arg1, arg2};
vr = (vr_clientinfo_t *) (*(long *) (ptr));
_UI_Init(arg0);
}
return 0;
int ptr[2] = {arg1, arg2};
vr = (vr_clientinfo_t *) (*(long *) (ptr));
_UI_Init(arg0);
vr->menuCursorX = &uiInfo.uiDC.cursorx;
vr->menuCursorY = &uiInfo.uiDC.cursory;
}
return 0;
case UI_SHUTDOWN:
_UI_Shutdown();
return 0;
case UI_SHUTDOWN: {
vr->menuCursorX = NULL;
vr->menuCursorY = NULL;
_UI_Shutdown();
}
return 0;
case UI_KEY_EVENT:
_UI_KeyEvent( arg0, arg1 );
@ -3070,14 +3075,14 @@ static void UI_Update(const char *name) {
}
} else if (Q_stricmp(name, "r_lodbias") == 0) {
switch (val) {
case 0:
case -1:
trap_Cvar_SetValue( "r_subdivisions", 4 );
break;
case 1:
trap_Cvar_SetValue( "r_subdivisions", 12 );
break;
case 2:
trap_Cvar_SetValue( "r_subdivisions", 20 );
trap_Cvar_SetValue( "r_subdivisions", 80 );
break;
}
} else if (Q_stricmp(name, "ui_glCustom") == 0) {
@ -3161,6 +3166,98 @@ static void UI_Update(const char *name) {
} else {
trap_Cvar_SetValue( "m_pitch", -0.022f );
}
} else if (Q_stricmp(name, "vr_controlSchema") == 0) {
qboolean uturn = trap_Cvar_VariableValue( "vr_uturn" ) != 0;
switch (val)
{
case 0: // Default schema
trap_Cvar_Set("vr_button_map_RTHUMBLEFT", "turnleft"); // turn left
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT", "turnright"); // turn right
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD", "weapnext"); // next weapon
if (uturn) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "uturn"); // u-turn
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "weapprev"); // previous weapon
}
trap_Cvar_Set("vr_button_map_PRIMARYGRIP", "+weapon_select"); // weapon selector
trap_Cvar_Set("vr_button_map_PRIMARYTHUMBSTICK", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBLEFT_ALT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT", ""); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT_ALT", ""); // unmapped
break;
default: // Now we have only two schemas
// All directions as weapon select (useful for HMD wheel)
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBLEFT", "+weapon_select");
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT", "+weapon_select");
trap_Cvar_Set("vr_button_map_PRIMARYTHUMBSTICK", "+weapon_select");
trap_Cvar_Set("vr_button_map_PRIMARYGRIP", "+alt"); // switch to alt layout
trap_Cvar_Set("vr_button_map_RTHUMBLEFT_ALT", "turnleft"); // turn left
trap_Cvar_Set("vr_button_map_RTHUMBRIGHT_ALT", "turnright"); // turn right
trap_Cvar_Set("vr_button_map_RTHUMBFORWARD_ALT", "weapnext");
if (uturn) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "uturn");
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "weapprev");
}
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDRIGHT_ALT", "blank"); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKRIGHT_ALT", "blank"); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBBACKLEFT_ALT", "blank"); // unmapped
trap_Cvar_Set("vr_button_map_RTHUMBFORWARDLEFT_ALT", "blank"); // unmapped
break;
}
} else if (Q_stricmp(name, "vr_uturn") == 0) {
int controlSchema = (int)trap_Cvar_VariableValue( "vr_controlSchema" ) % 2;
if (val) {
if (controlSchema == 0) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "uturn");
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "uturn");
}
} else {
if (controlSchema == 0) {
trap_Cvar_Set("vr_button_map_RTHUMBBACK", "");
} else {
trap_Cvar_Set("vr_button_map_RTHUMBBACK_ALT", "");
}
}
} else if (Q_stricmp(name, "vr_goreLevel") == 0) {
switch (val) {
case 0:
trap_Cvar_SetValue( "com_blood", 0);
trap_Cvar_SetValue( "cg_gibs", 0);
trap_Cvar_SetValue( "cg_megagibs", 0);
break;
case 1:
trap_Cvar_SetValue( "com_blood", 1);
trap_Cvar_SetValue( "cg_gibs", 0);
trap_Cvar_SetValue( "cg_megagibs", 0);
break;
case 2:
trap_Cvar_SetValue( "com_blood", 1);
trap_Cvar_SetValue( "cg_gibs", 1);
trap_Cvar_SetValue( "cg_megagibs", 0);
break;
case 3:
trap_Cvar_SetValue( "com_blood", 1);
trap_Cvar_SetValue( "cg_gibs", 1);
trap_Cvar_SetValue( "cg_megagibs", 1);
break;
}
}
}
@ -5272,9 +5369,6 @@ void _UI_MouseEvent( int dx, int dy )
else if (uiInfo.uiDC.cursory > SCREEN_HEIGHT+16)
uiInfo.uiDC.cursory = SCREEN_HEIGHT+16;
vr->menuCursorX = &uiInfo.uiDC.cursorx;
vr->menuCursorY = &uiInfo.uiDC.cursory;
if (Menu_Count() > 0) {
//menuDef_t *menu = Menu_GetFocused();
//Menu_HandleMouseMove(menu, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory);

View file

@ -46,6 +46,7 @@ cvar_t *vr_hapticIntensity = NULL;
cvar_t *vr_comfortVignette = NULL;
cvar_t *vr_weaponSelectorMode = NULL;
cvar_t *vr_weaponSelectorWithHud = NULL;
cvar_t *vr_goreLevel = NULL;
engine_t* VR_Init( ovrJava java )
{
@ -126,6 +127,7 @@ void VR_InitCvars( void )
vr_comfortVignette = Cvar_Get ("vr_comfortVignette", "0.0", CVAR_ARCHIVE);
vr_weaponSelectorMode = Cvar_Get ("vr_weaponSelectorMode", "0", CVAR_ARCHIVE);
vr_weaponSelectorWithHud = Cvar_Get ("vr_weaponSelectorWithHud", "0", CVAR_ARCHIVE);
vr_goreLevel = Cvar_Get ("vr_goreLevel", "2", CVAR_ARCHIVE);
// Values are: scale,right,up,forward,pitch,yaw,roll
// VALUES PROVIDED BY SkillFur - Thank-you!

View file

@ -42,7 +42,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Autoswitch Weapons:"
cvar "cg_autoswitch"
rect 99 125 256 20
rect 99 75 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -57,7 +57,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Railgun Scope:"
cvar "vr_weaponScope"
rect 99 150 256 20
rect 99 100 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -72,7 +72,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Two-Handed Weapons:"
cvar "vr_twoHandedWeapons"
rect 99 175 256 20
rect 99 125 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -88,13 +88,29 @@ itemDef {
text "Direction Mode:"
cvar "vr_directionMode"
cvarFloatList { "HMD (Default)" 0 "Off-hand Controller" 1 }
rect 99 200 256 20
rect 99 150 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 1
visible 1
}
itemDef {
name controls3
group grpControls3
type ITEM_TYPE_YESNO
text "Quick U-Turn:"
cvar "vr_uturn"
rect 99 175 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 1
action { uiScript update "vr_uturn" }
}
itemDef {
@ -104,7 +120,7 @@ itemDef {
text "Turning Mode:"
cvar "vr_snapturn"
cvarFloatList { "Smooth Turning" 0 "45 Degrees" 45 "90 Degrees" 90 }
rect 99 225 256 20
rect 99 200 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -119,7 +135,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Right-Handed:"
cvar "vr_righthanded"
rect 99 250 256 20
rect 99 225 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -134,7 +150,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Switch Thumbsticks:"
cvar "vr_switchThumbsticks"
rect 99 275 256 20
rect 99 250 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -149,7 +165,7 @@ itemDef {
type ITEM_TYPE_SLIDER
text "Weapon Pitch:"
cvarfloat "vr_weaponPitch" 5 -25 5
rect 99 300 256 20
rect 99 275 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -165,7 +181,7 @@ itemDef {
text "Weapon Wheel Mode:"
cvar "vr_weaponSelectorMode"
cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 }
rect 99 325 256 20
rect 99 300 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -174,6 +190,22 @@ itemDef {
visible 1
}
itemDef {
name controls3
group grpControls3
type ITEM_TYPE_MULTI
text "Control Schema:"
cvar "vr_controlSchema"
cvarFloatList { "Weapon Wheel on Grip" 0 "Weapon Wheel on Thumbstick" 1 }
rect 99 325 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 1
action { uiScript update "vr_controlSchema" }
}
itemDef {
name fadebox

View file

@ -180,7 +180,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Railgun Scope:"
cvar "vr_weaponScope"
rect 30 40 200 20
rect 30 38 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -194,7 +194,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Two-Handed Weapons:"
cvar "vr_twoHandedWeapons"
rect 30 60 200 20
rect 30 56 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -210,7 +210,7 @@ itemDef {
text "Direction Mode:"
cvar "vr_directionMode"
cvarFloatList { "HMD (Default)" 0 "Off-hand Controller" 1 }
rect 30 80 200 20
rect 30 74 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -222,16 +222,33 @@ itemDef {
itemDef {
name controls
group grpControls
type ITEM_TYPE_MULTI
text "Turning Mode:"
cvar "vr_snapturn"
cvarFloatList { "Smooth Turning" 0 "45 Degrees" 45 "90 Degrees" 90 }
rect 30 100 200 20
rect 30 92 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
}
itemDef {
name controls
group grpControls
type ITEM_TYPE_YESNO
text "Quick U-Turn:"
cvar "vr_uturn"
rect 30 110 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
visible 1
action { uiScript update "vr_uturn" }
}
itemDef {
@ -240,7 +257,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Right-Handed:"
cvar "vr_righthanded"
rect 30 120 200 20
rect 30 128 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -255,7 +272,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Switch Thumbsticks:"
cvar "vr_switchThumbsticks"
rect 30 140 200 20
rect 30 146 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -270,7 +287,7 @@ itemDef {
type ITEM_TYPE_SLIDER
text "Weapon Pitch:"
cvarfloat "vr_weaponPitch" 5 -25 5
rect 30 160 200 20
rect 30 164 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -286,21 +303,38 @@ itemDef {
text "Weapon Wheel Mode:"
cvar "vr_weaponSelectorMode"
cvarFloatList { "Controller Based" 0 "HMD/Thumbstick Based" 1 }
rect 30 180 200 20
rect 30 182 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
}
itemDef {
name controls
group grpControls
type ITEM_TYPE_MULTI
text "Control Schema:"
cvar "vr_controlSchema"
cvarFloatList { "Weapon Wheel on Grip" 0 "Weapon Wheel on Thumbstick" 1 }
rect 30 200 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
visible 1
action { uiScript update "vr_controlSchema" }
}
itemDef {
name controls
group grpControls
style 1
text "Comfort Options"
rect 100 215 100 20
rect 100 231 100 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -315,7 +349,7 @@ itemDef {
type ITEM_TYPE_SLIDER
text "Comfort Vignette:"
cvarfloat "vr_comfortVignette" 0.2 0 1
rect 30 240 200 20
rect 30 251 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -329,7 +363,7 @@ itemDef {
type ITEM_TYPE_SLIDER
text "Height Adjust:"
cvarfloat "vr_heightAdjust" 0.2 0 1
rect 30 260 200 20
rect 30 271 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -343,7 +377,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Roll When Hit:"
cvar "vr_rollWhenHit"
rect 30 280 200 20
rect 30 291 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -357,7 +391,7 @@ itemDef {
type ITEM_TYPE_SLIDER
text "Haptic Intensity:"
cvarfloat "vr_hapticIntensity" 0.2 0 1
rect 30 300 200 20
rect 30 311 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -372,7 +406,7 @@ itemDef {
text "HUD Depth:"
cvar "vr_hudDepth"
cvarFloatList { "Very Close" 0 "Close" 1 "Middle" 2 "Further" 3 "Far" 4 "Distant" 5 }
rect 30 320 200 20
rect 30 331 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
@ -386,7 +420,7 @@ itemDef {
type ITEM_TYPE_SLIDER
text "HUD Y Offset:"
cvarfloat "vr_hudYOffset" 20 -200 200
rect 30 340 200 20
rect 30 351 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17

View file

@ -409,54 +409,23 @@ itemDef {
visible 1
}
itemDef {
name options
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Blood:"
cvar "com_blood"
rect 50 309 200 20
text "Gore:"
type ITEM_TYPE_MULTI
cvar "vr_goreLevel"
cvarFloatList { "None" 0 "Blood Only" 1 "Blood & Gibs (Default)" 2 "Extra Gore (Performance Hit)" 3 }
rect 50 329 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textalignx 80
textaligny 17
textscale .25
textscale .25
forecolor 1 1 1 1
visible 1
visible 1
action { uiScript update "vr_goreLevel" }
}
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Gibs:"
cvar "cg_gibs"
rect 50 326 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
action { exec "loadhud" }
}
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Extra Gibs (Performance Hit):"
cvar "cg_megagibs"
rect 50 343 200 20
textalign ITEM_ALIGN_RIGHT
textalignx 143
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 1
}
}

View file

@ -0,0 +1,295 @@
#include "ui/menudef.h"
{
\\ SETUP MENU \\
menuDef {
name "ingame_player"
visible 0
fullscreen 0
outOfBoundsClick // this closes the window if it gets a click out of the rectangle
rect 125 30 290 170
focusColor 1 .75 0 1
style 1
border 1
onOpen { uiScript update "ui_GetName" }
onClose { uiScript update "ui_SetName" }
itemDef {
name window
rect 10 15 270 155
style 1
backcolor 0 .1 0 1
visible 1
decoration
}
// FRAME //
itemDef {
name window
rect 0 10 64 64
style 3
background "ui/assets/ingameleftcorner.tga"
visible 1
decoration
}
itemDef {
name window
rect 64 10 64 8
style 3
background "ui/assets/ingametop.tga"
visible 1
decoration
}
itemDef {
name window
rect 168 10 64 8
style 3
background "ui/assets/ingametop.tga"
visible 1
decoration
}
itemDef {
name window
rect 226 10 64 64
style 3
background "ui/assets/ingamerightcorner.tga"
visible 1
decoration
}
itemDef {
name window
rect 104 0 64 16
style 3
background "ui/assets/ingameconnection.tga"
visible 1
decoration
}
itemDef {
name window
rect 0 108 64 64
style 3
background "ui/assets/ingameleftcornerb.tga"
visible 1
decoration
}
itemDef {
name window
rect 226 108 64 64
style 3
background "ui/assets/ingamerightcornerb.tga"
visible 1
decoration
}
itemDef {
name window
rect 0 64 16 64
style 3
background "ui/assets/ingameleft.tga"
visible 1
decoration
}
itemDef {
name window
rect 274 64 16 64
style 3
background "ui/assets/ingameright.tga"
visible 1
decoration
}
itemDef {
name window
rect 64 164 64 8
style 3
background "ui/assets/ingamebottom.tga"
visible 1
decoration
}
itemDef {
name window
rect 128 164 98 8
style 3
background "ui/assets/ingamebottom.tga"
visible 1
decoration
}
itemDef {
name namefield
group "playersettinggroup"
type ITEM_TYPE_EDITFIELD
style 0
text "Name:"
cvar "ui_Name"
maxchars 26
rect 20 10 256 20
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 18
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name other
group "playersettinggroup"
style 1
text "To change player name use the companion app."
rect 20 20 215 32
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 21
textscale .2
forecolor .4 .4 .65 1
visible 1
decoration
}
itemDef {
name handicapfield
group "playersettinggroup"
style 0
text "Handicap:"
ownerdraw UI_HANDICAP
rect 20 40 256 20
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 18
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name effectentry
group "playersettinggroup"
text "Effect:"
type 1
style 0
rect 20 58 256 20
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 18
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
decoration
mouseEnterText { setitemcolor effectentry forecolor 1 .75 0 1 ; setfocus effectfield ; show message_effect }
mouseExitText { setitemcolor playersettinggroup forecolor 1 1 1 1 ; hide message_effect }
}
itemDef {
name effectfield
group "playersettinggroup"
style 0
ownerdraw UI_EFFECTS
rect 20 58 256 20
textalign ITEM_ALIGN_LEFT
textalignx 50
textaligny 25
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name effectfield
group "playersettinggroup"
type ITEM_TYPE_SLIDER
text "1st-Person Body Scale:"
cvarfloat "cg_firstPersonBodyScale" 0.2 0 1
rect 20 80 256 20
textstyle 6
textalign ITEM_ALIGN_LEFT
textalignx 10
textaligny 16
textscale .23
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name headlist
rect 15 100 260 50
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 32
elementheight 32
elementtype LISTBOX_IMAGE
feeder FEEDER_HEADS
horizontalscroll
backcolor 0 0 0 1
border 1
bordercolor .5 .5 .5 1
forecolor 1 1 1 1
visible 1
cvarTest "g_gametype"
showCvar { "3" ; "4" ; "5" ; "6" ; "7" ; "8" }
mouseenter { setitemcolor headlist bordercolor 1 0 0 1 }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 }
}
itemDef {
name headlist
rect 15 100 260 50
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 32
elementheight 32
elementtype LISTBOX_IMAGE
feeder FEEDER_Q3HEADS
horizontalscroll
backcolor 0 0 0 1
border 1
bordercolor .5 .5 .5 1
forecolor 1 1 1 1
visible 1
cvarTest "g_gametype"
showCvar { "0" ; "1" }
mouseenter { setitemcolor headlist bordercolor 1 0 0 1 }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 }
}
}
}

View file

@ -178,22 +178,22 @@ itemDef {
mouseExit { setitemcolor ctr_graphics backcolor .37 .1 .1 1 }
}
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Quality:"
cvar "ui_glCustom"
cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
rect 0 50 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 0
action { uiScript update "ui_glCustom" }
}
// itemDef {
// name graphics
// group grpSystem
// type ITEM_TYPE_MULTI
// text "Quality:"
// cvar "ui_glCustom"
// cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
// rect 0 50 256 20
// textalign ITEM_ALIGN_RIGHT
// textalignx 133
// textaligny 17
// textscale .25
// forecolor 1 1 1 1
// visible 0
// action { uiScript update "ui_glCustom" }
// }
itemDef {
name graphics
@ -202,14 +202,13 @@ itemDef {
text "Refresh Rate:"
cvar "vr_refreshrate"
cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 }
rect 0 70 306 20
rect 0 50 306 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 0
decoration
visible 0
}
itemDef {
@ -218,7 +217,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Sync Every Frame:"
cvar "r_finish"
rect 0 90 256 20
rect 0 70 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
@ -235,7 +234,7 @@ itemDef {
text "Color Depth:"
cvar "r_colorbits"
cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 }
rect 0 110 256 20
rect 0 90 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
@ -252,7 +251,7 @@ itemDef {
text "Lighting:"
cvar "r_vertexlight"
cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 }
rect 0 130 256 20
rect 0 110 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
@ -268,7 +267,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Dynamic Lights:"
cvar "r_dynamiclight"
rect 0 150 256 20
rect 0 130 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
@ -277,13 +276,29 @@ itemDef {
visible 0
}
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Shadow Detail:"
cvar "cg_shadows"
cvarFloatList { "Low" 1 "High" 3 }
rect 0 150 306 20
textalign ITEM_ALIGN_RIGHT
textalignx 133
textaligny 17
textscale .25
forecolor 1 1 1 1
visible 0
}
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Geometric Detail:"
cvar "r_lodbias"
cvarFloatList { "High" 0 "Medium" 1 "Low" 2 }
cvarFloatList { "High" -1 "Medium" 1 "Low" 2 }
rect 0 170 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 133

View file

@ -290,52 +290,23 @@ itemDef {
visible 1
}
itemDef {
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Blood:"
cvar "com_blood"
rect 99 365 256 20
text "Gore:"
type ITEM_TYPE_MULTI
cvar "vr_goreLevel"
cvarFloatList { "None" 0 "Blood Only" 1 "Blood & Gibs (Default)" 2 "Extra Gore (Performance Hit)" 3 }
rect 99 375 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textalignx 70
textaligny 20
textscale .3
textscale .3
forecolor 1 1 1 1
visible 1
visible 1
action { uiScript update "vr_goreLevel" }
}
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Gibs:"
cvar "cg_gibs"
rect 99 385 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .3
forecolor 1 1 1 1
visible 1
}
itemDef {
name options
group grpOptions
type ITEM_TYPE_YESNO
text "Extra Gibs (Performance Hit):"
cvar "cg_megagibs"
rect 99 405 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .3
forecolor 1 1 1 1
visible 1
}
itemDef {
name fadebox
style WINDOW_STYLE_FILLED

View file

@ -0,0 +1,644 @@
#include "ui/menudef.h"
{
\\ PLATER SELECTION MENU \\
menuDef {
name "player_menu"
visible 0
fullscreen 1
rect 0 0 640 480
background "menuback_a"
style 1
focusColor 1 .75 0 1
onOpen { play "sound/misc/kcswish.wav" ;
playlooped "music/fla_mp03.wav" ;
setitemcolor fadebox backcolor 0 0 0 1 ;
fadeout fadebox ;
uiScript update "ui_GetName" ;
transition menuback_g 0 0 640 480 195 120 255 202 20 10 ;
transition clancinematic 107 82 426 316 238 153 170 133 20 10 ;
hide back_alt ;
show back ;
hide grpmessage }
onClose { uiScript update "ui_SetName" }
onEsc { close player_menu ; open main }
itemDef {
name gametypebar
style 2
rect 0 5 640 40
textscale 0.4
textalign 0 // center
textalignx 60 // x alignment point for text
// use it to offset left/right text from the edge
// or to center the text on a different point
textaligny 21
style 2
border 4
bordercolor 0.5 0.5 0.5 0.5
bordersize 2
backcolor 0 0 .75 .5
visible 1
decoration
mouseEnter { setcolor backcolor .75 0 0 .5 }
mouseExit { setcolor backcolor 0 0 .75 .5 }
}
itemDef {
name arenatype
type ITEM_TYPE_MULTI
cvar "ui_q3model"
cvarFloatList { "Team Arena" 0 "Quake III" 1 }
text "Model Type:"
textstyle 6
rect 0 10 320 31
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 26
textscale .35
forecolor 1 1 1 1
visible 1
mouseEnter { show message_type }
mouseExit { hide message_type }
action { play "sound/misc/kcaction.wav" }
}
itemDef {
name quakeimage
style WINDOW_STYLE_SHADER
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
background "ui/assets/playerpatriot.tga"
rect 60 24 128 256
forecolor .25 .25 .25 1
decoration
}
itemDef {
name quakeimage
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style WINDOW_STYLE_SHADER
background "ui/assets/playerpi.tga"
rect 100 24 128 256
visible 1
decoration
}
itemDef {
name quakeimage
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style WINDOW_STYLE_SHADER
background "ui/assets/playerklesk.tga"
rect 440 24 128 256
forecolor .5 .5 .5 1
visible 1
decoration
}
itemDef {
name quakeimage
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style WINDOW_STYLE_SHADER
background "ui/assets/playerbiker.tga"
rect 384 24 128 256
visible 1
decoration
}
itemDef {
name clanlogo1
style WINDOW_STYLE_SHADER
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
background "ui/assets/pagans.tga"
rect 0 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name clanlogo1
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
style WINDOW_STYLE_SHADER
background "ui/assets/crusaders.tga"
rect 128 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name clanlogo1
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
style WINDOW_STYLE_SHADER
background "ui/assets/stroggs.tga"
rect 384 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name clanlogo1
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
style WINDOW_STYLE_SHADER
background "ui/assets/intruders.tga"
rect 512 150 128 128
forecolor .5 .5 .5 .25
visible 1
decoration
}
itemDef {
name window
style WINDOW_STYLE_FILLED
rect 238 153 170 133
forecolor 0 0 0 1
backcolor 0 0 0 1
visible 1
decoration
}
itemDef {
name playerbar
style 2
rect 0 130 640 170
backcolor 0 0 .75 0
forecolor 1 1 1 1
border 4
bordercolor 0.5 0.5 0.5 .75
bordersize 2
visible 1
decoration
}
itemDef {
name window
rect 10 50 620 60
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name window
rect 10 112 205 216
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name window
rect 217 112 205 216
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name window
rect 424 112 206 216
style WINDOW_STYLE_EMPTY
border 1
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
backcolor 0 0 0 0
visible 1
decoration
}
itemDef {
name modelselection
ownerdraw UI_PLAYERMODEL
rect 424 80 260 260
style 1
decoration
visible 1
}
itemDef {
name namefield
group "playersettinggroup"
type ITEM_TYPE_EDITFIELD
style 0
text "Name:"
cvar "ui_Name"
textstyle 6
maxChars 32
rect 0 60 215 32
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
// mouseEnter { show message_name }
// mouseExit { hide message_name }
}
itemDef {
name other
group grpSystem
style 1
text "To change player name use the companion app."
rect 0 80 215 32
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .25
forecolor .4 .4 .65 1
visible 1
decoration
}
itemDef {
name handicapfield
group "playersettinggroup"
style 0
text "Handicap:"
ownerdraw UI_HANDICAP
textstyle 6
rect 0 175 215 32
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
mouseEnter { show message_handicap }
mouseExit { hide message_handicap }
}
itemDef {
name effectfield
group "playersettinggroup"
style 0
text "Effect:"
ownerdraw UI_EFFECTS
rect 0 205 215 32
textstyle 6
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 21
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
mouseEnter { show message_effect }
mouseExit { hide message_effect }
}
itemDef {
name clanfield
group grparenatype
ownerdraw UI_CLANNAME
text "Clan:"
textstyle 6
rect 20 235 215 31
textalign ITEM_ALIGN_LEFT
textalignx 0
textaligny 21
textscale .333
forecolor 1 1 1 1
cvarTest "ui_q3model"
showCVar { "0" }
visible 1
action { play "sound/misc/nomenu.wav" }
mouseEnter { show message_clan }
mouseExit { hide message_clan }
}
itemDef {
name effectfield
group "playersettinggroup"
type ITEM_TYPE_SLIDER
text "1st-Person Body Scale:"
cvarfloat "cg_firstPersonBodyScale" 0.2 0 1
rect 0 310 250 20
textstyle 6
textalign ITEM_ALIGN_LEFT
textalignx 20
textaligny 16
textscale .333
outlinecolor 1 .5 .5 .5
backcolor 0 0 0 0
forecolor 1 1 1 1
border 0
bordercolor 0 0 0 0
visible 1
}
itemDef {
name headlist
rect 10 340 620 80
group grparenatype
cvarTest "ui_q3model"
hideCvar { "1" }
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 61.75
elementheight 61.75
elementtype LISTBOX_IMAGE
feeder FEEDER_HEADS
horizontalscroll
border 1
bordersize 1
backcolor 0 0 0 .25
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
visible 1
mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model }
}
itemDef {
name headlist
rect 10 330 620 80
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
type ITEM_TYPE_LISTBOX
style WINDOW_STYLE_FILLED
elementwidth 61.75
elementheight 61.75
elementtype LISTBOX_IMAGE
feeder FEEDER_Q3HEADS
horizontalscroll
border 1
bordersize 1
backcolor 0 0 0 .25
bordercolor .5 .5 .5 .5
forecolor 1 1 1 1
visible 1
mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model }
mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model}
}
// BACK BAR //
itemDef {
name gotobar
style 2
rect 0 430 640 30
textscale 0.4
textalign 0 // center
textalignx 60 // x alignment point for text
// use it to offset left/right text from the edge
// or to center the text on a different point
textaligny 21
style 2
border 4
bordercolor 0.5 0.5 0.5 0.5
bordersize 2
backcolor 0 0 .75 0.5
visible 1
mouseEnter { setcolor backcolor .75 0 0 .5 }
mouseExit { setcolor backcolor 0 0 .75 .5 }
decoration
}
itemDef {
name back
style 3
background "ui/assets/backarrow.tga"
rect 16 424 50 50
visible 1
action { close player_menu ; open main }
mouseEnter { hide back ; show back_alt ; show message_back }
}
itemDef {
name back_alt
style WINDOW_STYLE_SHADER
background "ui/assets/backarrow_alt.tga"
rect 14 422 54 54
backcolor 0 0 0 0
forecolor 1 1 1 1
visible 0
type ITEM_TYPE_BUTTON
mouseExit { hide back_alt ; show back ; hide message_back }
action { close player_menu ; open main }
}
// MESSAGES //
itemDef {
name message_back
group grpmessage
style 0
rect 320 430 128 30
textstyle 1
textalign 1
textalignx 0
textaligny 25
textscale .416
text "Return to Main Menu"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_name
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Enter Player Name"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_handicap
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to Change Handicap"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_effect
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Select Bar to Change Effect Color"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_clan
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to Cycle Clan Selection"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_type
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to View Team Arena or Quake III Models"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name message_model
group grpmessage
style 0
rect 320 430 128 30
textalign 1
textstyle 1
textalignx 0
textaligny 25
textscale .416
text "Click to Change Player Model"
forecolor 1 1 1 1
decoration
visible 0
}
itemDef {
name clancinematic
rect 238 157 170 133
group grparenatype
cvarTest "ui_q3model"
showCVar { "0" }
ownerdraw UI_CLANCINEMATIC
visible 1
decoration
}
itemDef {
name clancinematic
group grpquaketype
cvarTest "ui_q3model"
showCVar { "1" }
style 3
background "ui/assets/q3imagepage.tga"
rect 238 157 170 133
visible 1
decoration
}
itemDef {
name clancinematic
style 3
background "menuscreen"
rect 238 153 170 133
visible 1
decoration
}
itemDef {
name menuback_g
style WINDOW_STYLE_SHADER
rect 195 120 255 202
background "menuback_g"
visible 1
decoration
}
itemDef {
name fadebox
style WINDOW_STYLE_FILLED
background "ui/assets/fadebox.tga"
forecolor 0 0 0 1
backcolor 0 0 0 1
rect 0 0 640 480
visible 1
decoration
}
}
}

View file

@ -82,22 +82,22 @@ itemDef {
}
itemDef {
name graphics
group grpSystem
text "Quality:"
type ITEM_TYPE_MULTI
cvar "ui_glCustom"
cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
rect 99 42 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 0
action { uiScript update "ui_glCustom" }
}
// itemDef {
// name graphics
// group grpSystem
// text "Quality:"
// type ITEM_TYPE_MULTI
// cvar "ui_glCustom"
// cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
// rect 99 42 256 20
// textalign ITEM_ALIGN_RIGHT
// textalignx 128
// textaligny 20
// textscale .333
// forecolor 1 1 1 1
// visible 0
// action { uiScript update "ui_glCustom" }
// }
itemDef {
name graphics
@ -106,7 +106,7 @@ itemDef {
text "Refresh Rate:"
cvar "vr_refreshrate"
cvarFloatList { "60" 60 "72 (Recommended)" 72 "80" 80 "90" 90 }
rect 99 67 256 20
rect 99 42 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -121,7 +121,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Sync Every Frame:"
cvar "r_finish"
rect 99 92 256 20
rect 99 67 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -137,7 +137,7 @@ itemDef {
text "Color Depth:"
cvar "r_colorbits"
cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 }
rect 99 117 256 20
rect 99 92 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -154,7 +154,7 @@ itemDef {
text "Lighting:"
cvar "r_vertexlight"
cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 }
rect 99 142 256 20
rect 99 117 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -170,7 +170,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Dynamic Lights:"
cvar "r_dynamiclight"
rect 99 167 256 20
rect 99 142 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -179,13 +179,29 @@ itemDef {
visible 1
}
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Shadow Detail:"
cvar "cg_shadows"
cvarFloatList { "Low" 1 "High" 3 }
rect 99 167 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
textscale .333
forecolor 1 1 1 1
visible 0
}
itemDef {
name graphics
group grpSystem
type ITEM_TYPE_MULTI
text "Geometric Detail:"
cvar "r_lodbias"
cvarFloatList { "High" 0 "Medium" 1 "Low" 2 }
cvarFloatList { "High" -1 "Medium" 1 "Low" 2 }
rect 99 192 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
@ -220,7 +236,7 @@ itemDef {
text "Texture Quality:"
cvar "r_texturebits"
cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 }
rect 99 244 256 20
rect 99 242 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -236,7 +252,7 @@ itemDef {
text "Texture Filter:"
cvar "r_texturemode"
cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" }
rect 99 269 256 20
rect 99 267 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20
@ -251,7 +267,7 @@ itemDef {
type ITEM_TYPE_YESNO
text "Compress Textures:"
cvar "r_ext_compressed_textures"
rect 99 294 256 20
rect 99 292 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 128
textaligny 20

View file

@ -3,7 +3,7 @@
setlocal
set BUILD_TYPE=release
set VERSION=0.27.1
set VERSION=0.28.0
@REM Define the following environment variables to sign a release build
@REM set KEYSTORE=