06 Feb 2011
This commit is contained in:
parent
feb79fa260
commit
b788bd3277
|
@ -325,7 +325,7 @@
|
|||
// byte (color)
|
||||
// short (count)
|
||||
// short (base speed)
|
||||
// short (ramdon velocity)
|
||||
// short (random velocity)
|
||||
|
||||
#define TE_BEAMHOSE 26 // obsolete
|
||||
|
||||
|
@ -333,7 +333,6 @@
|
|||
// coord, coord, coord (pos)
|
||||
// byte (radius in 10's)
|
||||
// byte byte byte (color)
|
||||
// byte (brightness)
|
||||
// byte (life in 10's)
|
||||
// byte (decay rate in 10's)
|
||||
|
||||
|
|
|
@ -100,7 +100,6 @@ qboolean UI_IsVisible( void )
|
|||
|
||||
static void UI_DrawLogo( const char *filename, float x, float y, float width, float height )
|
||||
{
|
||||
static float video_duration;
|
||||
static float cin_time;
|
||||
static int last_frame = -1;
|
||||
byte *cin_data = NULL;
|
||||
|
@ -129,7 +128,7 @@ static void UI_DrawLogo( const char *filename, float x, float y, float width, fl
|
|||
}
|
||||
|
||||
AVI_OpenVideo( cin_state, fullpath, false, false, true );
|
||||
if( !( AVI_GetVideoInfo( cin_state, &menu.logo_xres, &menu.logo_yres, &video_duration )))
|
||||
if( !( AVI_GetVideoInfo( cin_state, &menu.logo_xres, &menu.logo_yres, &menu.logo_length )))
|
||||
{
|
||||
AVI_CloseVideo( cin_state );
|
||||
menu.drawLogo = false;
|
||||
|
@ -152,7 +151,7 @@ static void UI_DrawLogo( const char *filename, float x, float y, float width, fl
|
|||
cin_time += host.realframetime;
|
||||
|
||||
// restarts the cinematic
|
||||
if( cin_time > video_duration )
|
||||
if( cin_time > menu.logo_length )
|
||||
cin_time = 0.0f;
|
||||
|
||||
// read the next frame
|
||||
|
@ -180,6 +179,11 @@ static int UI_GetLogoHeight( void )
|
|||
return menu.logo_yres;
|
||||
}
|
||||
|
||||
static float UI_GetLogoLength( void )
|
||||
{
|
||||
return menu.logo_length;
|
||||
}
|
||||
|
||||
static void UI_UpdateUserinfo( void )
|
||||
{
|
||||
player_info_t *player;
|
||||
|
@ -861,6 +865,7 @@ static ui_enginefuncs_t gEngfuncs =
|
|||
UI_DrawLogo,
|
||||
UI_GetLogoWidth,
|
||||
UI_GetLogoHeight,
|
||||
UI_GetLogoLength,
|
||||
pfnDrawCharacter,
|
||||
pfnDrawConsoleString,
|
||||
pfnDrawSetTextColor,
|
||||
|
|
|
@ -1814,16 +1814,12 @@ void CL_ParseTempEntity( sizebuf_t *msg )
|
|||
dl->origin[0] = BF_ReadCoord( &buf );
|
||||
dl->origin[1] = BF_ReadCoord( &buf );
|
||||
dl->origin[2] = BF_ReadCoord( &buf );
|
||||
dl->radius = (float)(BF_ReadByte( &buf ) * 0.1f);
|
||||
dl->radius = (float)(BF_ReadByte( &buf ) * 10.0f);
|
||||
dl->color.r = BF_ReadByte( &buf );
|
||||
dl->color.g = BF_ReadByte( &buf );
|
||||
dl->color.b = BF_ReadByte( &buf );
|
||||
brightness = (float)BF_ReadByte( &buf );
|
||||
dl->color.r *= brightness;
|
||||
dl->color.g *= brightness;
|
||||
dl->color.b *= brightness;
|
||||
dl->die = cl.time + (float)(BF_ReadByte( &buf ) * 0.1f);
|
||||
dl->decay = (float)(BF_ReadByte( &buf ) * 0.1f);
|
||||
dl->decay = (float)(BF_ReadByte( &buf ) * 10.0f);
|
||||
break;
|
||||
case TE_ELIGHT:
|
||||
dl = CL_AllocElight( 0 );
|
||||
|
@ -2288,20 +2284,24 @@ void CL_DecayLights( void )
|
|||
|
||||
for( i = 0, dl = cl_dlights; i < MAX_DLIGHTS; i++, dl++ )
|
||||
{
|
||||
if( dl->die < cl.time || !dl->radius )
|
||||
continue;
|
||||
|
||||
if( !dl->radius ) continue;
|
||||
|
||||
dl->radius -= time * dl->decay;
|
||||
if( dl->radius < 0 ) dl->radius = 0;
|
||||
|
||||
if( dl->die < cl.time || !dl->radius )
|
||||
Mem_Set( dl, 0, sizeof( *dl ));
|
||||
}
|
||||
|
||||
for( i = 0, dl = cl_elights; i < MAX_ELIGHTS; i++, dl++ )
|
||||
{
|
||||
if( dl->die < cl.time || !dl->radius )
|
||||
continue;
|
||||
|
||||
if( !dl->radius ) continue;
|
||||
|
||||
dl->radius -= time * dl->decay;
|
||||
if( dl->radius < 0 ) dl->radius = 0;
|
||||
|
||||
if( dl->die < cl.time || !dl->radius )
|
||||
Mem_Set( dl, 0, sizeof( *dl ));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -379,6 +379,7 @@ typedef struct
|
|||
qboolean drawLogo; // set to TRUE if logo.avi missed or corrupted
|
||||
long logo_xres;
|
||||
long logo_yres;
|
||||
float logo_length;
|
||||
} menu_static_t;
|
||||
|
||||
typedef struct
|
||||
|
|
|
@ -771,6 +771,7 @@ void R_DrawTextureChains( void )
|
|||
|
||||
// make sure what color is reset
|
||||
pglColor4ub( 255, 255, 255, 255 );
|
||||
R_LoadIdentity(); // set identity matrix
|
||||
|
||||
// clip skybox surfaces
|
||||
for( s = skychain; s != NULL; s = s->texturechain )
|
||||
|
@ -1241,8 +1242,11 @@ void R_RecursiveWorldNode( mnode_t *node, uint clipflags )
|
|||
}
|
||||
else
|
||||
{
|
||||
surf->texturechain = surf->texinfo->texture->texturechain;
|
||||
surf->texinfo->texture->texturechain = surf;
|
||||
if( surf->texinfo && surf->texinfo->texture )
|
||||
{
|
||||
surf->texturechain = surf->texinfo->texture->texturechain;
|
||||
surf->texinfo->texture->texturechain = surf;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#define WINDOW_STYLE (WS_OVERLAPPED|WS_BORDER|WS_SYSMENU|WS_CAPTION|WS_VISIBLE)
|
||||
#define WINDOW_EX_STYLE (0)
|
||||
#define GL_DRIVER_OPENGL "OpenGL32"
|
||||
#define WINDOW_NAME "Xash Window" // Half-Life
|
||||
|
||||
convar_t *renderinfo;
|
||||
convar_t *gl_allow_software;
|
||||
|
@ -949,7 +950,7 @@ qboolean VID_CreateWindow( int width, int height, qboolean fullscreen )
|
|||
wc.hInstance = host.hInst;
|
||||
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
|
||||
wc.hbrBackground = (void *)COLOR_3DSHADOW;
|
||||
wc.lpszClassName = "Xash Window";
|
||||
wc.lpszClassName = WINDOW_NAME;
|
||||
wc.lpszMenuName = 0;
|
||||
|
||||
// find the icon file in the filesystem
|
||||
|
@ -970,7 +971,7 @@ qboolean VID_CreateWindow( int width, int height, qboolean fullscreen )
|
|||
|
||||
if( !RegisterClass( &wc ))
|
||||
{
|
||||
MsgDev( D_ERROR, "VID_CreateWindow: couldn't register window class %s\n" "Xash Window" );
|
||||
MsgDev( D_ERROR, "VID_CreateWindow: couldn't register window class %s\n" WINDOW_NAME );
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1010,7 +1011,7 @@ qboolean VID_CreateWindow( int width, int height, qboolean fullscreen )
|
|||
}
|
||||
}
|
||||
|
||||
CreateWindowEx( exstyle, "Xash Window", wndname, stylebits, x, y, w, h, NULL, NULL, host.hInst, NULL );
|
||||
CreateWindowEx( exstyle, WINDOW_NAME, wndname, stylebits, x, y, w, h, NULL, NULL, host.hInst, NULL );
|
||||
|
||||
// host.hWnd will be filled in IN_WndProc
|
||||
|
||||
|
@ -1030,7 +1031,7 @@ qboolean VID_CreateWindow( int width, int height, qboolean fullscreen )
|
|||
DestroyWindow( host.hWnd );
|
||||
host.hWnd = NULL;
|
||||
|
||||
UnregisterClass( "Xash Window", host.hInst );
|
||||
UnregisterClass( WINDOW_NAME, host.hInst );
|
||||
MsgDev( D_ERROR, "OpenGL driver not installed\n" );
|
||||
return false;
|
||||
}
|
||||
|
@ -1071,7 +1072,7 @@ void VID_DestroyWindow( void )
|
|||
host.hWnd = NULL;
|
||||
}
|
||||
|
||||
UnregisterClass( "Xash Window", host.hInst );
|
||||
UnregisterClass( WINDOW_NAME, host.hInst );
|
||||
|
||||
if( glState.fullScreen )
|
||||
{
|
||||
|
|
|
@ -1520,6 +1520,10 @@ void Con_VidInit( void )
|
|||
}
|
||||
}
|
||||
|
||||
// missed console image will be replaced as white (GoldSrc rules)
|
||||
if( con.background == tr.defaultTexture )
|
||||
con.background = tr.whiteTexture;
|
||||
|
||||
Con_LoadConchars();
|
||||
}
|
||||
|
||||
|
|
|
@ -83,6 +83,7 @@
|
|||
#define MakeRGBA( out, x, y, z, w ) Vector4Set( out, x, y, z, w )
|
||||
#define PlaneDist(point,plane) ((plane)->type < 3 ? (point)[(plane)->type] : DotProduct((point), (plane)->normal))
|
||||
#define PlaneDiff(point,plane) (((plane)->type < 3 ? (point)[(plane)->type] : DotProduct((point), (plane)->normal)) - (plane)->dist)
|
||||
#define PlaneDiff2(point, plane) ((((plane)->type < 3) ? (point)[(plane)->type] - (plane)->dist : DotProduct((point), (plane)->normal) - (plane)->dist))
|
||||
|
||||
float rsqrt( float number );
|
||||
float anglemod( const float a );
|
||||
|
|
|
@ -54,13 +54,11 @@ public:
|
|||
|
||||
virtual bool hasFocus( void )
|
||||
{
|
||||
Msg( "hasFocus()\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool isWithin( int x, int y )
|
||||
{
|
||||
Msg( "isWithin()\n" );
|
||||
return false;
|
||||
}
|
||||
protected:
|
||||
|
@ -155,9 +153,8 @@ protected:
|
|||
class CEngineApp : public App
|
||||
{
|
||||
public:
|
||||
CEngineApp( void )
|
||||
CEngineApp( bool externalMain = true ):App( externalMain )
|
||||
{
|
||||
App::reset();
|
||||
}
|
||||
|
||||
virtual void main( int argc, char* argv[] )
|
||||
|
@ -167,13 +164,12 @@ public:
|
|||
|
||||
virtual void setCursorPos( int x, int y )
|
||||
{
|
||||
Msg( "setCursorPos: %i %i\n", x, y );
|
||||
App::setCursorPos( x, y );
|
||||
}
|
||||
|
||||
virtual void getCursorPos( int &x,int &y )
|
||||
{
|
||||
App::getCursorPos( x, y );
|
||||
Msg( "getCursorPos: %i %i\n", x, y );
|
||||
}
|
||||
virtual App* getApp( void )
|
||||
{
|
||||
|
@ -262,7 +258,7 @@ void VGui_Paint( void )
|
|||
{
|
||||
if( !rootpanel ) return;
|
||||
|
||||
rootpanel->paintBackground();
|
||||
// pApp->externalTick();
|
||||
}
|
||||
|
||||
void VGui_ViewportPaintBackground( int extents[4] )
|
||||
|
|
|
@ -10,89 +10,152 @@
|
|||
#include<VGUI.h>
|
||||
#include<VGUI_App.h>
|
||||
#include<VGUI_Panel.h>
|
||||
#include<VGUI_SurfaceGL.h>
|
||||
#include<VGUI_SurfaceBase.h>
|
||||
#include<VGUI_ActionSignal.h>
|
||||
#include<VGUI_BorderLayout.h>
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
SurfaceGL::SurfaceGL( Panel* embeddedPanel ):Surface( embeddedPanel )
|
||||
class CEngineSurface : public SurfaceBase
|
||||
{
|
||||
_embeddedPanel = embeddedPanel;
|
||||
}
|
||||
public:
|
||||
CEngineSurface( Panel *embeddedPanel ):SurfaceBase( embeddedPanel )
|
||||
{
|
||||
_embeddedPanel = embeddedPanel;
|
||||
}
|
||||
public:
|
||||
virtual void setTitle( const char *title )
|
||||
{
|
||||
Msg( "SetTitle: %s\n", title );
|
||||
}
|
||||
|
||||
bool SurfaceGL::recreateContext( void )
|
||||
{
|
||||
Msg( "recreate context\n" );
|
||||
return Surface::recreateContext();
|
||||
}
|
||||
|
||||
void SurfaceGL::createPopup(Panel* embeddedPanel)
|
||||
{
|
||||
}
|
||||
virtual bool setFullscreenMode( int wide, int tall, int bpp )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void SurfaceGL::pushMakeCurrent( Panel* panel, bool useInsets )
|
||||
{
|
||||
Surface::pushMakeCurrent( panel, useInsets );
|
||||
}
|
||||
virtual void setWindowedMode( void )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::popMakeCurrent( Panel* panel )
|
||||
{
|
||||
Surface::popMakeCurrent( panel );
|
||||
}
|
||||
virtual void setAsTopMost( bool state )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::makeCurrent( void )
|
||||
{
|
||||
Msg( "make current\n" );
|
||||
}
|
||||
virtual int getModeInfoCount( void )
|
||||
{
|
||||
Msg( "getModeInfoCount()\n" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SurfaceGL::swapBuffers( void )
|
||||
{
|
||||
Surface::swapBuffers();
|
||||
}
|
||||
virtual void createPopup( Panel* embeddedPanel )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::setColor( int r, int g, int b )
|
||||
{
|
||||
}
|
||||
virtual bool hasFocus( void )
|
||||
{
|
||||
// Msg( "hasFocus()\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
void SurfaceGL::filledRect( int x0, int y0, int x1, int y1 )
|
||||
{
|
||||
}
|
||||
virtual bool isWithin( int x, int y )
|
||||
{
|
||||
// Msg( "isWithin()\n" );
|
||||
return false;
|
||||
}
|
||||
protected:
|
||||
virtual int createNewTextureID( void )
|
||||
{
|
||||
Msg( "createNewTextureID()\n" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SurfaceGL::outlinedRect( int x0, int y0, int x1, int y1 )
|
||||
{
|
||||
}
|
||||
virtual void drawSetColor( int r, int g, int b, int a )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::setTextFont( Font* font )
|
||||
{
|
||||
}
|
||||
virtual void drawFilledRect( int x0, int y0, int x1, int y1 )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::setTextColor( int r, int g, int b )
|
||||
{
|
||||
}
|
||||
virtual void drawOutlinedRect( int x0,int y0,int x1,int y1 )
|
||||
{
|
||||
}
|
||||
|
||||
virtual void drawSetTextFont( Font *font )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::setDrawPos( int x, int y )
|
||||
{
|
||||
}
|
||||
virtual void drawSetTextColor( int r, int g, int b, int a )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::printText( const char *str, int strlen )
|
||||
{
|
||||
Msg( "Con_Printf( %s )\n", str );
|
||||
}
|
||||
virtual void drawSetTextPos( int x, int y )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::setTextureRGBA( int id, const char *rgba, int wide, int tall )
|
||||
{
|
||||
Msg( "SetTexture( %i )\n", id );
|
||||
}
|
||||
virtual void drawPrintText( const char* text, int textLen )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::setTexture( int id )
|
||||
{
|
||||
Msg( "SetTexture( %i )\n", id );
|
||||
}
|
||||
virtual void drawSetTextureRGBA( int id, const char* rgba, int wide, int tall )
|
||||
{
|
||||
Msg( "drawSetTextureRGBA()\n" );
|
||||
}
|
||||
|
||||
virtual void drawSetTexture( int id )
|
||||
{
|
||||
Msg( "drawSetTexture()\n" );
|
||||
}
|
||||
|
||||
virtual void drawTexturedRect( int x0, int y0, int x1, int y1 )
|
||||
{
|
||||
}
|
||||
|
||||
void SurfaceGL::texturedRect( int x0, int y0, int x1, int y1 )
|
||||
{
|
||||
}
|
||||
virtual void invalidate( Panel *panel )
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool createPlat()
|
||||
{
|
||||
Msg( "createPlat()\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool recreateContext()
|
||||
{
|
||||
Msg( "recreateContext()\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual void enableMouseCapture(bool state)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void setCursor(Cursor* cursor)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void swapBuffers()
|
||||
{
|
||||
Msg( "swapBuffers()\n" );
|
||||
}
|
||||
|
||||
virtual void pushMakeCurrent(Panel* panel,bool useInsets)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void popMakeCurrent(Panel* panel)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void applyChanges( void )
|
||||
{
|
||||
}
|
||||
protected:
|
||||
friend class App;
|
||||
friend class Panel;
|
||||
};
|
||||
|
||||
class CEngineApp : public App
|
||||
{
|
||||
|
@ -109,13 +172,11 @@ public:
|
|||
virtual void setCursorPos( int x, int y )
|
||||
{
|
||||
App::setCursorPos( x, y );
|
||||
Msg( "setCursorPos: %i %i\n", x, y );
|
||||
}
|
||||
|
||||
virtual void getCursorPos( int &x,int &y )
|
||||
{
|
||||
App::getCursorPos( x, y );
|
||||
Msg( "getCursorPos: %i %i\n", x, y );
|
||||
}
|
||||
virtual App* getApp( void )
|
||||
{
|
||||
|
@ -124,7 +185,7 @@ public:
|
|||
};
|
||||
|
||||
RECT window_rect;
|
||||
SurfaceGL *surface = NULL;
|
||||
CEngineSurface *surface = NULL;
|
||||
CEngineApp *pApp = NULL;
|
||||
Panel *rootpanel = NULL;
|
||||
#define WND_BORDER 3
|
||||
|
@ -144,25 +205,23 @@ void VGui_Startup( void )
|
|||
if( rootpanel )
|
||||
{
|
||||
// rootpanel->reset();
|
||||
// rootpanel->setSize( menu.globals->scrWidth, menu.globals->scrHeight );
|
||||
rootpanel->setSize( menu.globals->scrWidth, menu.globals->scrHeight );
|
||||
return;
|
||||
}
|
||||
Scheme *pScheme = new Scheme();
|
||||
|
||||
pApp = new CEngineApp( true );
|
||||
pApp->setScheme( pScheme );
|
||||
|
||||
|
||||
rootpanel = new Panel();
|
||||
rootpanel->setPaintEnabled( true );
|
||||
rootpanel->setPaintEnabled( false );
|
||||
rootpanel->setPaintBorderEnabled( false );
|
||||
rootpanel->setPaintBackgroundEnabled( true );
|
||||
rootpanel->setVisible( true );
|
||||
rootpanel->setEnabled( true );
|
||||
rootpanel->setEnabled( false );
|
||||
rootpanel->setCursor( new Cursor( Cursor::dc_none ));
|
||||
|
||||
VGui_SetBounds();
|
||||
|
||||
surface = new SurfaceGL( rootpanel );
|
||||
surface = new CEngineSurface( rootpanel );
|
||||
|
||||
ASSERT( rootpanel->getApp() != NULL );
|
||||
ASSERT( rootpanel->getSurfaceBase() != NULL );
|
||||
|
@ -184,7 +243,7 @@ void VGui_Paint( void )
|
|||
if( !rootpanel ) return;
|
||||
|
||||
pApp->externalTick();
|
||||
// rootpanel->paintBackground();
|
||||
// rootpanel->repaint();
|
||||
}
|
||||
|
||||
void VGui_ViewportPaintBackground( int extents[4] )
|
||||
|
@ -195,11 +254,8 @@ void VGui_ViewportPaintBackground( int extents[4] )
|
|||
Panel *pVPanel = surface->getPanel();
|
||||
if( !pVPanel ) return;
|
||||
|
||||
rootpanel->setBounds( extents[0], extents[1], extents[2], extents[3] );
|
||||
rootpanel->setBounds( extents[0], extents[1], menu.globals->scrWidth, menu.globals->scrHeight );
|
||||
// rootpanel->repaint();
|
||||
|
||||
// paint everything
|
||||
rootpanel->paintTraverse();
|
||||
}
|
||||
|
||||
void *VGui_GetPanel( void )
|
||||
|
|
|
@ -71,6 +71,7 @@ typedef struct ui_enginefuncs_s
|
|||
void (*pfnDrawLogo)( const char *filename, float x, float y, float width, float height );
|
||||
int (*pfnGetLogoWidth)( void );
|
||||
int (*pfnGetLogoHeight)( void );
|
||||
float (*pfnGetLogoLength)( void );
|
||||
|
||||
// text message system
|
||||
void (*pfnDrawCharacter)( int x, int y, int width, int height, int ch, int ulRGBA, HIMAGE hFont );
|
||||
|
|
|
@ -375,6 +375,8 @@ extern convar_t *sv_unlagpush;
|
|||
extern convar_t *sv_unlagsamples;
|
||||
extern convar_t *sv_allow_upload;
|
||||
extern convar_t *sv_allow_download;
|
||||
extern convar_t *sv_allow_studio_scaling;
|
||||
extern convar_t *sv_allow_studio_attachment_angles;
|
||||
extern convar_t *sv_send_resources;
|
||||
extern convar_t *sv_send_logos;
|
||||
extern convar_t *sv_sendvelocity;
|
||||
|
|
|
@ -82,19 +82,13 @@ void SV_SetMinMaxSize( edict_t *e, const float *min, const float *max )
|
|||
return;
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
// FIXME: enable this when other server parts will be done and tested
|
||||
if( e->v.scale > 0.0f && e->v.scale != 1.0f )
|
||||
|
||||
if( sv_allow_studio_scaling->integer && e->v.scale != 0.0f )
|
||||
{
|
||||
switch( Mod_GetType( e->v.modelindex ))
|
||||
{
|
||||
case mod_sprite:
|
||||
case mod_studio:
|
||||
if( Mod_GetType( e->v.modelindex ) == mod_studio )
|
||||
scale = e->v.scale;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
VectorScale( min, scale, e->v.mins );
|
||||
VectorScale( max, scale, e->v.maxs );
|
||||
VectorSubtract( max, min, e->v.size );
|
||||
|
|
|
@ -50,6 +50,8 @@ convar_t *sv_reconnect_limit; // minimum seconds between connect messages
|
|||
convar_t *sv_failuretime;
|
||||
convar_t *sv_allow_upload;
|
||||
convar_t *sv_allow_download;
|
||||
convar_t *sv_allow_studio_scaling;
|
||||
convar_t *sv_allow_studio_attachment_angles;
|
||||
convar_t *sv_send_resources;
|
||||
convar_t *sv_send_logos;
|
||||
convar_t *sv_sendvelocity;
|
||||
|
@ -626,6 +628,8 @@ void SV_Init( void )
|
|||
zombietime = Cvar_Get( "zombietime", "2", CVAR_SERVERNOTIFY, "timeout for clients-zombie (who died but not respawned)" );
|
||||
sv_pausable = Cvar_Get( "pausable", "1", CVAR_SERVERNOTIFY, "allow players to pause or not" );
|
||||
allow_download = Cvar_Get( "allow_download", "0", CVAR_ARCHIVE, "allow download resources" );
|
||||
sv_allow_studio_scaling = Cvar_Get( "sv_allow_studio_scaling", "0", CVAR_ARCHIVE, "allow to scale physics hull for studio models (visible hull scaled on the client-side)" );
|
||||
sv_allow_studio_attachment_angles = Cvar_Get( "sv_allow_studio_attachment_angles", "0", CVAR_ARCHIVE, "enable calc angles for attachment points (on studio models)" );
|
||||
sv_wallbounce = Cvar_Get( "sv_wallbounce", "1.0", CVAR_PHYSICINFO, "bounce factor for client with MOVETYPE_BOUNCE" );
|
||||
sv_spectatormaxspeed = Cvar_Get( "sv_spectatormaxspeed", "500", CVAR_PHYSICINFO, "spectator maxspeed" );
|
||||
sv_waterfriction = Cvar_Get( "sv_waterfriction", "1", CVAR_PHYSICINFO, "how fast you slow down in water" );
|
||||
|
|
|
@ -91,7 +91,7 @@ static void SV_StudioSetUpTransform( edict_t *ent )
|
|||
VectorCopy( ent->v.angles, ang );
|
||||
ang[PITCH] = -ang[PITCH]; // stupid Half-Life bug
|
||||
|
||||
if( ent->v.scale != 0.0f ) scale = ent->v.scale;
|
||||
if( ent->v.scale != 0.0f && sv_allow_studio_scaling->integer ) scale = ent->v.scale;
|
||||
Matrix3x4_CreateFromEntity( sv_studiomatrix, ang, ent->v.origin, scale );
|
||||
}
|
||||
|
||||
|
@ -955,13 +955,17 @@ void SV_StudioGetAttachment( edict_t *e, int iAttachment, float *org, float *ang
|
|||
|
||||
// compute pos and angles
|
||||
Matrix3x4_VectorTransform( sv_studiobones[pAtt[iAttachment].bone], pAtt[iAttachment].org, localOrg );
|
||||
Matrix3x4_OriginFromMatrix( sv_studiobones[pAtt[iAttachment].bone], bonepos );
|
||||
VectorSubtract( localOrg, bonepos, forward ); // make forward
|
||||
VectorNormalizeFast( forward );
|
||||
VectorAngles( forward, localAng );
|
||||
|
||||
if( org ) VectorCopy( localOrg, org );
|
||||
if( ang ) VectorCopy( localAng, ang );
|
||||
|
||||
if( sv_allow_studio_attachment_angles->integer )
|
||||
{
|
||||
Matrix3x4_OriginFromMatrix( sv_studiobones[pAtt[iAttachment].bone], bonepos );
|
||||
VectorSubtract( localOrg, bonepos, forward ); // make forward
|
||||
VectorNormalizeFast( forward );
|
||||
VectorAngles( forward, localAng );
|
||||
|
||||
if( ang ) VectorCopy( localAng, ang );
|
||||
}
|
||||
}
|
||||
|
||||
void SV_GetBonePosition( edict_t *e, int iBone, float *org, float *ang )
|
||||
|
|
|
@ -112,16 +112,16 @@ hull_t *SV_HullForEntity( edict_t *ent, int hullNumber, vec3_t mins, vec3_t maxs
|
|||
vec3_t hullmins, hullmaxs;
|
||||
vec3_t size;
|
||||
|
||||
model = CM_ClipHandleToModel( ent->v.modelindex );
|
||||
|
||||
// decide which clipping hull to use, based on the size
|
||||
if( ent->v.solid == SOLID_BSP || ent->v.skin == CONTENTS_LADDER )
|
||||
if( model && ( ent->v.solid == SOLID_BSP || ent->v.skin == CONTENTS_LADDER ))
|
||||
{
|
||||
// explicit hulls in the BSP model
|
||||
if( ent->v.movetype != MOVETYPE_PUSH )
|
||||
Host_Error( "SOLID_BSP without MOVETYPE_PUSH\n" );
|
||||
|
||||
model = CM_ClipHandleToModel( ent->v.modelindex );
|
||||
|
||||
if( !model || model->type != mod_brush )
|
||||
if( model->type != mod_brush )
|
||||
Host_Error( "MOVETYPE_PUSH with a non bsp model\n" );
|
||||
|
||||
VectorSubtract( maxs, mins, size );
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#define PRECACHE_LOGO( x ) (*g_engfuncs.pfnDrawLogo)( x, 0, 0, 0, 0 )
|
||||
#define GetLogoWidth (*g_engfuncs.pfnGetLogoWidth)
|
||||
#define GetLogoHeight (*g_engfuncs.pfnGetLogoHeight)
|
||||
#define GetLogoLength (*g_engfuncs.pfnGetLogoLength)
|
||||
|
||||
inline HIMAGE PIC_Load( const char *szPicName )
|
||||
{
|
||||
|
|
|
@ -103,14 +103,15 @@ static void UI_Background_Ownerdraw( void *self )
|
|||
|
||||
UI_DrawPic( item->x, item->y, item->width, item->height, uiColorWhite, ((menuBitmap_s *)self)->pic );
|
||||
|
||||
if( GetLogoLength() <= 0.1 || GetLogoWidth() <= 32 )
|
||||
return; // don't draw stub logo (GoldSrc rules)
|
||||
|
||||
float logoWidth, logoHeight, logoPosY;
|
||||
float scaleX, scaleY;
|
||||
|
||||
scaleX = ScreenWidth / 640.0f;
|
||||
scaleY = ScreenHeight / 480.0f;
|
||||
|
||||
if( GetLogoWidth() <= 32 ) return; // don't draw stub logo
|
||||
|
||||
logoWidth = GetLogoWidth() * scaleX;
|
||||
logoHeight = GetLogoHeight() * scaleY;
|
||||
logoPosY = 70 * scaleY; // 70 it's empirically determined value (magic number)
|
||||
|
|
Reference in New Issue