Commit graph

440 commits

Author SHA1 Message Date
Spoike
6307ae1303 add base64encode and base64decode builtins. Allow the second arg of registercommand builtin to specify a description for that command.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6314 fc73d0e0-1445-4013-8a0c-d673dee63da5
2023-01-09 05:12:04 +00:00
Spoike
3a6f22d05c Make sure runstandardplayerphysics builtin properly initialises everything it needs.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6308 fc73d0e0-1445-4013-8a0c-d673dee63da5
2023-01-09 05:11:23 +00:00
Spoike
304079e1dc Add a variation of the addentity builtin, for explicit light levels.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6278 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-06-26 08:08:50 +00:00
Spoike
c39c4d0255 Make sure getmodelindex/modelnameforindex and sound equivelents are available in both ssqc and csqc.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6265 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-06-19 15:17:41 +00:00
Spoike
3ea2f04d90 Allow for better encoding of guarenteed-unsigned values.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6241 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-05-28 17:58:39 +00:00
Spoike
6dbfc0ebbe Fix msg_readcount issues.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6218 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-03-08 05:34:26 +00:00
Spoike
6ceb76233c Move Quake3 support to a plugin. There's still a number of stubs+bugs.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6209 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-03-08 05:31:34 +00:00
Spoike
dd03b69609 Move our gltf's json parser into the engine-proper, implement QC builtins to make json parsing available to qc. API defined by Joshua Ashton.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6188 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-02-19 20:48:40 +00:00
Spoike
75f11ba33b Fix CSQC_UpdateViewLoading.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6185 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-02-07 14:34:30 +00:00
Spoike
73f6df016c A few minor tweaks.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6183 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-02-07 14:34:11 +00:00
Spoike
0f5c092a96 Fix +strafe with mouse movements, for Aberrant.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6173 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-01-28 10:48:14 +00:00
Spoike
b8e628cc39 Minor code cleanups.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6159 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-01-08 10:01:29 +00:00
Spoike
2e108f2a99 Misc minor fixups.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6154 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-01-08 10:00:49 +00:00
Eukara
13b2a7935c Add support for HLMDL actions, and some builtins to interact with it.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6148 fc73d0e0-1445-4013-8a0c-d673dee63da5
2022-01-07 03:18:00 +00:00
Spoike
2b81527a69 Make our q2/q3 bsp code more modular, with q2/q3 gamecode treating it more generically.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6097 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-11-03 20:30:40 +00:00
Spoike
06a8133048 Add an extra workaround as part of dpcompat_makeshitup 2 (to handle shaders that are not terminated properly).
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6079 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-10-12 04:41:41 +00:00
Eukara
e69e81b9f5 input_sequence now formally added, will let the server know which input
sequence we're on when handling input_ globals.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6061 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-09-15 20:33:54 +00:00
Spoike
a8d606e042 Fix c++isms.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6043 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-27 04:29:25 +00:00
TimeServ
904fa4ce64 pass integer key reference instead of pointer reference to particle systems, remove switch fallthrough on q64 bsp switch
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6041 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-23 22:14:34 +00:00
Spoike
c2d3d3a41b Fix up translations stuff with the rereleased version of quake.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6038 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-23 06:37:21 +00:00
Spoike
ac6605e0d7 Tweak inputs some more.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6023 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-19 06:02:03 +00:00
Spoike
662f7cfd75 Try to fix getlight builtin.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6006 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-04 21:18:11 +00:00
Spoike
52ab543bd7 Misc small bugfixes and tweaks.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6005 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-04 21:18:04 +00:00
Spoike
8156eda700 Add anglesub builtin, requested by Shpuld. Returns angle difference within rotations +/- 180.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6004 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-08-04 21:17:52 +00:00
Spoike
87245a290a Fix up SDL build to enable our multithread stuff.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5996 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-07-25 22:55:17 +00:00
Eukara
1f75d2bc9e Added new builtins: gp_rumble(), gp_rumbletriggers(), gp_setledcolor(),
gp_settriggerfx(). More improvements to touchpad sensor code, analog
stick tweaks... mostly beneficial to the SDL2 backend


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5994 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-07-25 16:12:24 +00:00
Spoike
626a053b36 Tweak a few extension checks, to try to avoid nasty surprises.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5961 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-07-17 15:09:34 +00:00
Eukara
a6b33d25f2 Fix a crash/oversight with CSQCs getlight() and fix GLQ3_LightGrid from
using a global that may not even be set. 


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5957 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-07-06 16:32:59 +00:00
Spoike
c452bccd94 Fix up some qc genericdefs stuff.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5937 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-07-01 15:43:28 +00:00
Spoike
2363b05216 If texture names can have map-specific prefixes, shaders must also.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5912 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-06-22 14:40:53 +00:00
Spoike
f810be4830 Make input_servertime available to ssqc too, so it can guage the player's latency more accurately.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5908 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-06-21 13:46:52 +00:00
Spoike
be0c0b1821 Small defs cleanup.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5897 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-06-21 13:45:14 +00:00
Spoike
c035801161 Add support for maps/foo.bsp.xz too, for better compression.
Seeking within files inside zips is now slightly more efficient.
Fix issue with servers decompressing .gz before download...

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5883 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-06-02 15:29:44 +00:00
Spoike
84d6ef3e45 Take extra measures to ensure that zip-in-bsp content is actually used.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5878 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-06-01 09:23:42 +00:00
Spoike
f35928f4fd OpenXR stuff should be a little more usable now.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5850 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-05-09 13:02:49 +00:00
Spoike
692fe2c211 Add serverside pm_autobunny support. Will result in prediction misses for older clients.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5833 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-05-09 13:00:30 +00:00
Spoike
b9cd6ec91b openxr plugin: tweaked - inputs should be working properly now, and are visible to csqc. subject to further breaking changes, however.
_pext_vrinputs: added cvar to enable vr inputs protocol extension allowing vr inputs to be networked to ssqc too. defaults to 0 for now, will be renamed when deemed final.
updates menu: the prompt to enable sources is now more explicit instead of expecting the user to have a clue.
updates menu: added a v3 sources format, which should be more maintainable. not final.
updates menu: try to give reasons why sources might be failing (to help blame ISPs if they try fucking over TTH dns again).
presets menu: no longer closes the instant a preset is chosen. some presets have a couple of modifiers listed. force the demo loop in the background to serve as a preview.
prompts menus: now does word wrapping.
ftemaster: support importing server lists from other master servers (requested by Eukara).
server: try to detect when non-reply inbound packets are blocked by firewalls/nats/etc (using ftemaster to do so).
qcvm: added pointcontentsmask builtin, allowing it to probe more than just world, with fte's full contentbit range instead of just q1 legacy.
qcvm: memfill8 builtin now works on createbuffer() pointers.
qcvm: add missing unsigned ops. Fixed double comparison ops. fixed bug with op_store_i64. added missing OP_LOADP_I64
qcc: added '#pragma framerate RATE' for overriding implicit nextthink durations.
qcc: fixed '#pragma DONT_COMPILE_THIS_FILE' to not screw up comments.
qcc: added __GITURL__ __GITHASH__ __GITDATE__ __GITDATETIME__ __GITDESC__ for any mods that might want to make use of that.
qcc: fix up -Fhashonly a little
setrenderer: support for vulkan gpu enumeration.
rulesets: reworked to support custom rulesets (using hashes to catch haxxors, though still nothing prevents just changing the client to ignore rulesets)
bspx: use our BIH code for the bspx BRUSHLIST lump instead of the older less efficient code.
(static)iqm+obj: these model formats can now be used for the worldmodel (with a suitable .ent file). Also using BIH for much better collision performance.
pmove: tried to optimise PM_NudgePosition, should boost fps in stress tests.
wayland: fix a crash on startup. mousegrabs now works better.
imagetool: uses sdl for previews.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5813 fc73d0e0-1445-4013-8a0c-d673dee63da5
2021-04-14 05:21:04 +00:00
Eukara
a322a175de Add support for the FIRSTPERSON renderflag from Q3
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5794 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-12-25 03:07:07 +00:00
Spoike
432bc96456 Add r_meshroll, like r_meshpitch (hexen2 requires it set to -1 - they made the bug worse).
HTTP client code now tracks the reason for failure better (so we can distinguish between dns, no response, disconnects, and tls cert issues).
Downloads menu shows reasons for failure for its various sources.
make hexen2's +infoplaque button work even when tab isn't held! Yes! usability! who'd a thought it?
Try to clean up some client-only build issues.
Added 'librequake' as a recognised game name (mostly so that we can reuse the quake-specific engine compat settings.
.map support now supports patches enough to query+create(+network)+select them. Collisions are basically defective though.
qcc: Remove char as default keyword.
qcc: Fix some recent regressions.
sv: Add 'sv_protocol csqc' setting to force csqc protocols on clients that disabled handshakes, for mods that NEED csqc support. other options include 'fte1' and 'fte2', if you want to force extra stuff. Engines that don't support the selected protocols will crash out so only set these if your mod/map always requires it.
sv: default to qw physics whenever a mod defines the SV_RunClientCommand, even if its an nq mod.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5775 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-10-06 03:17:28 +00:00
Spoike
e3fdbfcdbd qcc: Add unsigned int, long/__int64, unsigned long/__uint64, and double datatypes to qcc+qcvm.
qcc: Add '#pragma opcode enable|disable NAME' to override whether an individual opcode may be generated for the current target.
nq: Fix smartjump on nq servers.
nq: Fix enemyskin/teamskin stuff on nq servers.
Rework show_fps cvar to give a greater focus on the timings graph.
Update updates menu to allow enabling/disabling specific sources.
Add separate settings for ef_red+ef_green+ef_blue.



git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5768 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-09-29 07:09:01 +00:00
Spoike
b380421e42 Lets try using _LARGEFILE64_SOURCE in 32bit linux builds. Not that anyone will notice.
Clarify the 'too many alternate clients' messages.
Gamepad movement should respond to +speed.
favour fte's nq protocols over dp ones when both are supported by the client, to boost compat with qss.
try to generate proper utf-8 filenames from player/team names when recording mvds, instead of bad char encodings.
Fix loading saved games with splitscreen enabled.
pr_dumpplatform can now optionally filter symbols via some specific external files, adding deprecated tags for any symbol not also supported by DP and QSS.
Rework CSQC globals to use macros, to ensure completeness and consistency.
rework sv_csqcdebug to use special svcs. This should make it more robust.
Fix some scary warnings when vid_reloading the vulkan renderer.
Fix a possible segfault from opengl+rtlights.
Mousewheel will now interact better with engine menus.



git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5757 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-09-08 05:11:09 +00:00
Spoike
744b9a25db try to fix common-symbol conflicts in windows builds.
attempt to provide some better gettext support for engine strings (especially cvar/command descriptions). still no translations available though.
try to optimise hldml rendering a little.
fix issue with menuqc models rendering as black when fog is active.
use threads to try to reduce stalls from player-skin switches.
add sys_clocktype cvar to linux builds too, with CLOCK_MONOTONIC by default.
enable dtls certificate pinning log stuff.
fix r_viewmodel_fov being used instead of fov cvar.
fix possible segfault when egl driver fails.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5742 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-08-13 08:39:48 +00:00
Spoike
b005d9fdcd Try to fix missing impulses bug.
Fix skybox fog glsl compile error.
Implement DP_QC_FS_SEARCH_PACKFILE, search_getpackagename, and search_fopen.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5737 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-07-21 07:58:54 +00:00
Spoike
6bea300f30 Allow menuqc to access the clipboard. Fix some c++ish warnings. Fix SDL build linker issues.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5728 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-07-14 00:48:56 +00:00
Spoike
18b2ee695f Engine and vm changes required for tempbuffers (along with a few related builtins like findlist).
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5712 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-06-27 19:32:08 +00:00
Spoike
5aa11ddbb1 makefile: attempt to fix freetype when not using makelibs (should make it slightly easier for people to compile with msys2 without needing to resort to cmake).
emenu: clean up hexen2's maplist options slightly.
emenu: modelviewer should now be slightly more friendly (click+wasd to move around).
particles: fix up randomised s coords.
csqc: try to fix issue with applycustomskin not refcounting properly.
client: [s_]precache and (new) mod_precache cvars can be set to 2 to precache the resources after load, for faster loading at the expense of some early stutter, without risking later mid-game stuttering.
gltf: add support for morphweights in a cpu-fallback path. don't expect good performance on surfaces with morphtargets for now.
gtlf: add some support for gltf1 files. far from perfect.
shaders: gltf1 semantics handling
shaders: const correctness
iqmtool: fix up mdl skin export.
iqmtool: integrate the engine's gltf2 loader. works with animated models, but unanimated ones suffer from basepose-different-from-bindpose issues.
q3bsp: hopefully fixed bih traces. still disabled for now.
qc: change default value of pr_gc_threaded to 1.
qcext: add the '__deprecated' keyword to various symbols in fteextensions.qc, now that fteqcc supports it.
ssqc: spit out a more readable error for WriteByte(MSG_CSQC,...) outside of SendEntity.
ssqc: add registercommand builtin, for consistency with menuqc and csqc (though only one can register any single command).
sv: report userinfo/serverinfo sizes (some clients still have arbitrary limits, plus its nice to see how abusive things are)
sv: try to optimise sv_cullentities_trace a little.
movechain: relink moved ents.
csqc: add spriteframe builtin, for freecs to use instead of more ugly less reliable hacks.
menuqc: fopen("tls://host:port", FILE_STREAM) should now open a tls stream. tcp:// should also work.



git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5703 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-06-12 23:29:58 +00:00
Spoike
24267a24ae Add spriteframe csqc builtin (presumably only useful for freehl/freecs).
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5700 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-06-01 01:31:46 +00:00
Spoike
31a2726f10 Fix typo on a minor builtin's number.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5691 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-05-01 11:36:20 +00:00
Spoike
4c2066601a Support connecting subnodes to servers over tcp (instead of depending on fork).
Fixed up the -netquake / -spasm / -fitz args slightly, should actually be usable now.
sv_mintic 0 is now treated as 0.013 when using nqplayerphysics, to try to make it smoother for nq clients.
Preparing for astc's volume formats. Mostly for completeness, I was bored. Disabled for now because nothing supports them anyway.
Fix broken mousewheel in SDL2 builds.
Fix configs not getting loaded following initial downloads in the web port/etc.
Make the near-cloud layer of q1 scrolling sky fully opaque by default (like vanilla).
Sky fog now ignores depth, treating it as an infinite distance.
Fix turbs not responding to fog.
r_fullbright no longer needs vid_reload to take effect (and more efficient now).
Tweaked the audio code to use an format enum instead of byte width, just with the same values still, primarily to clean up loaders that deal with S32 vs F32, or U8 vs S8.
Added a cvar to control whether to use threads for the qcgc. Still disabled by default but no longer requires engine recompiles to enable!



git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5683 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-04-29 10:43:22 +00:00
Spoike
e8aa715763 disabled some quake-only teamplay stuff in non-quake builds.
GL: r_dynamic -1 is now r_temporalscenecache 1, which makes menu options etc a little friendlier. fixed a serious memory leak.
GL: Lightmaps are now uploaded using pbos to reduce cpu stalls (especially with temporalscenecache) and the resulting periodic framerate drops. Requires gl4.4.
PM: moved manifest-downloads to the package manager. still needs some proper testing.
PM: Fixed bug with downloading updates from every known mirror for that update.
PM: Fixed bug with duplicate mirrors...
PM: menuqc is now able to query available updates.
engine's Draw_TextBox centers the text box more appropriately and easily.
SV: added sv_autooffload cvar, when set the map command will automatically create a server in a separate process to reduce the effects of stutter in inefficient ssqc mods.
Menu: menu_mods now shares data with getgamedirinfo builtin.
MenuQC: Added some extra properties to the getgamedirinfo builtin.
MenuQC: Added Menu_RendererRestarted entrypoint.
MenuQC: _vid_renderer_opts cvar now has a value that actually reflects the windowing systems in the build, rather than just renderers.
CQSC: Added getlocationname builtin.
ALSA: device names are now more consistent with other audio drivers.
SV: added unsavegame console command, to delete unwanted saved games.
SV: hashtable entries are now saved into saved games.
SV: reworked player remapping strategy when loading games. Player slots are now directly swapped serverside, not reconnected.
SV: resend all csqc entity state when a client signals that it started recording a demo.
SV: Added SOLID_BSPTRIGGER as a shapely alternative to the aabb SOLID_TRIGGER. modelindex must still be set for this to work.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5668 fc73d0e0-1445-4013-8a0c-d673dee63da5
2020-04-19 01:23:32 +00:00