diff --git a/engine/Makefile b/engine/Makefile index 9abb2b08a..cebf85f0c 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -26,11 +26,12 @@ WHOAMI:=$(shell whoami) #update these to download+build a different version. this assumes that the url+subdirs etc contain a consistant version everywhere. JPEGVER=9b ZLIBVER=1.2.11 -PNGVER=1.6.29 -OGGVER=1.3.2 +PNGVER=1.6.34 +OGGVER=1.3.3 VORBISVER=1.3.5 -SDL2VER=2.0.5 +SDL2VER=2.0.7 SCINTILLAVER=373 +OPUSVER=1.2.1 #only limited forms of cross-making is supported #only the following 3 are supported @@ -80,6 +81,9 @@ endif ifeq (,$(findstring DNO_SPEEX,$(FTE_CONFIG_EXTRA))) USE_SPEEX=1 endif +ifeq (,$(findstring DNO_OPUS,$(FTE_CONFIG_EXTRA))) + USE_OPUS=1 +endif ifeq (,$(findstring DNO_BOTLIB,$(FTE_CONFIG_EXTRA))) USE_BOTLIB=1 endif @@ -862,13 +866,25 @@ ifeq (1,$(USE_BOTLIB)) l_struct.o endif +ifeq (1,$(USE_OPUS)) + LIBOPUS_STATIC=-DOPUS_STATIC + LIBOPUS_LDFLAGS=-lopus +endif + ifeq (1,$(USE_VORBISFILE)) - LIBVORBISFILE_STATIC=-DLIBVORBISFILE_STATIC + OGGVORBISFILE_STATIC=-DLIBVORBISFILE_STATIC else OGGVORBISLDFLAGS= - LIBVORBISFILE_STATIC= + OGGVORBISFILE_STATIC= endif +COMMONLIBFLAGS= +CLIENTLIBFLAGS=$(COMMONLIBFLAGS) $(LIBOPUS_STATIC) $(OGGVORBISFILE_STATIC) +SERVERLIBFLAGS=$(COMMONLIBFLAGS) +COMMONLDDEPS= +CLIENTLDDEPS=$(COMMONLDDEPS) $(LIBOPUS_LDFLAGS) $(OGGVORBISLDFLAGS) +SERVERLDDEPS=$(COMMONLDDEPS) + #the defaults for sdl come first #CC_MACHINE:=$(shell $(CC) -dumpmachine) ifeq ($(FTE_TARGET),SDL2) @@ -896,9 +912,9 @@ ifdef windir M_LDFLAGS=$(MLDFLAGS) -lmingw32 -lws2_32 `$(SDLCONFIG) --static-libs` SV_LDFLAGS=`$(SDLCONFIG) --static-libs` else - GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` - VK_LDFLAGS=$(VKLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` - M_LDFLAGS=$(MLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) `$(SDLCONFIG) --static-libs` + GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) `$(SDLCONFIG) --static-libs` + VK_LDFLAGS=$(VKLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) `$(SDLCONFIG) --static-libs` + M_LDFLAGS=$(MLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) `$(SDLCONFIG) --static-libs` SV_LDFLAGS=`$(SDLCONFIG) --static-libs` endif GL_CFLAGS=-DFTE_SDL $(GLCFLAGS) `$(SDLCONFIG) --cflags` @@ -936,7 +952,7 @@ endif #specific targets override those defaults as needed. #google native client ifeq ($(FTE_TARGET),nacl) - OGGVORBISLDFLAGS= + CLIENTLDDEPS= NARCH ?= x86_32 ifeq ($(shell uname -o 2>&1 | grep Cygwin),) @@ -984,8 +1000,8 @@ ifeq ($(FTE_TARGET),nacl) GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) sys_ppapi.o cd_null.o gl_vidppapi.o fs_ppapi.o snd_ppapi.o - GL_LDFLAGS=$(GLLDFLAGS) $(OGGVORBISLDFLAGS) - M_LDFLAGS=$(GLLDFLAGS) $(OGGVORBISLDFLAGS) + GL_LDFLAGS=$(GLLDFLAGS) $(CLIENTLDDEPS) + M_LDFLAGS=$(GLLDFLAGS) $(CLIENTLDDEPS) GLB_DIR=gl_nacl_$(NARCH) MINGL_DIR=mingl_nacl_$(NARCH) @@ -1026,14 +1042,14 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --static-libs` QCC_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a else - GL_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` - VK_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` - M_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(MLDFLAGS) `$(SDLCONFIG) --libs` + GL_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` + VK_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(GLLDFLAGS) `$(SDLCONFIG) --libs` + M_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $(MLDFLAGS) `$(SDLCONFIG) --libs` SV_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a -lm -lmingw32 -lws2_32 -lwinmm `$(SDLCONFIG) --libs` QCC_LDFLAGS=$(MINGW_LIBS_DIR)/libz.a endif - GL_CFLAGS=-DFTE_SDL -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) -I$(LIBS_DIR) $(GLCFLAGS) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) + GL_CFLAGS=-DFTE_SDL -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) -I$(LIBS_DIR) $(GLCFLAGS) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS) GLB_DIR=gl_mgw_sdl$(BITS) GLCL_DIR=glcl_mgw_sdl$(BITS) @@ -1049,16 +1065,16 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) M_EXE_NAME=../$(EXE_NAME)-sdl$(BITS)$(EXEPOSTFIX) #with d3d... #MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START) - #M_CFLAGS=$(D3DCFLAGS) $(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) + #M_CFLAGS=$(D3DCFLAGS) $(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS) #without d3d... MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START) - M_CFLAGS=$(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) + M_CFLAGS=$(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL -I$(LIBS_DIR) -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS) D3DCL_OBJS=$(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(D3DGL_OBJS) $(LTO_END) resources.o $(LTO_START) D3D_EXE_NAME=../$(EXE_NAME)-sdl-d3d$(BITS)$(EXEPOSTFIX) D3DCL_EXE_NAME=../$(EXE_NAME)-sdl-d3dcl$(BITS)$(EXEPOSTFIX) - D3D_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 - D3D_CFLAGS=$(D3DCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) + D3D_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -lws2_32 -lmingw32 $(SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 + D3D_CFLAGS=$(D3DCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS) D3DB_DIR=sdl_d3d_mgw$(BITS) D3DCL_DIR=sdl_d3dcl_mgw$(BITS) @@ -1066,7 +1082,7 @@ ifeq (win_SDL,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) VKCL_OBJS=$(VKQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_bloom.o gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(D3DGL_OBJS) $(LTO_END) resources.o $(LTO_START) VK_EXE_NAME=../$(EXE_NAME)-sdl-vk$(BITS)$(EXEPOSTFIX) VKCL_EXE_NAME=../$(EXE_NAME)-sdl-vkcl$(BITS)$(EXEPOSTFIX) - VK_CFLAGS=$(VKCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(LIBVORBISFILE_STATIC) $(DX7SDK) $(SPEEXCFLAGS) + VK_CFLAGS=$(VKCFLAGS) -DFTE_SDL -DNO_XFLIP -I$(LIBS_DIR) -I$(MINGW_LIBS_DIR)/ -I$(MINGW_LIBS_DIR) $(CLIENTLIBFLAGS) $(DX7SDK) $(SPEEXCFLAGS) VKB_DIR=sdl_vk_mgw$(BITS) VKCL_DIR=sdl_vkcl_mgw$(BITS) @@ -1215,8 +1231,8 @@ ifeq (win,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidnt.o $(WINDOWS_OBJS) GL_EXE_NAME=../fteglqw$(BITS)$(EXEPOSTFIX) GLCL_EXE_NAME=../fteglqwcl$(BITS)$(EXEPOSTFIX) - GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows - GL_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) + GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows + GL_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS) GLB_DIR=gl_mgw$(BITS) GLCL_DIR=glcl_mgw$(BITS) @@ -1229,24 +1245,24 @@ ifeq (win,$(findstring win,$(FTE_TARGET))$(findstring _SDL,$(FTE_TARGET))) MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidnt.o gl_videgl.o $(WINDOWS_OBJS) M_EXE_NAME=../$(EXE_NAME)$(BITS)$(EXEPOSTFIX) MCL_EXE_NAME=../$(EXE_NAME)cl$(BITS)$(EXEPOSTFIX) - M_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows - M_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(D3DCFLAGS) $(DX7SDK) $(VKCFLAGS) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) + M_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows + M_CFLAGS=$(GLCFLAGS) $(W32_CFLAGS) $(D3DCFLAGS) $(DX7SDK) $(VKCFLAGS) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS) MB_DIR=m_mgw$(BITS) MCL_DIR=mcl_mgw$(BITS) D3DCL_OBJS=$(D3DQUAKE_OBJS) $(D3DGL_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) $(WINDOWS_OBJS) D3D_EXE_NAME=../fted3dqw$(BITS)$(EXEPOSTFIX) D3DCL_EXE_NAME=../fted3dclqw$(BITS)$(EXEPOSTFIX) - D3D_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows - D3D_CFLAGS=$(D3DCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) + D3D_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows + D3D_CFLAGS=$(D3DCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS) D3DB_DIR=d3d_mgw$(BITS) D3DCL_DIR=d3dcl_mgw$(BITS) VKCL_OBJS=$(GLQUAKE_OBJS) $(D3DGL_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) $(WINDOWS_OBJS) gl_vidnt.o VK_EXE_NAME=../ftevkqw$(BITS)$(EXEPOSTFIX) VKCL_EXE_NAME=../ftevkclqw$(BITS)$(EXEPOSTFIX) - VK_LDFLAGS=$(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows - VK_CFLAGS=$(VKCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(LIBVORBISFILE_STATIC) $(SPEEXCFLAGS) + VK_LDFLAGS=$(IMAGELDFLAGS) $(CLIENTLDDEPS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows + VK_CFLAGS=$(VKCFLAGS) $(W32_CFLAGS) $(DX7SDK) -DMULTITHREAD $(CLIENTLIBFLAGS) $(SPEEXCFLAGS) VKB_DIR=vk_mgw$(BITS) VKCL_DIR=vkcl_mgw$(BITS) @@ -1291,7 +1307,7 @@ ifeq ($(FTE_TARGET),bsd) MINGL_DIR=mingl_bsd endif ifneq (,$(findstring linux,$(FTE_TARGET))) - OGGVORBISLDFLAGS= + CLIENTLDDEPS= SV_DIR=sv_linux$(BITS) SV_EXE_NAME=../$(EXE_NAME)-sv$(BITS) @@ -1315,7 +1331,7 @@ ifneq (,$(findstring linux,$(FTE_TARGET))) GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o gl_videgl.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o GL_EXE_NAME=../$(EXE_NAME)-gl$(BITS) GLCL_EXE_NAME=../$(EXE_NAME)-glcl$(BITS) - GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) + GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS) GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(CL_CFLAGS) GLB_DIR=gl_linux$(BITS) GLCL_DIR=glcl_linux$(BITS) @@ -1323,7 +1339,7 @@ ifneq (,$(findstring linux,$(FTE_TARGET))) VKCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o gl_videgl.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o VK_EXE_NAME=../$(EXE_NAME)-vk$(BITS) VKCL_EXE_NAME=../$(EXE_NAME)-vkcl$(BITS) - VK_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) + VK_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS) VK_CFLAGS=$(VKCFLAGS) -I/usr/X11R6/include $(CL_CFLAGS) VKB_DIR=vk_linux$(BITS) VKCL_DIR=vkcl_linux$(BITS) @@ -1380,7 +1396,7 @@ ifneq ($(shell echo $(FTE_TARGET)|grep macosx),) GLCL_DIR=glcl_macosx$(EXTENSION)$(BITS) MINGL_DIR=mingl_macosx$(EXTENSION)$(BITS) - OGGVORBISLDFLAGS= + CLIENTLDDEPS= GL_CFLAGS=$(GLCFLAGS) -D__MACOSX__ -L/sw/lib -I/sw/include -L/opt/local/lib -I/opt/local/include -I$(LIBS_DIR) ifeq ($(FTE_TARGET),macosx_x86) @@ -1413,7 +1429,7 @@ ifeq ($(FTE_TARGET),morphos) SV_DIR=sv_morphos SV_LDFLAGS=-ldl -lz - OGGVORBISLDFLAGS= + CLIENTLDDEPS= GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) gl_vidmorphos.o in_morphos.o snd_morphos.o cd_null.o sys_morphos.o GL_EXE_NAME=../$(EXE_NAME)-morphos-gl @@ -1450,7 +1466,7 @@ ifeq ($(FTE_TARGET),dos) VKCL_DIR=vkcl_dos IMAGELDFLAGS= - OGGVORBISLDFLAGS= + CLIENTLDDEPS= SOFTWARE_OBJS=sw_rast.o sw_backend.o sw_image.o @@ -1473,16 +1489,16 @@ ifeq ($(FTE_TARGET),cyg) GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o GL_EXE_NAME=../$(EXE_NAME)-cyg-gl$(EXEPOSTFIX) GLCL_EXE_NAME=../$(EXE_NAME)-cyg-glcl$(EXEPOSTFIX) - GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) -lz -lltdl - GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(SPEEXCFLAGS) $(LIBVORBISFILE_STATIC) -DUSE_LIBTOOL + GL_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS) -lz -lltdl + GL_CFLAGS=$(GLCFLAGS) -I/usr/X11R6/include $(SPEEXCFLAGS) $(CLIENTLIBFLAGS) -DUSE_LIBTOOL GLB_DIR=gl_cygwin GLCL_DIR=glcl_cygwin MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) $(SPEEX_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o M_EXE_NAME=../$(EXE_NAME)-cyg$(EXEPOSTFIX) MCL_EXE_NAME=../$(EXE_NAME)-cyg-cl$(EXEPOSTFIX) - M_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(OGGVORBISLDFLAGS) -lz -lltdl - M_CFLAGS=$(GLCFLAGS) $(SPEEXCFLAGS) $(LIBVORBISFILE_STATIC) -DUSE_LIBTOOL + M_LDFLAGS=$(GLLDFLAGS) $(XLDFLAGS) $(CLIENTLDDEPS) -lz -lltdl + M_CFLAGS=$(GLCFLAGS) $(SPEEXCFLAGS) $(CLIENTLIBFLAGS) -DUSE_LIBTOOL MB_DIR=m_cygwin MCL_DIR=mcl_cygwin @@ -1559,11 +1575,11 @@ ifeq ($(FTE_TARGET),web) GLB_DIR=gl_web GL_EXE_NAME=../ftewebgl.js - GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(OGGVORBISLDFLAGS) + GL_LDFLAGS=$(GLLDFLAGS) $(IMAGELDFLAGS) $(CLIENTLDDEPS) GL_CFLAGS=$(GLCFLAGS) IMAGELDFLAGS= - OGGVORBISLDFLAGS= + CLIENTLDDEPS= BOTLIB_CFLAGS= #generate deps properly @@ -2111,7 +2127,9 @@ AR?=$(ARCH)-ar CONFIGARGS+= -host=$(ARCH) --enable-shared=no CC="$(CC)" CONFIGARGS:= $(CONFIGARGS) -#--disable-silent-rules +#--disable-silent-rules + +TOOLOVERRIDES+=CFLAGS="$$CFLAGS -Os" libs-$(ARCH)/libjpeg.a: @@ -2130,11 +2148,16 @@ libs-$(ARCH)/libogg.a: test -f libogg-$(OGGVER).tar.gz || wget http://downloads.xiph.org/releases/ogg/libogg-$(OGGVER).tar.gz -test -f libs-$(ARCH)/libogg.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../libogg-$(OGGVER).tar.gz && cd libogg-$(OGGVER) && $(TOOLOVERRIDES) ./configure $(CONFIGARGS) && $(TOOLOVERRIDES) $(MAKE) && cp src/.libs/libogg.a ../ && $(TOOLOVERRIDES) $(AR) -s ../libogg.a && mkdir ../ogg && cp include/ogg/*.h ../ogg) -libs-$(ARCH)/libvorbis.a: +libs-$(ARCH)/libvorbis.a: libs-$(ARCH)/libogg.a test -f libvorbis-$(VORBISVER).tar.gz || wget http://downloads.xiph.org/releases/vorbis/libvorbis-$(VORBISVER).tar.gz -test -f libs-$(ARCH)/libvorbisfile.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../libvorbis-$(VORBISVER).tar.gz && cd libvorbis-$(VORBISVER) && $(TOOLOVERRIDES) ./configure PKG_CONFIG= $(CONFIGARGS) --disable-oggtest --with-ogg-libraries=.. --with-ogg-includes=$(NATIVE_ABSBASE_DIR)/libs-$(ARCH)/libogg-$(OGGVER)/include && $(TOOLOVERRIDES) $(MAKE) && cp lib/.libs/libvorbis.a ../ && cp lib/.libs/libvorbisfile.a ../ && mkdir ../vorbis && cp include/vorbis/*.h ../vorbis) -makelibs: libs-$(ARCH)/libjpeg.a libs-$(ARCH)/libz.a libs-$(ARCH)/libpng.a libs-$(ARCH)/libogg.a libs-$(ARCH)/libvorbis.a +libs-$(ARCH)/libopus.a: + test -f opus-$(OPUSVER).tar.gz || wget https://archive.mozilla.org/pub/opus/opus-$(OPUSVER).tar.gz + -test -f libs-$(ARCH)/libopus.a || (mkdir -p libs-$(ARCH) && cd libs-$(ARCH) && tar -xvzf ../opus-$(OPUSVER).tar.gz && cd opus-$(OPUSVER) && CFLAGS="$(CFLAGS) -Os" $(TOOLOVERRIDES) ./configure $(CONFIGARGS) && $(TOOLOVERRIDES) $(MAKE) && cp .libs/libopus.a ../ && cp include/opus*.h ../) + + +makelibs: libs-$(ARCH)/libjpeg.a libs-$(ARCH)/libz.a libs-$(ARCH)/libpng.a libs-$(ARCH)/libogg.a libs-$(ARCH)/libvorbis.a libs-$(ARCH)/libopus.a HTTP_OBJECTS=http/httpserver.c http/iwebiface.c common/fs_stdio.c $(RELEASE_DIR)/httpserver$(BITS): $(HTTP_OBJECTS) diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 56008bd67..3bc024442 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -5911,7 +5911,7 @@ void CL_ExecInitialConfigs(char *resetcommand) } else { //they didn't give us an rc file! - int cfg = COM_FDepthFile ("config.cfg", true); +// int cfg = COM_FDepthFile ("config.cfg", true); int q3cfg = COM_FDepthFile ("q3config.cfg", true); // Cbuf_AddText ("bind ` toggleconsole\n", RESTRICT_LOCAL); //in case default.cfg does not exist. :( if (def!=FDEPTH_MISSING) diff --git a/engine/client/pr_csqc.c b/engine/client/pr_csqc.c index a3fc292f1..f34c8ab88 100644 --- a/engine/client/pr_csqc.c +++ b/engine/client/pr_csqc.c @@ -1015,17 +1015,28 @@ static void QCBUILTIN PF_R_AddEntity(pubprogfuncs_t *prinst, struct globalvars_s static void QCBUILTIN PF_R_RemoveEntity(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals) { csqcedict_t *in = (void*)G_EDICT(prinst, OFS_PARM0); - entity_t ent; + int keynum, i; if (ED_ISFREE(in) || in->entnum == 0) { csqc_deprecated("Tried drawing a free/removed/world entity\n"); return; } - if (CopyCSQCEdictToEntity(in, &ent)) + //work out the internal key that relates to the given ent. we'll remove all ents with the same key. + if (in->xv->entnum && !in->xv->camera_transform) //yes, camera_transform is this hacky + keynum = in->xv->entnum; + else + keynum = -in->entnum; + + for (i = 0; i < cl_numvisedicts; ) { - CLQ1_AddShadow(&ent); - V_AddAxisEntity(&ent); + if (cl_visedicts[i].keynum == keynum) + { + cl_numvisedicts--; + memmove(&cl_visedicts[i], &cl_visedicts[i+1], sizeof(*cl_visedicts)*(cl_numvisedicts-i)); + } + else + i++; } } void CL_AddDecal(shader_t *shader, vec3_t origin, vec3_t up, vec3_t side, vec3_t rgbvalue, float alphavalue); @@ -6052,7 +6063,7 @@ static struct { {"clearscene", PF_R_ClearScene, 300}, // #300 void() clearscene (EXT_CSQC) {"addentities", PF_R_AddEntityMask, 301}, // #301 void(float mask) addentities (EXT_CSQC) {"addentity", PF_R_AddEntity, 302}, // #302 void(entity ent) addentity (EXT_CSQC) -// {"removeentity", PF_R_RemoveEntity, 0}, + {"removeentity", PF_R_RemoveEntity, 0}, {"setproperty", PF_R_SetViewFlag, 303}, // #303 float(float property, ...) setproperty (EXT_CSQC) {"renderscene", PF_R_RenderScene, 304}, // #304 void() renderscene (EXT_CSQC) diff --git a/engine/common/gl_q2bsp.c b/engine/common/gl_q2bsp.c index ec86f0a92..af420b850 100644 --- a/engine/common/gl_q2bsp.c +++ b/engine/common/gl_q2bsp.c @@ -2297,6 +2297,7 @@ static qboolean CModRBSP_LoadVertexes (model_t *mod, qbyte *mod_base, lump_t *l) vec2_t *lmout, *stout; vec4_t *cout; int sty; + extern qbyte lmgamma[256]; in = (void *)(mod_base + l->fileofs); if (l->filelen % sizeof(*in)) @@ -2346,10 +2347,10 @@ static qboolean CModRBSP_LoadVertexes (model_t *mod, qbyte *mod_base, lump_t *l) } for (sty = 0; sty < MAXRLIGHTMAPS; sty++) { - for ( j=0 ; j < 4 ; j++) - { - prv->colors4f_array[sty][i][j] = in->color[sty][j]/255.0f; - } + prv->colors4f_array[sty][i][0] = lmgamma[in->color[sty][0]]/255.0f; + prv->colors4f_array[sty][i][1] = lmgamma[in->color[sty][1]]/255.0f; + prv->colors4f_array[sty][i][2] = lmgamma[in->color[sty][2]]/255.0f; + prv->colors4f_array[sty][i][3] = in->color[sty][3]/255.0f; } } diff --git a/engine/common/pr_bgcmd.c b/engine/common/pr_bgcmd.c index 0a9fd4fa7..59e98c18d 100644 --- a/engine/common/pr_bgcmd.c +++ b/engine/common/pr_bgcmd.c @@ -34,8 +34,28 @@ void PF_buf_shutdown(pubprogfuncs_t *prinst); void skel_info_f(void); void skel_generateragdoll_f(void); + +#ifdef __SSE2__ +#include "xmmintrin.h" +#endif + void PF_Common_RegisterCvars(void) { +#ifndef QUAKETC +#ifdef __SSE2__ + //disable FTZ and DAZ, in case some compiler left them on... + unsigned int mxcsr = _mm_getcsr(); + if (mxcsr & 0x8040) + { + if (COM_CheckParm("-nodaz")) + { + Con_Printf("Disabling DAZ. This may have performance implications.\n"); + _mm_setcsr(mxcsr & ~(0x8040)); + } + else + Con_Printf(CON_WARNING "WARNING: denormalised floats are disabled. Use -nodaz to re-enable if mods malfunction\n"); + } +#else volatile union { int i; @@ -45,6 +65,8 @@ void PF_Common_RegisterCvars(void) b.i = 1; if (!(a.f && b.f)) Con_Printf(CON_WARNING "WARNING: denormalised floats are disabled. Some mods might may malfunction\n"); +#endif +#endif Cvar_Register (&sv_gameplayfix_blowupfallenzombies, cvargroup_progs); diff --git a/engine/d3d/d3d_backend.c b/engine/d3d/d3d_backend.c index 34605e5a5..a3dd3dcec 100644 --- a/engine/d3d/d3d_backend.c +++ b/engine/d3d/d3d_backend.c @@ -214,6 +214,7 @@ typedef struct int mipfilter[3]; int picfilter[3]; + D3DSAMPLERSTATETYPE anisfilter; } d3dbackend_t; typedef struct @@ -290,17 +291,17 @@ static void BE_ApplyTMUState(unsigned int tu, unsigned int flags) int *filter = (flags & SHADER_PASS_UIPIC)?shaderstate.picfilter:shaderstate.mipfilter; if ((filter[2] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR)) - mag = D3DTEXF_ANISOTROPIC;//D3DTEXF_LINEAR; + mag = shaderstate.anisfilter; else mag = D3DTEXF_POINT; if (filter[1] == -1 || (flags & IF_NOMIPMAP)) mip = D3DTEXF_NONE; else if ((filter[1] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR)) - mip = D3DTEXF_ANISOTROPIC;//D3DTEXF_LINEAR; + mip = D3DTEXF_LINEAR; else mip = D3DTEXF_POINT; if ((filter[0] && !(flags & SHADER_PASS_NEAREST)) || (flags & SHADER_PASS_LINEAR)) - min = D3DTEXF_ANISOTROPIC;//D3DTEXF_LINEAR; + min = shaderstate.anisfilter; else min = D3DTEXF_POINT; @@ -317,13 +318,21 @@ void D3D9_UpdateFiltering(image_t *imagelist, int filtermip[3], int filterpic[3] int i; memcpy(shaderstate.mipfilter, filtermip, sizeof(shaderstate.mipfilter)); memcpy(shaderstate.picfilter, filterpic, sizeof(shaderstate.picfilter)); + if (anis <= 1) + { + anis = 1; + shaderstate.anisfilter = D3DTEXF_LINEAR; + } + else + shaderstate.anisfilter = D3DTEXF_ANISOTROPIC; for (i = 0; i < MAX_TMUS; i++) { - shaderstate.tmuflags[i] = ~shaderstate.tmuflags[i]; - BE_ApplyTMUState(i, ~shaderstate.tmuflags[i]); - IDirect3DDevice9_SetSamplerState(pD3DDev9, i, D3DSAMP_MAXANISOTROPY, anis); +// IDirect3DDevice9_SetSamplerState(pD3DDev9, i, D3DSAMP_MIPMAPLODBIAS, 0); //negative lod bias? :s + +// shaderstate.tmuflags[i] = ~shaderstate.tmuflags[i]; + BE_ApplyTMUState(i, ~shaderstate.tmuflags[i]); } } @@ -1440,7 +1449,7 @@ static void GenerateTCMods3(const shaderpass_t *pass, float *dest) mesh_t *mesh; unsigned int mno; // unsigned int fvertex = 0; //unused variable - int i; +// int i; float *src; float *out; for (mno = 0; mno < shaderstate.nummeshes; mno++) diff --git a/engine/gl/gl_font.c b/engine/gl/gl_font.c index 612c93b88..3f0b0c5a0 100644 --- a/engine/gl/gl_font.c +++ b/engine/gl/gl_font.c @@ -1712,24 +1712,49 @@ struct font_s *Font_LoadFont(float vheight, const char *fontfilename) COM_WorkerPartialSync(f->singletexture, &f->singletexture->status, TEX_LOADING); } - for ( ; i < 32; i++) + //halflife fonts are awkward. 256 chars are placed horizontally, and are 2 chars narrower than the height. + //FIXME: we ought to reprocess the image, for old gpus to avoid downscaling... + /*if (f->singletexture && f->singletexture->status == TEX_LOADED && f->singletexture->width == (f->singletexture->height-2) * 256) { -// f->chars[i].texplane = INVALIDPLANE; - } - /*force it to load, even if there's nothing there*/ - for ( ; i < 128; i++) - { - c = Font_GetCharStore(f, i); + f->txwidth = f->singletexture->width; + f->txheight = f->singletexture->height; + for ( ; i < 256; i++) + { + c = Font_GetCharStore(f, i); - c->advance = f->charheight; - c->bmh = PLANEWIDTH/16; - c->bmw = PLANEWIDTH/16; - c->bmx = (i&15)*(PLANEWIDTH/16); - c->bmy = (i/16)*(PLANEWIDTH/16); - c->left = 0; - c->top = 0; - c->nextchar = 0; //these chars are not linked in - c->texplane = BITMAPPLANE; + c->advance = f->charheight; + c->bmh = f->singletexture->height; + c->bmw = f->singletexture->height-2; + c->bmx = i*(f->singletexture->height-2); + c->bmy = 0; + c->left = 0; + c->top = 0; + c->nextchar = 0; //these chars are not linked in + c->texplane = BITMAPPLANE; + } + return f; //fixme: no 0xe0XX range + } + else*/ + { + for ( ; i < 32; i++) + { + // f->chars[i].texplane = INVALIDPLANE; + } + /*force it to load, even if there's nothing there*/ + for ( ; i < 128; i++) + { + c = Font_GetCharStore(f, i); + + c->advance = f->charheight; + c->bmh = PLANEWIDTH/16; + c->bmw = PLANEWIDTH/16; + c->bmx = (i&15)*(PLANEWIDTH/16); + c->bmy = (i/16)*(PLANEWIDTH/16); + c->left = 0; + c->top = 0; + c->nextchar = 0; //these chars are not linked in + c->texplane = BITMAPPLANE; + } } } @@ -2108,7 +2133,8 @@ void Font_InvalidateColour(vec4_t newcolour) if (font_colourmask & CON_NONCLEARBG) { - Font_Flush(); + if (R2D_Flush) + R2D_Flush(); R2D_Flush = Font_Flush; } font_colourmask = CON_WHITEMASK; diff --git a/engine/qclib/qcc_pr_comp.c b/engine/qclib/qcc_pr_comp.c index 012ad5725..9daf1f297 100644 --- a/engine/qclib/qcc_pr_comp.c +++ b/engine/qclib/qcc_pr_comp.c @@ -3093,10 +3093,15 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_ case OP_ADD_EF: case OP_SUB_EF: if (flag_qccx) //no implicit cast. qccx always uses denormalised floats everywhere. - QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: qccx entity offsets are unsafe, and denormals have limited precision"); + QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: qccx entity offsets are unsafe, and denormals are unsafe"); + else if (1) + { //slightly better defined. + var_b = QCC_PR_StatementFlags(&pr_opcodes[OP_CONV_FTOI], var_b, nullsref, NULL, (flags&STFL_PRESERVEB)?STFL_PRESERVEA:0); + return QCC_PR_StatementFlags(&pr_opcodes[(op==&pr_opcodes[OP_ADD_EF])?OP_ADD_EI:OP_SUB_EI], var_a, var_b, NULL, flags&STFL_PRESERVEA); + } else { - QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: denormals have limited precision"); + QCC_PR_ParseWarning(WARN_DENORMAL, "OP_ADD_EF: denormals are unsafe"); var_c = QCC_PR_GetSRef(NULL, "nextent", NULL, false, 0, false); if (!var_c.cast) QCC_PR_ParseError(0, "the nextent builtin is not defined"); @@ -3105,7 +3110,7 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_ var_b = QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], var_c, var_b, NULL, 0); flags&=~STFL_PRESERVEB; } - var_c = QCC_PR_StatementFlags(&pr_opcodes[(op==&pr_opcodes[OP_ADD_EF])?OP_ADD_F:OP_SUB_F], var_a, var_b, NULL, flags); + var_c = QCC_PR_StatementFlags(&pr_opcodes[(op==&pr_opcodes[OP_ADD_EF])?OP_ADD_IF:OP_SUB_F], var_a, var_b, NULL, flags); var_c.cast = type_entity; return var_c; @@ -3346,8 +3351,8 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_ var_c = QCC_PR_GetSRef(NULL, "itof", NULL, false, 0, 0); if (!var_c.cast) { - //with denormals, 5 * 1i -> 5i - QCC_PR_ParseWarning(WARN_DENORMAL, "itof emulation: denormals have limited precision"); + //with denormals, 5.0 * 1i -> 5i, and 5i / 1i = 5.0 + QCC_PR_ParseWarning(WARN_DENORMAL, "itof emulation: denormals are unsafe"); var_a = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], var_a, QCC_MakeIntConst(1), NULL, 0); } else @@ -3373,7 +3378,7 @@ QCC_sref_t QCC_PR_StatementFlags ( QCC_opcode_t *op, QCC_sref_t var_a, QCC_sref_ if (!var_c.cast) { //with denormals, 5 * 1i -> 5i - QCC_PR_ParseWarning(WARN_DENORMAL, "ftoi emulation: denormals have limited precision"); + QCC_PR_ParseWarning(WARN_DENORMAL, "ftoi emulation: denormals are unsafe"); var_a = QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], var_a, QCC_MakeIntConst(1), NULL, 0); } else @@ -5962,14 +5967,14 @@ QCC_sref_t QCC_PR_ParseFunctionCall (QCC_ref_t *funcref) //warning, the func cou e = QCC_PR_Expression(TOP_PRIORITY, EXPR_DISALLOW_COMMA); QCC_PR_Expect(")"); - e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], e, QCC_MakeIntConst(1), NULL, 0); + e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_I], e, QCC_MakeIntConst(1), NULL, 0); d = QCC_PR_GetSRef(NULL, "nextent", NULL, false, 0, false); if (!d.cast) QCC_PR_ParseError(0, "the nextent builtin is not defined"); QCC_UnFreeTemp(e); d = QCC_PR_GenerateFunctionCall1 (nullsref, d, e, type_entity); - d = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], d, QCC_MakeIntConst(1), NULL, 0); - e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_F], e, d, NULL, 0); + d = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_I], d, QCC_MakeIntConst(1), NULL, 0); + e = QCC_PR_StatementFlags(&pr_opcodes[OP_DIV_I], e, d, NULL, 0); return e; } @@ -6997,7 +7002,7 @@ QCC_ref_t *QCC_PR_ParseRefArrayPointer (QCC_ref_t *retbuf, QCC_ref_t *r, pbool a QCC_sref_t base = QCC_RefToDef(r, true); if (tmp.cast && tmp.cast->type == ev_float) { - QCC_PR_ParseWarning(WARN_DENORMAL, "string offsetting emulation: denormals have limited precision"); + QCC_PR_ParseWarning(WARN_DENORMAL, "string offsetting emulation: denormals are unsafe"); idx = QCC_PR_Statement(&pr_opcodes[OP_ADD_F], base, QCC_SupplyConversion(tmp, ev_float, true), NULL); } else @@ -8655,7 +8660,7 @@ QCC_sref_t QCC_LoadFromArray(QCC_sref_t base, QCC_sref_t index, QCC_type_t *t, p return QCC_PR_StatementFlags(&pr_opcodes[OP_ADD_I], base, index, NULL, 0); else { - QCC_PR_ParseWarning(WARN_DENORMAL, "using denormals to accelerate field-array access"); + QCC_PR_ParseWarning(WARN_DENORMAL, "using denormals to accelerate field-array access, which is unsafe"); return QCC_PR_StatementFlags(&pr_opcodes[OP_ADD_F], base, QCC_PR_StatementFlags(&pr_opcodes[OP_MUL_F], index, QCC_MakeIntConst(1), NULL, 0), NULL, 0); } } diff --git a/engine/qclib/qccmain.c b/engine/qclib/qccmain.c index 22ecb7475..b3d27d299 100644 --- a/engine/qclib/qccmain.c +++ b/engine/qclib/qccmain.c @@ -4438,20 +4438,21 @@ void QCC_SetDefaultProperties (void) qccwarningaction[i] = WA_ERROR; //play with default warnings. - qccwarningaction[WARN_NOTREFERENCEDCONST] = WA_IGNORE; - qccwarningaction[WARN_MACROINSTRING] = WA_IGNORE; -// qccwarningaction[WARN_ASSIGNMENTTOCONSTANT] = WA_IGNORE; - qccwarningaction[WARN_EXTRAPRECACHE] = WA_IGNORE; - qccwarningaction[WARN_DEADCODE] = WA_IGNORE; - qccwarningaction[WARN_FTE_SPECIFIC] = WA_IGNORE; - qccwarningaction[WARN_EXTENSION_USED] = WA_IGNORE; - qccwarningaction[WARN_IFSTRING_USED] = WA_IGNORE; - qccwarningaction[WARN_CORRECTEDRETURNTYPE] = WA_IGNORE; - qccwarningaction[WARN_NOTUTF8] = WA_IGNORE; - qccwarningaction[WARN_UNINITIALIZED] = WA_IGNORE; //not sure about this being ignored by default. - qccwarningaction[WARN_SELFNOTTHIS] = WA_IGNORE; - qccwarningaction[WARN_EVILPREPROCESSOR] = WA_WARN;//FIXME: make into WA_ERROR; - qccwarningaction[WARN_IDENTICALPRECOMPILER] = WA_IGNORE; + qccwarningaction[WARN_NOTREFERENCEDCONST] = WA_IGNORE; + qccwarningaction[WARN_MACROINSTRING] = WA_IGNORE; +// qccwarningaction[WARN_ASSIGNMENTTOCONSTANT] = WA_IGNORE; + qccwarningaction[WARN_EXTRAPRECACHE] = WA_IGNORE; + qccwarningaction[WARN_DEADCODE] = WA_IGNORE; + qccwarningaction[WARN_FTE_SPECIFIC] = WA_IGNORE; + qccwarningaction[WARN_EXTENSION_USED] = WA_IGNORE; + qccwarningaction[WARN_IFSTRING_USED] = WA_IGNORE; + qccwarningaction[WARN_CORRECTEDRETURNTYPE] = WA_IGNORE; + qccwarningaction[WARN_NOTUTF8] = WA_IGNORE; + qccwarningaction[WARN_UNINITIALIZED] = WA_IGNORE; //not sure about this being ignored by default. + qccwarningaction[WARN_SELFNOTTHIS] = WA_IGNORE; + qccwarningaction[WARN_EVILPREPROCESSOR] = WA_ERROR; //evil people do evil things. evil must be thwarted! + qccwarningaction[WARN_IDENTICALPRECOMPILER] = WA_IGNORE; + qccwarningaction[WARN_DENORMAL] = WA_ERROR; //DAZ provides a speedup on modern machines, so any engine compiled for sse2+ will have problems with denormals, so make their use look serious. if (qcc_targetformat == QCF_HEXEN2 || qcc_targetformat == QCF_FTEH2) qccwarningaction[WARN_CASEINSENSITIVEFRAMEMACRO] = WA_IGNORE; //hexenc consides these fair game. diff --git a/engine/server/pr_cmds.c b/engine/server/pr_cmds.c index dd9c6c12d..cb629c152 100644 --- a/engine/server/pr_cmds.c +++ b/engine/server/pr_cmds.c @@ -10276,7 +10276,7 @@ BuiltinList_t BuiltinList[] = { //nq qw h2 ebfs {"pointerstat", PF_pointerstat, 0, 0, 0, 0, D("void(float num, float type, __variant *address)", "Specifies what data to use in order to send various stats, in a non-client-specific way. num and type are as in clientstat, address however, is the address of the variable you would like to use (pass &foo).")}, //END EXT_CSQC {"isbackbuffered", PF_isbackbuffered, 0, 0, 0, 234, D("float(entity player)", "Returns if the given player's network buffer will take multiple network frames in order to clear. If this builtin returns non-zero, you should delay or reduce the amount of reliable (and also unreliable) data that you are sending to that client.")}, - {"rotatevectorsbyangle",PF_rotatevectorsbyangles,0,0, 0, 235, "void(vector angle)"}, // #235 + {"rotatevectorsbyangle",PF_rotatevectorsbyangles,0,0, 0, 235, D("void(vector angle)", "rotates the v_forward,v_right,v_up matrix by the specified angles.")}, // #235 {"rotatevectorsbyvectors",PF_rotatevectorsbymatrix,0,0, 0, 236, "void(vector fwd, vector right, vector up)"}, // #236 {"skinforname", PF_skinforname, 0, 0, 0, 237, "float(float mdlindex, string skinname)"}, // #237 {"shaderforname", PF_Fixme, 0, 0, 0, 238, D("float(string shadername, optional string defaultshader, ...)", "Caches the named shader and returns a handle to it.\nIf the shader could not be loaded from disk (missing file or ruleset_allow_shaders 0), it will be created from the 'defaultshader' string if specified, or a 'skin shader' default will be used.\ndefaultshader if not empty should include the outer {} that you would ordinarily find in a shader.")}, @@ -10387,7 +10387,7 @@ BuiltinList_t BuiltinList[] = { //nq qw h2 ebfs {"clearscene", PF_Fixme, 0, 0, 0, 300, D("void()", "Forgets all rentities, polygons, and temporary dlights. Resets all view properties to their default values.")},// (EXT_CSQC) {"addentities", PF_Fixme, 0, 0, 0, 301, D("void(float mask)", "Walks through all entities effectively doing this:\n if (ent.drawmask&mask){ if (!ent.predaw()) addentity(ent); }\nIf mask&MASK_DELTA, non-csqc entities, particles, and related effects will also be added to the rentity list.\n If mask&MASK_STDVIEWMODEL then the default view model will also be added.")},// (EXT_CSQC) {"addentity", PF_Fixme, 0, 0, 0, 302, D("void(entity ent)", "Copies the entity fields into a new rentity for later rendering via addscene.")},// (EXT_CSQC) - {"removeentity", PF_Fixme, 0, 0, 0, 0, D("void(entity ent)", "Undoes all addentities with that entity, without removing ALL entities (useful for splitscreen).")},// (EXT_CSQC) + {"removeentity", PF_Fixme, 0, 0, 0, 0, D("void(entity ent)", "Undoes all addentities added to the scene from the given entity, without removing ALL entities (useful for splitscreen/etc, readd modified versions as desired).")},// (EXT_CSQC) {"addtrisoup_simple",PF_Fixme, 0, 0, 0, 0, D("typedef float vec2[2];\ntypedef float vec3[3];\ntypedef float vec4[4];\ntypedef struct trisoup_simple_vert_s {vec3 xyz;vec2 st;vec4 rgba;} trisoup_simple_vert_t;\nvoid(string texturename, int flags, struct trisoup_simple_vert_s *verts, int *indexes, int numindexes)", "Adds the specified trisoup into the scene as additional geometry. This permits caching geometry to reduce builtin spam. Indexes are a triangle list (so eg quads will need 6 indicies to form two triangles). NOTE: this is not going to be a speedup over polygons if you're still generating lots of new data every frame.")}, {"setproperty", PF_Fixme, 0, 0, 0, 303, D("#define setviewprop setproperty\nfloat(float property, ...)", "Allows you to override default view properties like viewport, fov, and whether the engine hud will be drawn. Different VF_ values have slightly different arguments, some are vectors, some floats.")},// (EXT_CSQC) {"renderscene", PF_Fixme, 0, 0, 0, 304, D("void()", "Draws all entities, polygons, and particles on the rentity list (which were added via addentities or addentity), using the various view properties set via setproperty. There is no ordering dependancy.\nThe scene must generally be cleared again before more entities are added, as entities will persist even over to the next frame.\nYou may call this builtin multiple times per frame, but should only be called from CSQC_UpdateView.")},// (EXT_CSQC)