Skip to content

Remove legacy Quake bbox expansion, give QC full control of bboxes

bones_was_here requested to merge bones_was_here/sv_legacy_bbox_expand into master

Remove legacy Quake bbox expansion: projectiles

All the "zero size" projectiles now need a size so they can trigger a warpzone's touch func. Prevously DP gave most of them mins '-1 -1 -1' maxs '1 1 1' for the purpose of those tests (but not all tests).

Because of that these projectiles now need a different way to avoid colliding with each other. Comparison of the clipgroup field is used as DP_RM_CLIPGROUP will make this more optimal for performance and is also implemented in QC here for compatibility with old DP versions.

Use correct pickup item bboxes on clients

CSQC items currently don't use the item registry so properties including model and size must be networked.

This is done without sending any extra bytes.

Remove legacy Quake bbox expansion: map entities

This gives QC full control of bboxes and makes SVQC and CSQC behaviour consistent.

Adds a Small item bbox which is the size most items had previously if expansion wasn't counted.

Changes powerup, buff and mega pickups to have the same height. This will make it cheaper to network that information to clients.

Groups all the sv_gameplayfix cvars together in xonotic-server.cfg.

Removes duplication of the item mins/maxs definition and box + '1 1 1' code.

Include boxesoverlap() in WarpZoneLib_ExactTrigger_Touch() for convenient efficiency and less code duplication

Invert bool WarpZoneLib_ExactTrigger_Touch() so it's easier to use

Remove trigger_init(), it's in the way and is mostly duplicating WarpZoneLib_ExactTrigger_Init() code


I wouldn't normally add features to DP div0-stable but sv_legacy_bbox_expand shouldn't cause any bugs and needs to be added to prevent this breaking everything on div0-stable. No client engine updates are required so this should be fine to run on servers.


Test maps:
greatwall_reloaded the ladders break if adjacent bboxes don't count as touching
castle-beta2 the jump pads break if adjacent bboxes don't count as touching
cpm_10 (q3compat) the slick area (between the lines) kills the player if adjacent bboxes do count as touching
anything with a warpzone: entities should still traverse them normally, including "zero size" projectiles (eg crylink, hagar, blaster, electro primary)

Edited by bones_was_here

Merge request reports