split up NOMEDIA into individual defines. The Wastes should now be able to do music now.
tweak rtlights a bit, to not bug out on The Waste's decals. use compatibility glsl in order to get ftransform working for consistent vertex coords (still uses core if there's no fixed function stuff). this fixes z-fighting issues with rtlights. Rework punchangles for greater compatibility. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5059 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
e7c1f9a490
commit
5b0843e0c7
42 changed files with 990 additions and 772 deletions
|
@ -23,7 +23,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "quakedef.h"
|
||||
#include "winquake.h"
|
||||
|
||||
#ifdef WINRT
|
||||
#ifndef HAVE_CDPLAYER
|
||||
//nothing
|
||||
#elif defined(WINRT)
|
||||
#include "cd_null.c"
|
||||
#else
|
||||
|
||||
|
@ -54,7 +56,7 @@ int CDAudio_GetAudioDiskInfo(void)
|
|||
|
||||
mciStatusParms.dwItem = MCI_STATUS_READY;
|
||||
mciStatusParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("CDAudio: drive ready test - get status failed\n");
|
||||
|
@ -68,7 +70,7 @@ int CDAudio_GetAudioDiskInfo(void)
|
|||
|
||||
mciStatusParms.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
|
||||
mciStatusParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("CDAudio: get tracks - status failed\n");
|
||||
|
@ -86,7 +88,7 @@ qboolean CDAudio_Startup(void)
|
|||
{
|
||||
DWORD dwReturn;
|
||||
static MCI_OPEN_PARMSA mciOpenParms;
|
||||
static MCI_SET_PARMS mciSetParms;
|
||||
static MCI_SET_PARMS mciSetParms;
|
||||
|
||||
if (initializefailed)
|
||||
return false;
|
||||
|
@ -105,17 +107,17 @@ qboolean CDAudio_Startup(void)
|
|||
}
|
||||
wDeviceID = mciOpenParms.wDeviceID;
|
||||
|
||||
// Set the time format to frames. vista+ simply cannot come with converting to/from seconds, or something (notifies don't work, status stays playing, position stops updating at about 3 frames from the end of the track).
|
||||
mciSetParms.dwTimeFormat = MCI_FORMAT_MSF;
|
||||
// Set the time format to frames. vista+ simply cannot come with converting to/from seconds, or something (notifies don't work, status stays playing, position stops updating at about 3 frames from the end of the track).
|
||||
mciSetParms.dwTimeFormat = MCI_FORMAT_MSF;
|
||||
mciSetParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD_PTR)(LPVOID) &mciSetParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_Printf("MCI_SET_TIME_FORMAT failed (%i)\n", (int)dwReturn);
|
||||
mciSendCommand(wDeviceID, MCI_CLOSE, 0, (DWORD_PTR)NULL);
|
||||
mciSendCommand(wDeviceID, MCI_CLOSE, 0, (DWORD_PTR)NULL);
|
||||
initializefailed = true;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
|
||||
|
@ -143,7 +145,7 @@ void CDAudio_Eject(void)
|
|||
DWORD dwReturn;
|
||||
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD_PTR)NULL);
|
||||
if (dwReturn)
|
||||
if (dwReturn)
|
||||
Con_DPrintf("MCI_SET_DOOR_OPEN failed (%i)\n", (int)dwReturn);
|
||||
}
|
||||
|
||||
|
@ -152,7 +154,7 @@ void CDAudio_CloseDoor(void)
|
|||
DWORD dwReturn;
|
||||
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD_PTR)NULL);
|
||||
if (dwReturn)
|
||||
if (dwReturn)
|
||||
Con_DPrintf("MCI_SET_DOOR_CLOSED failed (%i)\n", (int)dwReturn);
|
||||
}
|
||||
|
||||
|
@ -187,7 +189,7 @@ DWORD FramesToMSF(DWORD in)
|
|||
void CDAudio_Play(int track)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
static MCI_PLAY_PARMS mciPlayParms;
|
||||
static MCI_PLAY_PARMS mciPlayParms;
|
||||
static MCI_STATUS_PARMS mciStatusParms;
|
||||
DWORD trackstartposition;
|
||||
|
||||
|
@ -201,7 +203,7 @@ void CDAudio_Play(int track)
|
|||
mciStatusParms.dwItem = MCI_CDA_STATUS_TYPE_TRACK;
|
||||
mciStatusParms.dwTrack = track;
|
||||
mciStatusParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("MCI_STATUS failed (%i)\n", (int)dwReturn);
|
||||
|
@ -217,7 +219,7 @@ void CDAudio_Play(int track)
|
|||
mciStatusParms.dwItem = MCI_STATUS_POSITION;
|
||||
mciStatusParms.dwTrack = track;
|
||||
mciStatusParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("MCI_STATUS failed (%i)\n", (int)dwReturn);
|
||||
|
@ -229,7 +231,7 @@ void CDAudio_Play(int track)
|
|||
mciStatusParms.dwItem = MCI_STATUS_LENGTH;
|
||||
mciStatusParms.dwTrack = track;
|
||||
mciStatusParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD_PTR) (LPVOID) &mciStatusParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("MCI_STATUS failed (%i)\n", (int)dwReturn);
|
||||
|
@ -237,10 +239,10 @@ void CDAudio_Play(int track)
|
|||
}
|
||||
|
||||
//set up to play from start to start+length
|
||||
mciPlayParms.dwFrom = trackstartposition;
|
||||
mciPlayParms.dwFrom = trackstartposition;
|
||||
mciPlayParms.dwTo = resumeend = FramesToMSF(MSFToFrames(trackstartposition) + MSFToFrames(mciStatusParms.dwReturn) - 8); //-8 to avoid microsoft's potential fuck ups
|
||||
mciPlayParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM | MCI_TO, (DWORD_PTR)(LPVOID) &mciPlayParms);
|
||||
mciPlayParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM | MCI_TO, (DWORD_PTR)(LPVOID) &mciPlayParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("CDAudio: MCI_PLAY failed (%i)\n", (int)dwReturn);
|
||||
|
@ -263,7 +265,7 @@ void CDAudio_Stop(void)
|
|||
pollneeded = false;
|
||||
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_STOP, 0, (DWORD_PTR)NULL);
|
||||
if (dwReturn)
|
||||
if (dwReturn)
|
||||
Con_DPrintf("MCI_STOP failed (%i)\n", (int)dwReturn);
|
||||
}
|
||||
|
||||
|
@ -278,7 +280,7 @@ void CDAudio_Pause(void)
|
|||
|
||||
mciGenericParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_PAUSE, 0, (DWORD_PTR)(LPVOID) &mciGenericParms);
|
||||
if (dwReturn)
|
||||
if (dwReturn)
|
||||
Con_DPrintf("MCI_PAUSE failed (%i)\n", (int)dwReturn);
|
||||
|
||||
pollneeded = false;
|
||||
|
@ -288,15 +290,15 @@ void CDAudio_Pause(void)
|
|||
void CDAudio_Resume(void)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
static MCI_PLAY_PARMS mciPlayParms;
|
||||
static MCI_PLAY_PARMS mciPlayParms;
|
||||
|
||||
if (!bgmvolume.value)
|
||||
return;
|
||||
|
||||
mciPlayParms.dwFrom = resumeend;
|
||||
mciPlayParms.dwTo = resumeend;
|
||||
mciPlayParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_TO | MCI_NOTIFY, (DWORD_PTR)(LPVOID) &mciPlayParms);
|
||||
mciPlayParms.dwFrom = resumeend;
|
||||
mciPlayParms.dwTo = resumeend;
|
||||
mciPlayParms.dwCallback = (DWORD_PTR)mainwindow;
|
||||
dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_TO | MCI_NOTIFY, (DWORD_PTR)(LPVOID) &mciPlayParms);
|
||||
if (dwReturn)
|
||||
{
|
||||
Con_DPrintf("CDAudio: MCI_PLAY failed (%i)\n", (int)dwReturn);
|
||||
|
|
|
@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CDPLAYER
|
||||
void CDAudio_Init(void);
|
||||
qboolean CDAudio_Startup(void); //called when the cd isn't currently valid. returns if its valid or not.
|
||||
int CDAudio_GetAudioDiskInfo(void);//returns number of tracks available, or 0 if the cd is not valid.
|
||||
|
@ -29,7 +30,11 @@ void CDAudio_Eject(void);
|
|||
void CDAudio_CloseDoor(void);
|
||||
void CDAudio_Shutdown(void);
|
||||
void CDAudio_Update(void);
|
||||
|
||||
void CDAudio_TrackEnded(void);
|
||||
|
||||
#else
|
||||
#define CDAudio_Update()
|
||||
#define CDAudio_Init()
|
||||
#define CDAudio_Shutdown()
|
||||
#define CDAudio_Pause()
|
||||
#define CDAudio_Resume()
|
||||
#endif
|
||||
|
||||
|
|
|
@ -5043,7 +5043,7 @@ double Host_Frame (double time)
|
|||
double idlesec = 1.0 / cl_idlefps.value;
|
||||
if (idlesec > 0.1)
|
||||
idlesec = 0.1; // limit to at least 10 fps
|
||||
#if !defined(NOMEDIA)
|
||||
#ifdef HAVE_MEDIA_ENCODER
|
||||
if (Media_Capturing())
|
||||
idlesec = 0;
|
||||
#endif
|
||||
|
@ -5101,7 +5101,7 @@ double Host_Frame (double time)
|
|||
maxfps = 10;
|
||||
|
||||
if (maxfps > 0
|
||||
#if !defined(NOMEDIA)
|
||||
#ifdef HAVE_MEDIA_ENCODER
|
||||
&& Media_Capturing() != 2
|
||||
#endif
|
||||
)
|
||||
|
@ -5416,7 +5416,7 @@ void CL_StartCinematicOrMenu(void)
|
|||
}
|
||||
|
||||
//and any startup cinematics
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
#ifndef CLIENTONLY
|
||||
if (!sv.state)
|
||||
#endif
|
||||
|
@ -5438,7 +5438,7 @@ void CL_StartCinematicOrMenu(void)
|
|||
Media_PlayFilm("video/idlog.cin", true);
|
||||
|
||||
#ifndef NOLEGACY
|
||||
//and for fun:
|
||||
//and for fun (blame spirit):
|
||||
if (COM_FCheckExists("data/local/video/New_Bliz640x480.bik"))
|
||||
Media_PlayFilm("av:data/local/video/New_Bliz640x480.bik", true);
|
||||
if (COM_FCheckExists("data/local/video/BlizNorth640x480.bik"))
|
||||
|
|
|
@ -26,6 +26,7 @@ void CL_GetNumberedEntityInfo (int num, float *org, float *ang);
|
|||
void CLDP_ParseDarkPlaces5Entities(void);
|
||||
static void CL_SetStatNumeric (int pnum, int stat, int ivalue, float fvalue);
|
||||
#define CL_SetStatInt(pnum,stat,ival) do{int thevalue=ival; CL_SetStatNumeric(pnum,stat,thevalue,thevalue);}while(0)
|
||||
#define CL_SetStatFloat(pnum,stat,fval) do{float thevalue=fval; CL_SetStatNumeric(pnum,stat,thevalue,thevalue);}while(0)
|
||||
static qboolean CL_CheckModelResources (char *name);
|
||||
#ifdef NQPROT
|
||||
static char *CLNQ_ParseProQuakeMessage (char *s);
|
||||
|
@ -1617,7 +1618,7 @@ void CL_RequestNextDownload (void)
|
|||
if (!cl.worldmodel || cl.worldmodel->loadstate != MLS_LOADED)
|
||||
{
|
||||
Con_Printf("\n\n-------------\n" CON_ERROR "Couldn't download \"%s\" - cannot fully connect\n", cl.worldmodel?cl.worldmodel->name:"unknown");
|
||||
#if !defined(NOMEDIA)
|
||||
#ifdef HAVE_MEDIA_ENCODER
|
||||
if (cls.demoplayback && Media_Capturing())
|
||||
{
|
||||
Con_Printf(CON_ERROR "Aborting capture\n");
|
||||
|
@ -3730,7 +3731,8 @@ Con_DPrintf ("CL_SignonReply: %i\n", cls.signon);
|
|||
void CLNQ_ParseClientdata (void)
|
||||
{
|
||||
int i;
|
||||
player_state_t *pl = &cl.inframes[cl.validsequence&UPDATE_MASK].playerstate[cl.playerview[0].playernum];
|
||||
const int seat = 0;
|
||||
player_state_t *pl = &cl.inframes[cl.validsequence&UPDATE_MASK].playerstate[cl.playerview[seat].playernum];
|
||||
|
||||
unsigned int bits;
|
||||
|
||||
|
@ -3754,16 +3756,14 @@ void CLNQ_ParseClientdata (void)
|
|||
for (i=0 ; i<3 ; i++)
|
||||
{
|
||||
if (bits & (SU_PUNCH1<<i) )
|
||||
/*cl.punchangle[i] =*/ CPNQ_IS_DP?MSG_ReadAngle16():MSG_ReadChar();
|
||||
// else
|
||||
// cl.punchangle[i] = 0;
|
||||
CL_SetStatFloat(seat, STAT_PUNCHANGLE_X+i, CPNQ_IS_DP?MSG_ReadAngle16():MSG_ReadChar());
|
||||
else
|
||||
CL_SetStatFloat(seat, STAT_PUNCHANGLE_X+i, 0);
|
||||
|
||||
if (CPNQ_IS_DP && bits & (DPSU_PUNCHVEC1<<i))
|
||||
{
|
||||
/*cl.punchvector[i] =*/ MSG_ReadCoord();
|
||||
}
|
||||
// else
|
||||
// cl.punchvector[i] = 0;
|
||||
CL_SetStatFloat(seat, STAT_PUNCHVECTOR_X+i, MSG_ReadCoord());
|
||||
else
|
||||
CL_SetStatFloat(seat, STAT_PUNCHVECTOR_X+i, 0);
|
||||
|
||||
if (bits & (SU_VELOCITY1<<i))
|
||||
{
|
||||
|
@ -5861,7 +5861,7 @@ void CL_PrintChat(player_info_t *plr, char *msg, int plrflags)
|
|||
else
|
||||
Q_strncatz(fullchatmessage, "\1", sizeof(fullchatmessage));
|
||||
|
||||
#if defined(_WIN32) && !defined(NOMEDIA) && !defined(WINRT)
|
||||
#if defined(HAVE_SPEECHTOTEXT)
|
||||
TTS_SayChatString(&msg);
|
||||
#endif
|
||||
|
||||
|
@ -6889,10 +6889,10 @@ void CLQW_ParseServerMessage (void)
|
|||
break;
|
||||
|
||||
case svc_smallkick:
|
||||
cl.playerview[destsplit].punchangle = -2;
|
||||
cl.playerview[destsplit].punchangle_cl = -2;
|
||||
break;
|
||||
case svc_bigkick:
|
||||
cl.playerview[destsplit].punchangle = -4;
|
||||
cl.playerview[destsplit].punchangle_cl = -4;
|
||||
break;
|
||||
|
||||
case svc_muzzleflash:
|
||||
|
@ -7662,10 +7662,7 @@ void CLNQ_ParseServerMessage (void)
|
|||
break;
|
||||
case svc_setpause:
|
||||
cl.paused = MSG_ReadByte ();
|
||||
if (cl.paused)
|
||||
CDAudio_Pause ();
|
||||
else
|
||||
CDAudio_Resume ();
|
||||
// Media_SetPauseTrack(!!cl.paused);
|
||||
break;
|
||||
|
||||
case svc_spawnstaticsound:
|
||||
|
@ -7775,6 +7772,15 @@ void CLNQ_ParseServerMessage (void)
|
|||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.num_entities=0;
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.servertime = cl.gametime;
|
||||
}
|
||||
for (i = 0; i < cl.splitclients; i++)
|
||||
{
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.punchangle[i][0] = cl.playerview[i].statsf[STAT_PUNCHANGLE_X];
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.punchangle[i][1] = cl.playerview[i].statsf[STAT_PUNCHANGLE_Y];
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.punchangle[i][2] = cl.playerview[i].statsf[STAT_PUNCHANGLE_Z];
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.punchorigin[i][0] = cl.playerview[i].statsf[STAT_PUNCHVECTOR_X];
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.punchorigin[i][1] = cl.playerview[i].statsf[STAT_PUNCHVECTOR_Y];
|
||||
cl.inframes[cl.validsequence&UPDATE_MASK].packet_entities.punchorigin[i][2] = cl.playerview[i].statsf[STAT_PUNCHVECTOR_Z];
|
||||
}
|
||||
break;
|
||||
|
||||
case svc_updatename:
|
||||
|
|
|
@ -688,10 +688,10 @@ static qintptr_t VARGS Plug_GetNetworkInfo(void *offset, quintptr_t mask, const
|
|||
|
||||
if (has(capturing))
|
||||
{
|
||||
#ifdef NOMEDIA
|
||||
outptr->capturing = 0;
|
||||
#ifdef HAVE_MEDIA_ENCODER
|
||||
outptr->capturing = Media_Capturing();
|
||||
#else
|
||||
outptr->capturing = Media_Capturing();
|
||||
outptr->capturing = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -665,7 +665,10 @@ struct playerview_s
|
|||
float predicted_step;
|
||||
#endif
|
||||
|
||||
float punchangle; // temporary view kick from weapon firing
|
||||
//temporary view kick from weapon firing, angles+origins
|
||||
float punchangle_cl; // qw-style angles
|
||||
vec3_t punchangle_sv; // nq-style
|
||||
vec3_t punchorigin; // nq-style
|
||||
|
||||
float v_dmg_time; //various view knockbacks.
|
||||
float v_dmg_roll;
|
||||
|
@ -1578,6 +1581,9 @@ void SCR_StringToRGB (char *rgbstring, float *rgb, float rgbinputscale);
|
|||
struct model_s;
|
||||
void CL_AddVWeapModel(entity_t *player, struct model_s *model);
|
||||
|
||||
typedef struct cin_s cin_t;
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
|
||||
/*q2 cinematics*/
|
||||
struct cinematics_s;
|
||||
void CIN_StopCinematic (struct cinematics_s *cin);
|
||||
|
@ -1594,26 +1600,13 @@ typedef enum
|
|||
CINSTATE_ENDED,
|
||||
CINSTATE_FLUSHED, //video will restart from beginning
|
||||
} cinstates_t;
|
||||
typedef struct cin_s cin_t;
|
||||
#ifdef NOMEDIA
|
||||
#define Media_Playing() false
|
||||
#define Media_Init() (void)0
|
||||
#define Media_PlayingFullScreen() false
|
||||
#define Media_PlayFilm(n,e) false
|
||||
#define Media_StopFilm(a) (void)true
|
||||
#else
|
||||
/*media playing system*/
|
||||
qboolean Media_PlayingFullScreen(void);
|
||||
void Media_Init(void);
|
||||
qboolean Media_PlayFilm(char *name, qboolean enqueue);
|
||||
qboolean Media_StopFilm(qboolean all);
|
||||
struct cin_s *Media_StartCin(char *name);
|
||||
texid_tf Media_UpdateForShader(cin_t *cin);
|
||||
void Media_ShutdownCin(cin_t *cin);
|
||||
#endif
|
||||
qboolean Media_NamedTrack(const char *initialtrack, const char *looptrack); //new background music interface
|
||||
void Media_NumberedTrack(unsigned int initialtrack, unsigned int looptrack); //legacy cd interface for protocols that only support numbered tracks.
|
||||
void Media_EndedTrack(void); //cd is no longer running, media code needs to pick a new track (cd track or faketrack)
|
||||
|
||||
//these accept NULL for cin to mean the current fullscreen video
|
||||
void Media_Send_Command(cin_t *cin, const char *command);
|
||||
|
@ -1626,6 +1619,18 @@ void Media_SetState(cin_t *cin, cinstates_t newstate);
|
|||
cinstates_t Media_GetState(cin_t *cin);
|
||||
const char *Media_Send_GetProperty(cin_t *cin, const char *key);
|
||||
|
||||
#else
|
||||
#define Media_Playing() false
|
||||
#define Media_PlayingFullScreen() false
|
||||
#define Media_PlayFilm(n,e) false
|
||||
#define Media_StopFilm(a) (void)true
|
||||
#endif
|
||||
|
||||
void Media_Init(void);
|
||||
qboolean Media_NamedTrack(const char *initialtrack, const char *looptrack); //new background music interface
|
||||
void Media_NumberedTrack(unsigned int initialtrack, unsigned int looptrack); //legacy cd interface for protocols that only support numbered tracks.
|
||||
void Media_EndedTrack(void); //cd is no longer running, media code needs to pick a new track (cd track or faketrack)
|
||||
|
||||
void MVD_Interpolate(void);
|
||||
|
||||
int Stats_GetKills(int playernum);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include "quakedef.h"
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
|
|
@ -875,7 +875,7 @@ void Con_PrintCon (console_t *con, const char *txt, unsigned int parseflags)
|
|||
if (parseflags & PFS_NONOTIFY)
|
||||
con->current->flags |= CONL_NONOTIFY;
|
||||
|
||||
#if defined(_WIN32) && !defined(NOMEDIA) && !defined(WINRT)
|
||||
#if defined(HAVE_SPEECHTOTEXT)
|
||||
if (con->current)
|
||||
TTS_SayConString((conchar_t*)(con->current+1));
|
||||
#endif
|
||||
|
@ -2321,7 +2321,7 @@ void Con_DrawConsole (int lines, qboolean noback)
|
|||
if (shader)
|
||||
{
|
||||
int top = 8;
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
cin_t *cin = R_ShaderGetCinematic(shader);
|
||||
if (cin)
|
||||
{
|
||||
|
|
|
@ -424,7 +424,7 @@ int Con_Navigate(console_t *con, char *line)
|
|||
{
|
||||
if (con->backshader)
|
||||
{
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
cin_t *cin = R_ShaderGetCinematic(con->backshader);
|
||||
if (cin)
|
||||
{
|
||||
|
@ -1034,7 +1034,7 @@ void Key_ConsoleRelease(console_t *con, int key, int unicode)
|
|||
// if (con->buttonsdown == CB_MOVE) //window title(move)
|
||||
con->buttonsdown = CB_NONE;
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (con->backshader)
|
||||
{
|
||||
cin_t *cin = R_ShaderGetCinematic(con->backshader);
|
||||
|
@ -1513,7 +1513,7 @@ qboolean Key_Console (console_t *con, unsigned int unicode, int key)
|
|||
//console does not have any way to accept input, so don't try giving it any.
|
||||
if (!con->linebuffered)
|
||||
{
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (con->backshader)
|
||||
{
|
||||
cin_t *cin = R_ShaderGetCinematic(con->backshader);
|
||||
|
@ -2497,7 +2497,7 @@ void Key_Event (unsigned int devid, int key, unsigned int unicode, qboolean down
|
|||
if (Key_Dest_Has(kdm_gmenu))
|
||||
MP_Keyup (key, unicode, devid);
|
||||
#endif
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (Media_PlayingFullScreen())
|
||||
Media_Send_KeyEvent(NULL, key, unicode, down?0:1);
|
||||
#endif
|
||||
|
@ -2556,7 +2556,7 @@ void Key_Event (unsigned int devid, int key, unsigned int unicode, qboolean down
|
|||
Key_Dest_Remove(kdm_cwindows);
|
||||
|
||||
}
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (Media_PlayingFullScreen())
|
||||
{
|
||||
Media_Send_KeyEvent(NULL, key, unicode, down?0:1);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1038,6 +1038,7 @@ void M_Menu_Demos_f (void)
|
|||
M_Demo_Reselect(info, info->fs->selname);
|
||||
}
|
||||
|
||||
#ifdef HAVE_JUKEBOX
|
||||
void M_Menu_MediaFiles_f (void)
|
||||
{
|
||||
demomenu_t *info;
|
||||
|
@ -1054,10 +1055,11 @@ void M_Menu_MediaFiles_f (void)
|
|||
info->fs = &mediareenterloc;
|
||||
info->numext = 0;
|
||||
|
||||
#ifdef HAVE_JUKEBOX
|
||||
info->ext[info->numext] = ".m3u";
|
||||
info->command[info->numext] = "mediaplaylist";
|
||||
info->numext++;
|
||||
#if defined(_WIN32) || defined(FTE_TARGET_WEB)
|
||||
#if defined(AVAIL_MP3_ACM) || defined(FTE_TARGET_WEB)
|
||||
info->ext[info->numext] = ".mp3";
|
||||
info->command[info->numext] = "media_add";
|
||||
info->numext++;
|
||||
|
@ -1070,7 +1072,9 @@ void M_Menu_MediaFiles_f (void)
|
|||
info->command[info->numext] = "media_add";
|
||||
info->numext++;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
info->ext[info->numext] = ".roq";
|
||||
info->command[info->numext] = "playfilm";
|
||||
info->numext++;
|
||||
|
@ -1078,6 +1082,7 @@ void M_Menu_MediaFiles_f (void)
|
|||
info->ext[info->numext] = ".avi";
|
||||
info->command[info->numext] = "playfilm";
|
||||
info->numext++;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
MC_AddWhiteText(menu, 24, 170, 8, "Media List", false);
|
||||
|
@ -1093,3 +1098,4 @@ void M_Menu_MediaFiles_f (void)
|
|||
M_Demo_Reselect(info, info->fs->selname);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -1300,7 +1300,9 @@ void M_Init (void)
|
|||
#endif
|
||||
//demo menu is allowed to see outside of the quakedir. you can't replicate that in qc's sandbox.
|
||||
Cmd_AddCommand ("menu_demo", M_Menu_Demos_f);
|
||||
#ifdef HAVE_JUKEBOX
|
||||
Cmd_AddCommand ("menu_mediafiles", M_Menu_MediaFiles_f);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -439,7 +439,7 @@ void QCBUILTIN PF_cl_runningserver (pubprogfuncs_t *prinst, struct globalvars_s
|
|||
|
||||
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
|
||||
// #487 float(string name, string video="http:") gecko_create
|
||||
void QCBUILTIN PF_cs_media_create (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||
|
|
|
@ -6077,7 +6077,7 @@ static struct {
|
|||
//DP_QC_GETSURFACEPOINTATTRIBUTE
|
||||
{"getsurfacepointattribute",PF_getsurfacepointattribute, 486}, // #486vector(entity e, float s, float n, float a) getsurfacepointattribute
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
//DP_GECKO_SUPPORT
|
||||
{"gecko_create", PF_cs_media_create, 487}, // #487 float(string name)
|
||||
{"gecko_destroy", PF_cs_media_destroy, 488}, // #488 void(string name)
|
||||
|
|
|
@ -2202,7 +2202,7 @@ static struct {
|
|||
{"drawsetcliparea", PF_CL_drawsetcliparea, 458},
|
||||
{"drawresetcliparea", PF_CL_drawresetcliparea, 459},
|
||||
{"drawgetimagesize", PF_CL_drawgetimagesize, 460},
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
{"cin_open", PF_cs_media_create, 461},
|
||||
{"cin_close", PF_cs_media_destroy, 462},
|
||||
{"cin_setstate", PF_cs_media_setstate, 463},
|
||||
|
@ -2233,7 +2233,7 @@ static struct {
|
|||
{"strreplace", PF_strreplace, 484},
|
||||
{"strireplace", PF_strireplace, 485},
|
||||
//486
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
{"gecko_create", PF_cs_media_create, 487},
|
||||
{"gecko_destroy", PF_cs_media_destroy, 488},
|
||||
{"gecko_navigate", PF_cs_media_command, 489},
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include "quakedef.h"
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
|
||||
|
||||
static int VFS_GETC(vfsfile_t *fp)
|
||||
|
|
|
@ -1497,7 +1497,11 @@ void V_CalcRefdef (playerview_t *pv)
|
|||
|
||||
// set up the refresh position
|
||||
if (v_gunkick.value)
|
||||
r_refdef.viewangles[PITCH] += pv->punchangle*v_gunkick.value;
|
||||
{
|
||||
r_refdef.viewangles[PITCH] += pv->punchangle_cl*v_gunkick.value;
|
||||
VectorMA(r_refdef.viewangles, v_gunkick.value, pv->punchangle_sv, r_refdef.viewangles);
|
||||
VectorMA(r_refdef.vieworg, v_gunkick.value, pv->punchorigin, r_refdef.vieworg);
|
||||
}
|
||||
|
||||
|
||||
if (chase_active.ival && cls.allow_cheats) //cheat restriction might be lifted some time when any wallhacks are solved.
|
||||
|
@ -1551,17 +1555,17 @@ DropPunchAngle
|
|||
*/
|
||||
void DropPunchAngle (playerview_t *pv)
|
||||
{
|
||||
if (pv->punchangle < 0)
|
||||
if (pv->punchangle_cl < 0)
|
||||
{
|
||||
pv->punchangle += 10*host_frametime;
|
||||
if (pv->punchangle > 0)
|
||||
pv->punchangle = 0;
|
||||
pv->punchangle_cl += 10*host_frametime;
|
||||
if (pv->punchangle_cl > 0)
|
||||
pv->punchangle_cl = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pv->punchangle -= 10*host_frametime;
|
||||
if (pv->punchangle < 0)
|
||||
pv->punchangle = 0;
|
||||
pv->punchangle_cl -= 10*host_frametime;
|
||||
if (pv->punchangle_cl < 0)
|
||||
pv->punchangle_cl = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
BIN
engine/client/wastes.ico
Normal file
BIN
engine/client/wastes.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 766 B |
|
@ -69,9 +69,11 @@ extern unsigned int sys_parentheight;
|
|||
|
||||
#ifndef SERVERONLY
|
||||
|
||||
#ifdef HAVE_CDPLAYER
|
||||
#ifdef _WIN32
|
||||
LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
//shell32 stuff that doesn't exist in win95
|
||||
|
|
|
@ -162,11 +162,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define PACKAGE_Q1PAK
|
||||
#define PACKAGE_PK3
|
||||
#define AVAIL_GZDEC
|
||||
#define PACKAGE_WAD //quake's image wad support
|
||||
#define PACKAGE_TEXWAD //quake's image wad support
|
||||
|
||||
#ifdef GLQUAKE
|
||||
#define HEADLESSQUAKE
|
||||
#endif
|
||||
#define AVAIL_MP3_ACM //microsoft's Audio Compression Manager api
|
||||
|
||||
#ifdef NOLEGACY
|
||||
//these are only the features that really make sense in a more modern engine
|
||||
|
@ -201,7 +202,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#undef AVAIL_PNGLIB //no png support
|
||||
#undef AVAIL_OPENAL //just bloat...
|
||||
#undef AVAIL_GZDEC
|
||||
#define NOMEDIA //NO playing of avis/cins/roqs
|
||||
|
||||
#define Q1BSPS
|
||||
#define SPRMODELS //quake1 sprite models
|
||||
|
@ -299,6 +299,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define PSET_CLASSIC
|
||||
//#define PSET_DARKPLACES
|
||||
|
||||
|
||||
#define HAVE_CDPLAYER //includes cd playback. actual cds. faketracks are supported regardless.
|
||||
#define HAVE_JUKEBOX //includes built-in jukebox crap
|
||||
#define HAVE_MEDIA_DECODER //can play cin/roq, more with plugins
|
||||
#define HAVE_MEDIA_ENCODER //capture/capturedemo work.
|
||||
#define HAVE_SPEECHTOTEXT //windows speech-to-text thing
|
||||
|
||||
#define VOICECHAT
|
||||
|
||||
#if defined(_WIN32) && !defined(FTE_SDL) && !defined(MULTITHREAD) //always thread on win32 non-minimal builds
|
||||
|
@ -370,6 +377,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#undef AVAIL_GZDEC
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) || defined(WINRT)
|
||||
#undef HAVE_SPEECHTOTEXT
|
||||
#undef AVAIL_MP3_ACM
|
||||
#endif
|
||||
|
||||
#ifdef NOMEDIA
|
||||
#undef HAVE_CDPLAYER //includes cd playback. actual cds. faketracks are supported regardless.
|
||||
#undef HAVE_JUKEBOX //includes built-in jukebox crap
|
||||
#undef HAVE_MEDIA_DECODER //can play cin/roq, more with plugins
|
||||
#undef HAVE_MEDIA_ENCODER //capture/capturedemo work.
|
||||
#undef AVAIL_MP3_ACM //microsoft's Audio Compression Manager api
|
||||
#undef HAVE_SPEECHTOTEXT //windows speech-to-text thing
|
||||
#endif
|
||||
|
||||
#ifdef FTE_TARGET_WEB
|
||||
//try to trim the fat
|
||||
#undef VOICECHAT //too lazy to compile speex
|
||||
|
@ -814,11 +835,21 @@ STAT_ITEMS = 15,
|
|||
STAT_VIEWHEIGHT = 16, //same as zquake
|
||||
STAT_TIME = 17, //zquake
|
||||
STAT_MATCHSTARTTIME = 18,
|
||||
STAT_IDEALPITCH = 19,
|
||||
//STAT_UNUSED = 19,
|
||||
#ifdef SIDEVIEWS
|
||||
STAT_VIEW2 = 20,
|
||||
#endif
|
||||
STAT_VIEWZOOM = 21, // DP
|
||||
//STAT_UNUSED = 22,
|
||||
//STAT_UNUSED = 23,
|
||||
//STAT_UNUSED = 24,
|
||||
STAT_IDEALPITCH = 25, //nq-emu
|
||||
STAT_PUNCHANGLE_X = 26, //nq-emu
|
||||
STAT_PUNCHANGLE_Y = 27, //nq-emu
|
||||
STAT_PUNCHANGLE_Z = 28, //nq-emu
|
||||
STAT_PUNCHVECTOR_X = 29,
|
||||
STAT_PUNCHVECTOR_Y = 30,
|
||||
STAT_PUNCHVECTOR_Z = 31,
|
||||
|
||||
//these stats are used only when running a hexen2 mod/hud, and will never be used for a quake mod/hud/generic code.
|
||||
STAT_H2_LEVEL = 32, // changes stat bar
|
||||
|
@ -883,7 +914,7 @@ STAT_MOVEVARS_AIRCONTROL_PENALTY = 221, // DP
|
|||
STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW = 222, // DP
|
||||
STAT_MOVEVARS_AIRSTRAFEACCEL_QW = 223, // DP
|
||||
STAT_MOVEVARS_AIRCONTROL_POWER = 224, // DP
|
||||
STAT_MOVEFLAGS = 225, // DP
|
||||
STAT_MOVEFLAGS = 225, // DP
|
||||
STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL = 226, // DP
|
||||
STAT_MOVEVARS_WARSOWBUNNY_ACCEL = 227, // DP
|
||||
STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED = 228, // DP
|
||||
|
|
|
@ -4813,7 +4813,7 @@ void COM_Version_f (void)
|
|||
#else
|
||||
Con_Printf(" Ogg Vorbis(dynamic)");
|
||||
#endif
|
||||
#if defined(_WIN32) && !defined(WINRT) && !defined(NOMEDIA)
|
||||
#if defined(AVAIL_MP3_ACM)
|
||||
Con_Printf(" mp3(system)");
|
||||
#endif
|
||||
Con_Printf("\n");
|
||||
|
|
|
@ -51,6 +51,12 @@
|
|||
#endif
|
||||
|
||||
|
||||
//various package formats
|
||||
#define PACKAGE_PK3
|
||||
#undef PACKAGE_Q1PAK //also q2
|
||||
#undef PACKAGE_DOOMWAD //doom wad support (generates various file names, and adds support for doom's audio, sprites, etc)
|
||||
#undef PACKAGE_TEXWAD //quake's image wad support
|
||||
|
||||
//map formats
|
||||
#define Q3BSPS
|
||||
#undef Q1BSPS
|
||||
|
@ -81,6 +87,7 @@
|
|||
#undef AVAIL_GZDEC //.gz decompression
|
||||
#undef AVAIL_PNGLIB //.png image format support (read+screenshots)
|
||||
#undef AVAIL_JPEGLIB //.jpeg image format support (read+screenshots)
|
||||
#undef AVAIL_MP3_ACM //.mp3 support (in windows).
|
||||
#undef IMAGEFMT_DDS //.dds files embed mipmaps and texture compression. faster to load.
|
||||
#undef IMAGEFMT_BLP //legacy crap
|
||||
#undef NETPREPARSE //allows for running both nq+qw on the same server (if not, protocol used must match gamecode).
|
||||
|
@ -108,12 +115,12 @@
|
|||
#undef PLUGINS //support for external plugins (like huds or fancy menus or whatever)
|
||||
#undef SUPPORT_ICE //Internet Connectivity Establishment, for use by plugins to establish voice or game connections.
|
||||
#undef PSET_CLASSIC //support the 'classic' particle system, for that classic quake feel.
|
||||
#undef HAVE_CDPLAYER //includes cd playback. actual cds. named/numbered tracks are supported regardless (though you need to use the 'music' command to play them without this).
|
||||
#undef HAVE_JUKEBOX //includes built-in jukebox crap
|
||||
#undef HAVE_MEDIA_DECODER //can play cin/roq, more with plugins
|
||||
#undef HAVE_MEDIA_ENCODER //capture/capturedemo work.
|
||||
#undef HAVE_SPEECHTOTEXT //windows speech-to-text thing
|
||||
|
||||
//various package formats
|
||||
#define PACKAGE_PK3
|
||||
#undef PACKAGE_Q1PAK //also q2
|
||||
#undef PACKAGE_DOOMWAD //doom wad support (generates various file names, and adds support for doom's audio, sprites, etc)
|
||||
#undef PACKAGE_WAD //quake's image wad support
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -544,18 +544,22 @@ static qintptr_t VARGS Plug_ExportNative(void *offset, quintptr_t mask, const qi
|
|||
currentplug->blockcloses++;
|
||||
}
|
||||
*/
|
||||
#if defined(PLUGINS) && !defined(NOMEDIA) && !defined(SERVERONLY)
|
||||
#if defined(PLUGINS) && !defined(SERVERONLY)
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
else if (!strcmp(name, "Media_VideoDecoder"))
|
||||
{
|
||||
Media_RegisterDecoder(currentplug, func);
|
||||
// currentplug->blockcloses++;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_MEDIA_ENCODER
|
||||
else if (!strcmp(name, "Media_VideoEncoder"))
|
||||
{
|
||||
Media_RegisterEncoder(currentplug, func);
|
||||
// currentplug->blockcloses++;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef SERVERONLY
|
||||
else if (!strcmp(name, "S_LoadSound")) //a hook for loading extra types of sound (wav, mp3, ogg, midi, whatever you choose to support)
|
||||
|
@ -1991,9 +1995,13 @@ void Plug_Close(plugin_t *plug)
|
|||
Con_DPrintf("Closing plugin %s\n", plug->name);
|
||||
|
||||
//ensure any active contexts provided by the plugin are closed (stuff with destroy callbacks)
|
||||
#if defined(PLUGINS) && !defined(NOMEDIA) && !defined(SERVERONLY)
|
||||
#if defined(PLUGINS) && !defined(SERVERONLY)
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
Media_UnregisterDecoder(plug, NULL);
|
||||
#endif
|
||||
#ifdef HAVE_MEDIA_ENCODER
|
||||
Media_UnregisterEncoder(plug, NULL);
|
||||
#endif
|
||||
#endif
|
||||
FS_UnRegisterFileSystemModule(plug);
|
||||
Mod_UnRegisterAllModelFormats(plug);
|
||||
|
|
|
@ -6228,7 +6228,7 @@ lh_extension_t QSG_Extensions[] = {
|
|||
// {"FTE_GFX_MODELEVENTS", 1, NULL, {"processmodelevents", "getnextmodelevent", "getmodeleventidx"}, "Provides a query for per-animation events in model files, including from progs/foo.mdl.events files."},
|
||||
{"FTE_ISBACKBUFFERED", 1, NULL, {"isbackbuffered"}, "Allows you to check if a client has too many reliable messages pending."},
|
||||
{"FTE_MEMALLOC", 4, NULL, {"memalloc", "memfree", "memcpy", "memfill8"}, "Allows dynamically allocating memory. Use pointers to access this memory. Memory will not be saved into saved games."},
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
#if defined(_WIN32) && !defined(WINRT)
|
||||
{"FTE_MEDIA_AVI", 0, NULL, {NULL}, "playfilm command supports avi files."},
|
||||
#endif
|
||||
|
@ -6271,7 +6271,9 @@ lh_extension_t QSG_Extensions[] = {
|
|||
#ifdef QCGC
|
||||
{"FTE_QC_PERSISTENTTEMPSTRINGS", NOBI "Supersedes DP_QC_MULTIPLETEMPSTRINGS. Temp strings are garbage collected automatically, and do not expire while they're still in use. This makes strzone redundant."},
|
||||
#endif
|
||||
#ifdef RAGDOLL
|
||||
{"FTE_QC_RAGDOLL_WIP", 1, NULL, {"ragupdate", "skel_set_bone_world", "skel_mmap"}},
|
||||
#endif
|
||||
{"FTE_QC_SENDPACKET", 1, NULL, {"sendpacket"}, "Allows the use of out-of-band udp packets to/from other hosts. Includes the SV_ParseConnectionlessPacket event."},
|
||||
{"FTE_QC_STUFFCMDFLAGS", 1, NULL, {"stuffcmdflags"}, "Variation on regular stuffcmd that gives control over how spectators/mvds should be treated."},
|
||||
{"FTE_QC_TRACETRIGGER"},
|
||||
|
|
|
@ -1124,6 +1124,8 @@ typedef struct
|
|||
entity_state_t *entities;
|
||||
int fixangles[MAX_SPLITS]; //these should not be in here
|
||||
vec3_t fixedangles[MAX_SPLITS];
|
||||
vec3_t punchangle[MAX_SPLITS];
|
||||
vec3_t punchorigin[MAX_SPLITS];
|
||||
|
||||
qbyte *bonedata;
|
||||
size_t bonedatacur;
|
||||
|
|
|
@ -1090,7 +1090,7 @@ static void SelectPassTexture(unsigned int tu, const shaderpass_t *pass)
|
|||
BindTexture(tu, T_Gen_CurrentRender());
|
||||
break;
|
||||
case T_GEN_VIDEOMAP:
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (pass->cin)
|
||||
{
|
||||
BindTexture(tu, Media_UpdateForShader(pass->cin));
|
||||
|
@ -3472,7 +3472,7 @@ void D3D11BE_BaseEntTextures(void)
|
|||
{
|
||||
batch_t *batches[SHADER_SORT_COUNT];
|
||||
BE_GenModelBatches(batches, shaderstate.curdlight, shaderstate.mode);
|
||||
D3D11BE_SubmitMeshes(NULL, batches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
D3D11BE_SubmitMeshes(NULL, batches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
BE_SelectEntity(&r_worldentity);
|
||||
}
|
||||
|
||||
|
@ -3617,7 +3617,7 @@ void D3D11BE_DrawWorld (batch_t **worldbatches)
|
|||
BE_SelectMode(BEM_STANDARD);
|
||||
|
||||
RSpeedRemark();
|
||||
D3D11BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
D3D11BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
RSpeedEnd(RSPEED_WORLD);
|
||||
|
||||
#ifdef RTLIGHTS
|
||||
|
@ -3627,7 +3627,7 @@ void D3D11BE_DrawWorld (batch_t **worldbatches)
|
|||
RSpeedEnd(RSPEED_STENCILSHADOWS);
|
||||
#endif
|
||||
|
||||
D3D11BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_DECAL, SHADER_SORT_COUNT);
|
||||
D3D11BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_SEETHROUGH+1, SHADER_SORT_COUNT);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -776,10 +776,10 @@ static void SelectPassTexture(unsigned int tu, shaderpass_t *pass)
|
|||
FIXME: no code to grab the current screen and convert to a texture
|
||||
break;*/
|
||||
case T_GEN_VIDEOMAP:
|
||||
#ifdef NOMEDIA
|
||||
BindTexture(tu, missing_texture);
|
||||
#else
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
BindTexture(tu, Media_UpdateForShader(pass->cin));
|
||||
#else
|
||||
BindTexture(tu, missing_texture);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
@ -3457,7 +3457,7 @@ void D3D9BE_BaseEntTextures(void)
|
|||
{
|
||||
batch_t *batches[SHADER_SORT_COUNT];
|
||||
BE_GenModelBatches(batches, shaderstate.curdlight, shaderstate.mode);
|
||||
D3D9BE_SubmitMeshes(NULL, batches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
D3D9BE_SubmitMeshes(NULL, batches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
BE_SelectEntity(&r_worldentity);
|
||||
}
|
||||
|
||||
|
@ -3543,7 +3543,7 @@ void D3D9BE_DrawWorld (batch_t **worldbatches)
|
|||
BE_SelectMode(BEM_STANDARD);
|
||||
|
||||
RSpeedRemark();
|
||||
D3D9BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
D3D9BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
RSpeedEnd(RSPEED_WORLD);
|
||||
|
||||
#ifdef RTLIGHTS
|
||||
|
@ -3558,7 +3558,7 @@ void D3D9BE_DrawWorld (batch_t **worldbatches)
|
|||
|
||||
BE_SelectMode(BEM_STANDARD);
|
||||
|
||||
D3D9BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_DECAL, SHADER_SORT_COUNT);
|
||||
D3D9BE_SubmitMeshes(worldbatches, batches, SHADER_SORT_SEETHROUGH+1, SHADER_SORT_COUNT);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -434,6 +434,8 @@ void D3D9Shader_DeleteProg(program_t *prog)
|
|||
prog->permu[permu].h.hlsl.ctabf = NULL;
|
||||
IUnknown_Release(fct);
|
||||
}
|
||||
prog->permu[permu].numparms = 0;
|
||||
BZ_Free(prog->permu[permu].parm);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
#include "winquake.h"
|
||||
|
||||
#if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
|
||||
#define HMONITOR_DECLARED
|
||||
DECLARE_HANDLE(HMONITOR);
|
||||
#define HMONITOR_DECLARED
|
||||
DECLARE_HANDLE(HMONITOR);
|
||||
#endif
|
||||
|
||||
#include <d3d9.h>
|
||||
|
@ -378,7 +378,7 @@ static LRESULT WINAPI D3D9_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
mmi->ptMinTrackSize.y = 200 + ((windowrect.bottom - windowrect.top) - (clientrect.bottom - clientrect.top));
|
||||
}
|
||||
return 0;
|
||||
case WM_SIZE:
|
||||
case WM_SIZE:
|
||||
d3d_resized = true;
|
||||
break;
|
||||
|
||||
|
@ -390,7 +390,7 @@ static LRESULT WINAPI D3D9_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
Cbuf_AddText("\nquit\n", RESTRICT_LOCAL);
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
|
||||
case WM_ACTIVATE:
|
||||
fActive = LOWORD(wParam);
|
||||
|
@ -405,25 +405,27 @@ static LRESULT WINAPI D3D9_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
case WM_DESTROY:
|
||||
{
|
||||
// if (dibwindow)
|
||||
// DestroyWindow (dibwindow);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef HAVE_CDPLAYER
|
||||
case MM_MCINOTIFY:
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam);
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
/* pass all unhandled messages to DefWindowProc */
|
||||
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
/* pass all unhandled messages to DefWindowProc */
|
||||
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
|
||||
/* return 1 if handled message, 0 if not */
|
||||
return lRet;
|
||||
/* return 1 if handled message, 0 if not */
|
||||
return lRet;
|
||||
}
|
||||
|
||||
static void D3D9_VID_SwapBuffers(void)
|
||||
|
@ -463,10 +465,10 @@ static void resetD3D9(void)
|
|||
#if (WINVER < 0x500) && !defined(__GNUC__)
|
||||
typedef struct tagMONITORINFO
|
||||
{
|
||||
DWORD cbSize;
|
||||
RECT rcMonitor;
|
||||
RECT rcWork;
|
||||
DWORD dwFlags;
|
||||
DWORD cbSize;
|
||||
RECT rcMonitor;
|
||||
RECT rcWork;
|
||||
DWORD dwFlags;
|
||||
} MONITORINFO, *LPMONITORINFO;
|
||||
#endif
|
||||
|
||||
|
@ -1052,7 +1054,7 @@ static qboolean (D3D9_SCR_UpdateScreen) (void)
|
|||
if (uimenu != 1)
|
||||
{
|
||||
if (r_worldentity.model && cls.state == ca_active)
|
||||
V_RenderView ();
|
||||
V_RenderView ();
|
||||
else
|
||||
{
|
||||
noworld = true;
|
||||
|
|
|
@ -55,8 +55,8 @@ ID3D11DeviceContext *d3ddevctx;
|
|||
#endif
|
||||
|
||||
#define DEFINE_QGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
const GUID DECLSPEC_SELECTANY name \
|
||||
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
|
||||
const GUID DECLSPEC_SELECTANY name \
|
||||
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
|
||||
|
||||
DEFINE_QGUID(qIID_ID3D11Texture2D,0x6f15aaf2,0xd208,0x4e89,0x9a,0xb4,0x48,0x95,0x35,0xd3,0x4f,0x9c);
|
||||
|
||||
|
@ -520,7 +520,7 @@ static LRESULT WINAPI D3D11_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||
mmi->ptMinTrackSize.y = 200 + ((windowrect.bottom - windowrect.top) - (clientrect.bottom - clientrect.top));
|
||||
}
|
||||
return 0;
|
||||
case WM_SIZE:
|
||||
case WM_SIZE:
|
||||
d3d_resized = true;
|
||||
|
||||
D3DVID_UpdateWindowStatus(mainwindow);
|
||||
|
@ -571,37 +571,38 @@ static LRESULT WINAPI D3D11_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||
lRet = 1;
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
case WM_DESTROY:
|
||||
{
|
||||
// if (dibwindow)
|
||||
// DestroyWindow (dibwindow);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
#ifdef HAVE_CDPLAYER
|
||||
case MM_MCINOTIFY:
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam);
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
case WM_ERASEBKGND:
|
||||
return 1;
|
||||
default:
|
||||
/* pass all unhandled messages to DefWindowProc */
|
||||
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
/* pass all unhandled messages to DefWindowProc */
|
||||
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
|
||||
/* return 1 if handled message, 0 if not */
|
||||
return lRet;
|
||||
/* return 1 if handled message, 0 if not */
|
||||
return lRet;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (WINVER < 0x500) && !defined(__GNUC__)
|
||||
typedef struct tagMONITORINFO
|
||||
{
|
||||
DWORD cbSize;
|
||||
RECT rcMonitor;
|
||||
RECT rcWork;
|
||||
DWORD dwFlags;
|
||||
DWORD cbSize;
|
||||
RECT rcMonitor;
|
||||
RECT rcWork;
|
||||
DWORD dwFlags;
|
||||
} MONITORINFO, *LPMONITORINFO;
|
||||
#endif
|
||||
|
||||
|
@ -1310,7 +1311,7 @@ static qboolean (D3D11_SCR_UpdateScreen) (void)
|
|||
if (uimenu != 1)
|
||||
{
|
||||
if (r_worldentity.model && cls.state == ca_active)
|
||||
V_RenderView ();
|
||||
V_RenderView ();
|
||||
else
|
||||
{
|
||||
noworld = true;
|
||||
|
|
|
@ -1222,10 +1222,10 @@ static void Shader_BindTextureForPass(int tmu, const shaderpass_t *pass)
|
|||
return;
|
||||
|
||||
case T_GEN_VIDEOMAP:
|
||||
#ifdef NOMEDIA
|
||||
t = shaderstate.curtexnums?shaderstate.curtexnums->base:r_nulltex;
|
||||
#else
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
t = Media_UpdateForShader(pass->cin);
|
||||
#else
|
||||
t = shaderstate.curtexnums?shaderstate.curtexnums->base:r_nulltex;
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
@ -1336,7 +1336,7 @@ void Shader_LightPass(const char *shortname, shader_t *s, const void *args)
|
|||
{
|
||||
char shadertext[8192*2];
|
||||
extern cvar_t r_drawflat;
|
||||
sprintf(shadertext, LIGHTPASS_SHADER, (r_lightmap.ival||r_drawflat.ival)?"#FLAT":"");
|
||||
sprintf(shadertext, LIGHTPASS_SHADER, (r_lightmap.ival||r_drawflat.ival)?"#FLAT=1.0":"");
|
||||
Shader_DefaultScript(shortname, s, shadertext);
|
||||
}
|
||||
|
||||
|
@ -5568,7 +5568,7 @@ void GLBE_DrawWorld (batch_t **worldbatches)
|
|||
BE_SelectMode(BEM_STANDARD);
|
||||
|
||||
RSpeedRemark();
|
||||
GLBE_SubmitMeshes(worldbatches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
GLBE_SubmitMeshes(worldbatches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
RSpeedEnd(RSPEED_WORLD);
|
||||
|
||||
#ifdef RTLIGHTS
|
||||
|
@ -5586,7 +5586,7 @@ void GLBE_DrawWorld (batch_t **worldbatches)
|
|||
|
||||
shaderstate.identitylighting = 1;
|
||||
|
||||
GLBE_SubmitMeshes(worldbatches, SHADER_SORT_DECAL, SHADER_SORT_NEAREST);
|
||||
GLBE_SubmitMeshes(worldbatches, SHADER_SORT_SEETHROUGH+1, SHADER_SORT_NEAREST);
|
||||
|
||||
/* if (r_refdef.gfog_alpha)
|
||||
{
|
||||
|
|
|
@ -2783,7 +2783,7 @@ static void Shaderpass_VideoMap (shader_t *shader, shaderpass_t *pass, char **pt
|
|||
{
|
||||
char *token = Shader_ParseSensString (ptr);
|
||||
|
||||
#ifdef NOMEDIA
|
||||
#ifndef HAVE_MEDIA_DECODER
|
||||
(void)token;
|
||||
#else
|
||||
if (pass->cin)
|
||||
|
@ -3430,7 +3430,7 @@ static shaderkey_t shaderpasskeys[] =
|
|||
|
||||
void Shader_FreePass (shaderpass_t *pass)
|
||||
{
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if ( pass->flags & SHADER_PASS_VIDEOMAP )
|
||||
{
|
||||
Media_ShutdownCin(pass->cin);
|
||||
|
@ -3867,14 +3867,14 @@ void Shader_FixupProgPasses(shader_t *shader, shaderpass_t *pass)
|
|||
//mode deluxemaps //17,18,19
|
||||
};
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
cin_t *cin = R_ShaderGetCinematic(shader);
|
||||
#endif
|
||||
|
||||
//if the glsl doesn't specify all samplers, just trim them.
|
||||
pass->numMergedPasses = pass->prog->numsamplers;
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (cin && R_ShaderGetCinematic(shader) == cin)
|
||||
cin = NULL;
|
||||
#endif
|
||||
|
@ -3892,7 +3892,7 @@ void Shader_FixupProgPasses(shader_t *shader, shaderpass_t *pass)
|
|||
pass[pass->numMergedPasses].flags &= ~SHADER_PASS_DEPTHCMP;
|
||||
if (defaulttgen[i].gen == T_GEN_SHADOWMAP)
|
||||
pass[pass->numMergedPasses].flags |= SHADER_PASS_DEPTHCMP;
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (!i && cin)
|
||||
{
|
||||
pass[pass->numMergedPasses].texgen = T_GEN_VIDEOMAP;
|
||||
|
@ -3903,7 +3903,7 @@ void Shader_FixupProgPasses(shader_t *shader, shaderpass_t *pass)
|
|||
#endif
|
||||
{
|
||||
pass[pass->numMergedPasses].texgen = defaulttgen[i].gen;
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
pass[pass->numMergedPasses].cin = NULL;
|
||||
#endif
|
||||
}
|
||||
|
@ -3915,7 +3915,7 @@ void Shader_FixupProgPasses(shader_t *shader, shaderpass_t *pass)
|
|||
//must have at least one texture.
|
||||
if (!pass->numMergedPasses)
|
||||
{
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
pass[0].texgen = cin?T_GEN_VIDEOMAP:T_GEN_DIFFUSE;
|
||||
pass[0].cin = cin;
|
||||
#else
|
||||
|
@ -3923,7 +3923,7 @@ void Shader_FixupProgPasses(shader_t *shader, shaderpass_t *pass)
|
|||
#endif
|
||||
pass->numMergedPasses = 1;
|
||||
}
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
else if (cin)
|
||||
Media_ShutdownCin(cin);
|
||||
#endif
|
||||
|
@ -4624,7 +4624,7 @@ done:;
|
|||
if (best->anim_frames[0] && *best->anim_frames[0]->ident != '$')
|
||||
s->defaulttextures->base = best->anim_frames[0];
|
||||
}
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
else if (pass->texgen == T_GEN_VIDEOMAP && pass->cin)
|
||||
s->defaulttextures->base = Media_UpdateForShader(best->cin);
|
||||
#endif
|
||||
|
@ -4830,14 +4830,14 @@ done:;
|
|||
//mode deluxemaps //17,18,19
|
||||
};
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
cin_t *cin = R_ShaderGetCinematic(s);
|
||||
#endif
|
||||
|
||||
//if the glsl doesn't specify all samplers, just trim them.
|
||||
s->numpasses = s->prog->numsamplers;
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (cin && R_ShaderGetCinematic(s) == cin)
|
||||
cin = NULL;
|
||||
#endif
|
||||
|
@ -4852,7 +4852,7 @@ done:;
|
|||
s->passes[s->numpasses].flags &= ~SHADER_PASS_DEPTHCMP;
|
||||
if (defaulttgen[i].gen == T_GEN_SHADOWMAP)
|
||||
s->passes[s->numpasses].flags |= SHADER_PASS_DEPTHCMP;
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (!i && cin)
|
||||
{
|
||||
s->passes[s->numpasses].texgen = T_GEN_VIDEOMAP;
|
||||
|
@ -4863,7 +4863,7 @@ done:;
|
|||
#endif
|
||||
{
|
||||
s->passes[s->numpasses].texgen = defaulttgen[i].gen;
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
s->passes[s->numpasses].cin = NULL;
|
||||
#endif
|
||||
}
|
||||
|
@ -4875,7 +4875,7 @@ done:;
|
|||
//must have at least one texture.
|
||||
if (!s->numpasses)
|
||||
{
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
s->passes[0].texgen = cin?T_GEN_VIDEOMAP:T_GEN_DIFFUSE;
|
||||
s->passes[0].cin = cin;
|
||||
#else
|
||||
|
@ -4883,7 +4883,7 @@ done:;
|
|||
#endif
|
||||
s->numpasses = 1;
|
||||
}
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
else if (cin)
|
||||
Media_ShutdownCin(cin);
|
||||
#endif
|
||||
|
@ -6818,7 +6818,7 @@ void Shader_NeedReload(qboolean rescanfs)
|
|||
|
||||
cin_t *R_ShaderGetCinematic(shader_t *s)
|
||||
{
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
int j;
|
||||
if (!s)
|
||||
return NULL;
|
||||
|
@ -6858,10 +6858,10 @@ shader_t *R_ShaderFind(const char *name)
|
|||
|
||||
cin_t *R_ShaderFindCinematic(const char *name)
|
||||
{
|
||||
#ifdef NOMEDIA
|
||||
return NULL;
|
||||
#else
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
return R_ShaderGetCinematic(R_ShaderFind(name));
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -1852,7 +1852,24 @@ static GLhandleARB GLSlang_CreateShader (program_t *prog, const char *name, int
|
|||
if (ver != 100)
|
||||
#endif
|
||||
{
|
||||
Q_snprintfz(verline, sizeof(verline), "#version %u\n", ver);
|
||||
//known versions:
|
||||
//100 == gles2
|
||||
//110 == gl2.0
|
||||
//120 == gl2.1
|
||||
//130 == gl3.0
|
||||
//140 == gl3.1
|
||||
//150 [core|compatibility] == gl3.2
|
||||
//330, 400, 410, 420, 430 [core|compatibility] == gl?.??
|
||||
//300 ES == gles3
|
||||
if (gl_config_gles && ver != 100)
|
||||
Q_snprintfz(verline, sizeof(verline), "#version %u ES\n", ver);
|
||||
else if (!gl_config_gles && ver >= 150 && !gl_config_nofixedfunc)
|
||||
//favour compatibility profile, simply because we want ftransform to work properly
|
||||
//note that versions 130+140 are awkward due to deprecation stuff, both assume compatibility profiles where supported.
|
||||
// however, 130 REMOVED ftransform in revision 2 and then re-added it as deprecated in revision 4 (of 10).
|
||||
Q_snprintfz(verline, sizeof(verline), "#version %u compatibility\n", ver);
|
||||
else
|
||||
Q_snprintfz(verline, sizeof(verline), "#version %u\n", ver); //core assumed, where defined
|
||||
prstrings[strings] = verline;
|
||||
length[strings] = strlen(prstrings[strings]);
|
||||
strings++;
|
||||
|
@ -1891,13 +1908,14 @@ static GLhandleARB GLSlang_CreateShader (program_t *prog, const char *name, int
|
|||
if (ver >= 130)
|
||||
{
|
||||
prstrings[strings] =
|
||||
//gl3+ deprecated the varying keyword for geometry shaders to work properly
|
||||
//gl3+ deprecated the some things. these are removed in forwards-compatible / core contexts.
|
||||
//varying became either in or out, which is important if you have geometry shaders...
|
||||
"#define varying in\n"
|
||||
//it also deprecated the numerous texture functions. now only the 'texture' function exists, with overloads for each sampler type.
|
||||
//now only the 'texture' function exists, with overloads for each sampler type.
|
||||
"#define texture2D texture\n"
|
||||
"#define textureCube texture\n"
|
||||
"#define shadow2D texture\n"
|
||||
//gl_FragColor and gl_FragData got deprecated too
|
||||
//gl_FragColor and gl_FragData got deprecated too, need to make manual outputs
|
||||
"out vec4 fte_fragdata;\n"
|
||||
"#define gl_FragColor fte_fragdata\n"
|
||||
;
|
||||
|
@ -2018,7 +2036,7 @@ static GLhandleARB GLSlang_CreateShader (program_t *prog, const char *name, int
|
|||
length[strings] = strlen(prstrings[strings]);
|
||||
strings++;
|
||||
}
|
||||
if (gl_config_nofixedfunc || ver >= 130)
|
||||
if (gl_config_nofixedfunc)
|
||||
{
|
||||
prstrings[strings] =
|
||||
"attribute vec3 v_position1;\n"
|
||||
|
|
|
@ -2520,6 +2520,12 @@ void MainThreadWndProc(void *ctx, void *data, size_t msg, size_t ex)
|
|||
break;
|
||||
ClearAllStates (); //FIXME: thread
|
||||
break;
|
||||
|
||||
#ifdef HAVE_CDPLAYER
|
||||
case MM_MCINOTIFY:
|
||||
CDAudio_MessageHandler (mainwindow, uMsg, ctx, data);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -2707,7 +2713,7 @@ static LONG WINAPI GLMainWndProc (
|
|||
PostQuitMessage(0);
|
||||
break;
|
||||
case WM_USER:
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_SPEECHTOTEXT
|
||||
STT_Event();
|
||||
#endif
|
||||
break;
|
||||
|
@ -2809,9 +2815,14 @@ static LONG WINAPI GLMainWndProc (
|
|||
}
|
||||
break;
|
||||
|
||||
#ifndef WTHREAD
|
||||
#ifdef HAVE_CDPLAYER
|
||||
case MM_MCINOTIFY:
|
||||
#ifdef WTHREAD
|
||||
COM_AddWork(WG_MAIN, MainThreadWndProc, wParam, lParam, uMsg, 0);
|
||||
lRet = 0;
|
||||
#else
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam); //FIXME: thread
|
||||
#endif
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -9965,7 +9965,7 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND
|
|||
"#define tcbase tcoffsetmap\n"
|
||||
"#endif\n"
|
||||
"#if defined(FLAT)\n"
|
||||
"vec3 bases = vec3(1.0);\n"
|
||||
"vec3 bases = vec3(FLAT);\n"
|
||||
"#else\n"
|
||||
"vec3 bases = vec3(texture2D(s_diffuse, tcbase));\n"
|
||||
"#endif\n"
|
||||
|
@ -11084,7 +11084,11 @@ YOU SHOULD NOT EDIT THIS FILE BY HAND
|
|||
"{\n"
|
||||
"float3 col = l_lightcolour;\n"
|
||||
"col *= max(1.0 - dot(inp.lpos, inp.lpos)/(l_lightradius*l_lightradius), 0.0);\n"
|
||||
"#ifdef FLAT\n"
|
||||
"float3 diff = FLAT;\n"
|
||||
"#else\n"
|
||||
"float3 diff = tex2D(s_diffuse, inp.tc);\n"
|
||||
"#endif\n"
|
||||
"return float4(diff * col, 1);\n"
|
||||
"}\n"
|
||||
"#endif\n"
|
||||
|
|
|
@ -174,7 +174,7 @@ typedef struct shaderpass_s {
|
|||
|
||||
struct programshared_s *prog;
|
||||
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
struct cin_s *cin;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -726,7 +726,12 @@ void SV_MulticastProtExt(vec3_t origin, multicast_t to, int dimension_mask, int
|
|||
if (oneclient)
|
||||
{
|
||||
if (oneclient != split)
|
||||
continue;
|
||||
{
|
||||
if (split->spectator && split->spec_track >= 0 && oneclient == &svs.clients[split->spec_track])
|
||||
;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (mask)
|
||||
{
|
||||
|
@ -795,7 +800,7 @@ void SV_MulticastProtExt(vec3_t origin, multicast_t to, int dimension_mask, int
|
|||
break;
|
||||
#endif
|
||||
case SCP_QUAKEWORLD:
|
||||
if (reliable)
|
||||
if (reliable)
|
||||
{
|
||||
ClientReliableCheckBlock(client, sv.multicast.cursize);
|
||||
ClientReliableWrite_SZ(client, sv.multicast.data, sv.multicast.cursize);
|
||||
|
@ -893,7 +898,12 @@ void SV_MulticastProtExt(vec3_t origin, multicast_t to, int dimension_mask, int
|
|||
if (oneclient)
|
||||
{
|
||||
if (oneclient != split)
|
||||
continue;
|
||||
{
|
||||
if (split->spectator && split->spec_track >= 0 && oneclient == &svs.clients[split->spec_track])
|
||||
;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (svprogfuncs)
|
||||
{
|
||||
|
@ -1110,7 +1120,12 @@ void SV_MulticastCB(vec3_t origin, multicast_t to, int dimension_mask, void (*ca
|
|||
if (oneclient)
|
||||
{
|
||||
if (oneclient != split)
|
||||
continue;
|
||||
{
|
||||
if (split->spectator && split->spec_track >= 0 && oneclient == &svs.clients[split->spec_track])
|
||||
;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (svprogfuncs)
|
||||
{
|
||||
|
@ -1670,7 +1685,7 @@ void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
|||
ent = client->edict;
|
||||
if (progstype != PROG_QW)
|
||||
{
|
||||
if (ISQWCLIENT(client))
|
||||
if (ISQWCLIENT(client) && !(client->fteprotocolextensions2 & PEXT2_PREDINFO))
|
||||
{
|
||||
//quakeworld clients drop the punch angle themselves.
|
||||
while (ent->xv->punchangle[0] < -3)
|
||||
|
@ -1686,25 +1701,6 @@ void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
|||
ent->xv->punchangle[1] = 0;
|
||||
ent->xv->punchangle[2] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
//nq clients require the server to do it (interpolating, if its a decent client).
|
||||
if (ent->xv->punchangle[i] < 0)
|
||||
{
|
||||
ent->xv->punchangle[i] += 10 * (1/77.0);
|
||||
if (ent->xv->punchangle[i] > 0)
|
||||
ent->xv->punchangle[i] = 0;
|
||||
}
|
||||
if (ent->xv->punchangle[i] < 0)
|
||||
{
|
||||
ent->xv->punchangle[i] -= 10 * (1/77.0);
|
||||
if (ent->xv->punchangle[i] < 0)
|
||||
ent->xv->punchangle[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ISQWCLIENT(client))
|
||||
|
@ -1738,8 +1734,8 @@ void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
|||
if (ent->v->view_ofs[2] != DEFAULT_VIEWHEIGHT)
|
||||
bits |= SU_VIEWHEIGHT;
|
||||
|
||||
// if (ent->v->idealpitch)
|
||||
// bits |= SU_IDEALPITCH;
|
||||
if (ent->xv->idealpitch)
|
||||
bits |= SU_IDEALPITCH;
|
||||
|
||||
// stuff the sigil bits into the high bits of items for sbar, or else
|
||||
// mix in items2
|
||||
|
@ -1764,6 +1760,8 @@ void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
|||
{
|
||||
if (ent->xv->punchangle[i])
|
||||
bits |= (SU_PUNCH1<<i);
|
||||
// if ((client->protocol == SCP_DARKPLACES6 || client->protocol == SCP_DARKPLACES7) && ent->xv->punchvector[i])
|
||||
// bits |= (DPSU_PUNCHVEC1<<i);
|
||||
if (ent->v->velocity[i])
|
||||
bits |= (SU_VELOCITY1<<i);
|
||||
}
|
||||
|
@ -1826,8 +1824,8 @@ void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
|||
if (bits & SU_VIEWHEIGHT)
|
||||
MSG_WriteChar (msg, ent->v->view_ofs[2]);
|
||||
|
||||
// if (bits & SU_IDEALPITCH)
|
||||
// MSG_WriteChar (msg, ent->v->idealpitch);
|
||||
if (bits & SU_IDEALPITCH)
|
||||
MSG_WriteChar (msg, ent->xv->idealpitch);
|
||||
|
||||
for (i=0 ; i<3 ; i++)
|
||||
{
|
||||
|
@ -1838,6 +1836,8 @@ void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
|||
else
|
||||
MSG_WriteChar (msg, ent->xv->punchangle[i]);
|
||||
}
|
||||
// if ((client->protocol == SCP_DARKPLACES6 || client->protocol == SCP_DARKPLACES7) && (bits & (DPSU_PUNCHVEC1<<i)))
|
||||
// Msg_WriteCoord(msg, ent->xv->punchvector);
|
||||
if (bits & (SU_VELOCITY1<<i))
|
||||
{
|
||||
if (client->protocol == SCP_DARKPLACES6 || client->protocol == SCP_DARKPLACES7)
|
||||
|
@ -2120,6 +2120,11 @@ void SV_CalcClientStats(client_t *client, int statsi[MAX_CL_STATS], float statsf
|
|||
statsi[STAT_ITEMS] = (int)ent->v->items | ((int)pr_global_struct->serverflags << 28);
|
||||
|
||||
statsf[STAT_VIEWHEIGHT] = ent->v->view_ofs[2];
|
||||
|
||||
statsf[STAT_PUNCHANGLE_X] = ent->xv->punchangle[0];
|
||||
statsf[STAT_PUNCHANGLE_Y] = ent->xv->punchangle[1];
|
||||
statsf[STAT_PUNCHANGLE_Z] = ent->xv->punchangle[2];
|
||||
|
||||
#ifdef PEXT_VIEW2
|
||||
if (ent->xv->view2)
|
||||
statsi[STAT_VIEW2] = NUM_FOR_EDICT(svprogfuncs, PROG_TO_EDICT(svprogfuncs, ent->xv->view2));
|
||||
|
|
|
@ -1002,7 +1002,7 @@ void SV_SendClientPrespawnInfo(client_t *client)
|
|||
ClientReliableWrite_Byte (client, track);
|
||||
|
||||
if (!track && *sv.h2miditrack)
|
||||
SV_StuffcmdToClient(client, va("cd loop \"%s\"\n", sv.h2miditrack));
|
||||
SV_StuffcmdToClient(client, va("music \"%s\"\n", sv.h2miditrack));
|
||||
}
|
||||
else if (client->prespawn_idx == 2)
|
||||
{
|
||||
|
@ -6737,6 +6737,22 @@ void SV_RunCmd (usercmd_t *ucmd, qboolean recurse)
|
|||
}
|
||||
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (sv_player->xv->punchangle[i] < 0)
|
||||
{
|
||||
sv_player->xv->punchangle[i] += 10 * host_frametime;
|
||||
if (sv_player->xv->punchangle[i] > 0)
|
||||
sv_player->xv->punchangle[i] = 0;
|
||||
}
|
||||
if (sv_player->xv->punchangle[i] > 0)
|
||||
{
|
||||
sv_player->xv->punchangle[i] -= 10 * host_frametime;
|
||||
if (sv_player->xv->punchangle[i] < 0)
|
||||
sv_player->xv->punchangle[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!host_client->spectator)
|
||||
{
|
||||
vec_t oldvz;
|
||||
|
@ -8400,6 +8416,7 @@ static void SV_WaterJump (void)
|
|||
|
||||
void SV_ClientThink (void)
|
||||
{
|
||||
int i;
|
||||
vec3_t v_angle;
|
||||
|
||||
cmd = host_client->lastcmd;
|
||||
|
@ -8429,6 +8446,21 @@ void SV_ClientThink (void)
|
|||
velocity = sv_player->v->velocity;
|
||||
|
||||
// DropPunchAngle ();
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (sv_player->xv->punchangle[i] < 0)
|
||||
{
|
||||
sv_player->xv->punchangle[i] += 10 * host_frametime;
|
||||
if (sv_player->xv->punchangle[i] > 0)
|
||||
sv_player->xv->punchangle[i] = 0;
|
||||
}
|
||||
if (sv_player->xv->punchangle[i] > 0)
|
||||
{
|
||||
sv_player->xv->punchangle[i] -= 10 * host_frametime;
|
||||
if (sv_player->xv->punchangle[i] < 0)
|
||||
sv_player->xv->punchangle[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// if dead, behave differently
|
||||
|
|
|
@ -324,7 +324,7 @@ void main ()
|
|||
#define tcbase tcoffsetmap
|
||||
#endif
|
||||
#if defined(FLAT)
|
||||
vec3 bases = vec3(1.0);
|
||||
vec3 bases = vec3(FLAT);
|
||||
#else
|
||||
vec3 bases = vec3(texture2D(s_diffuse, tcbase));
|
||||
#endif
|
||||
|
|
|
@ -55,7 +55,11 @@
|
|||
{
|
||||
float3 col = l_lightcolour;
|
||||
col *= max(1.0 - dot(inp.lpos, inp.lpos)/(l_lightradius*l_lightradius), 0.0);
|
||||
#ifdef FLAT
|
||||
float3 diff = FLAT;
|
||||
#else
|
||||
float3 diff = tex2D(s_diffuse, inp.tc);
|
||||
#endif
|
||||
return float4(diff * col, 1);
|
||||
}
|
||||
#endif
|
|
@ -136,7 +136,7 @@ qboolean DIB_Init(void)
|
|||
** create the DIB section
|
||||
*/
|
||||
hDIBSection = CreateDIBSection( mainhDC,
|
||||
pbmiDIB,
|
||||
pbmiDIB,
|
||||
DIB_RGB_COLORS,
|
||||
(void**)&pDIBBase,
|
||||
NULL,
|
||||
|
@ -149,17 +149,17 @@ qboolean DIB_Init(void)
|
|||
}
|
||||
|
||||
if (pbmiDIB->bmiHeader.biHeight < 0)
|
||||
{
|
||||
{
|
||||
// bottom up
|
||||
screenbuffer = pDIBBase + ( vid.pixelheight - 1 ) * vid.pixelwidth * 4;
|
||||
screenpitch = -(int)vid.pixelwidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
// top down
|
||||
screenbuffer = pDIBBase;
|
||||
screenpitch = vid.pixelwidth;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** clear the DIB memory buffer
|
||||
|
@ -305,10 +305,10 @@ qboolean SWAppActivate(BOOL fActive, BOOL minimize)
|
|||
}
|
||||
|
||||
LONG WINAPI MainWndProc (
|
||||
HWND hWnd,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
HWND hWnd,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
LONG lRet = 0;
|
||||
int fActive, fMinimized, temp;
|
||||
|
@ -346,8 +346,8 @@ LONG WINAPI MainWndProc (
|
|||
VID_SetMode ((int)vid_fullscreen_mode.value, vid_curpal);
|
||||
*/ break;
|
||||
|
||||
case SC_SCREENSAVE:
|
||||
case SC_MONITORPOWER:
|
||||
case SC_SCREENSAVE:
|
||||
case SC_MONITORPOWER:
|
||||
if (w32sw.isfullscreen)
|
||||
{
|
||||
// don't call DefWindowProc() because we don't want to start
|
||||
|
@ -574,7 +574,7 @@ LONG WINAPI MainWndProc (
|
|||
}
|
||||
break;
|
||||
*/
|
||||
case WM_CLOSE:
|
||||
case WM_CLOSE:
|
||||
// this causes Close in the right-click task bar menu not to work, but right
|
||||
// now bad things happen if Close is handled in that case (garbage and a
|
||||
// crash on Win95)
|
||||
|
@ -588,18 +588,20 @@ LONG WINAPI MainWndProc (
|
|||
}
|
||||
break;
|
||||
|
||||
#ifdef HAVE_CDPLAYER
|
||||
case MM_MCINOTIFY:
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam);
|
||||
lRet = CDAudio_MessageHandler (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
/* pass all unhandled messages to DefWindowProc */
|
||||
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
/* pass all unhandled messages to DefWindowProc */
|
||||
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
|
||||
/* return 0 if handled message, 1 if not */
|
||||
return lRet;
|
||||
/* return 0 if handled message, 1 if not */
|
||||
return lRet;
|
||||
}
|
||||
|
||||
|
||||
|
@ -632,18 +634,18 @@ void VID_CreateWindow(int width, int height, qboolean fullscreen)
|
|||
}
|
||||
|
||||
/* Register the frame class */
|
||||
wc.style = 0;
|
||||
wc.lpfnWndProc = (WNDPROC)MainWndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = global_hInstance;
|
||||
wc.hIcon = 0;
|
||||
wc.hCursor = LoadCursor (NULL,IDC_ARROW);
|
||||
wc.style = 0;
|
||||
wc.lpfnWndProc = (WNDPROC)MainWndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = global_hInstance;
|
||||
wc.hIcon = 0;
|
||||
wc.hCursor = LoadCursor (NULL,IDC_ARROW);
|
||||
wc.hbrBackground = (void *)COLOR_GRAYTEXT;
|
||||
wc.lpszMenuName = 0;
|
||||
wc.lpszClassName = WINDOW_CLASS_NAME;
|
||||
wc.lpszMenuName = 0;
|
||||
wc.lpszClassName = WINDOW_CLASS_NAME;
|
||||
|
||||
RegisterClass(&wc);
|
||||
RegisterClass(&wc);
|
||||
|
||||
r.left = 0;
|
||||
r.top = 0;
|
||||
|
|
|
@ -1665,11 +1665,9 @@ static texid_t SelectPassTexture(const shaderpass_t *pass)
|
|||
case T_GEN_CURRENTRENDER:
|
||||
return shaderstate.tex_currentrender;
|
||||
case T_GEN_VIDEOMAP:
|
||||
#ifndef NOMEDIA
|
||||
#ifdef HAVE_MEDIA_DECODER
|
||||
if (pass->cin)
|
||||
{
|
||||
return Media_UpdateForShader(pass->cin);
|
||||
}
|
||||
#endif
|
||||
return r_nulltex;
|
||||
|
||||
|
@ -5602,7 +5600,7 @@ void VKBE_BaseEntTextures(void)
|
|||
{
|
||||
batch_t *batches[SHADER_SORT_COUNT];
|
||||
BE_GenModelBatches(batches, shaderstate.curdlight, shaderstate.mode);
|
||||
VKBE_SubmitMeshes(NULL, batches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
VKBE_SubmitMeshes(NULL, batches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
VKBE_SelectEntity(&r_worldentity);
|
||||
}
|
||||
|
||||
|
@ -6087,7 +6085,7 @@ void VKBE_DrawWorld (batch_t **worldbatches)
|
|||
VKBE_SelectMode(BEM_STANDARD);
|
||||
|
||||
|
||||
VKBE_SubmitMeshes(worldbatches, batches, SHADER_SORT_PORTAL, SHADER_SORT_DECAL);
|
||||
VKBE_SubmitMeshes(worldbatches, batches, SHADER_SORT_PORTAL, SHADER_SORT_SEETHROUGH+1);
|
||||
RSpeedEnd(RSPEED_WORLD);
|
||||
|
||||
#ifdef RTLIGHTS
|
||||
|
@ -6098,7 +6096,7 @@ void VKBE_DrawWorld (batch_t **worldbatches)
|
|||
#endif
|
||||
}
|
||||
|
||||
VKBE_SubmitMeshes(worldbatches, batches, SHADER_SORT_DECAL, SHADER_SORT_COUNT);
|
||||
VKBE_SubmitMeshes(worldbatches, batches, SHADER_SORT_SEETHROUGH+1, SHADER_SORT_COUNT);
|
||||
|
||||
|
||||
if (r_wireframe.ival)
|
||||
|
|
Loading…
Reference in a new issue