Commit Graph

423 Commits

Author SHA1 Message Date
Marco Cawthorne 38f6996940
PMove: Fix typos that caused shenanigans. 2022-05-12 20:42:09 -07:00
Marco Cawthorne 6653d18417
Forgot to add these files (NSClient/Player/Spectator) 2022-05-11 13:18:02 -07:00
Marco Cawthorne 25c54af62c
Spring cleaning part one. 2022-05-11 12:49:04 -07:00
Marco Cawthorne a039a69dd3
Ultimately remove the deprecated old class names for base entities. 2022-05-10 15:01:40 -07:00
Marco Cawthorne 77c3cf4e10 Further fixes for OpenXR 2022-05-08 11:28:33 -07:00
Marco Cawthorne 9e0f93c796
Initial support for OpenXR. Remember to side-load the openxr plugin and set _pext_vrinputs to 1. 2022-05-07 17:58:22 -07:00
Marco Cawthorne 17611b7d38
PMove: Move some things around a bit. 2022-05-01 22:04:40 -07:00
Marco Cawthorne 70c2b43ff3
PMove: check for infokey 'autojump'... 2022-05-01 19:44:22 -07:00
Marco Cawthorne 594261cf7a
PMove: change default view offset to [0,0,28] 2022-05-01 15:57:10 -07:00
Marco Cawthorne e64e72d155
env_bubbles: Implementation. Should be complete.
NSIO: Add methods ReadBool(), SaveBool(), and PREDICTED_BOOL macro.
2022-04-30 20:18:56 -07:00
Marco Cawthorne cdfae26413
ambient_generic: Restructure and network more efficiently.
Client: add support for modelevent 1008 (CHAN_VOICE sound) and 1005 (plays Sentence)
2022-04-30 14:02:25 -07:00
Marco Cawthorne 92826b3e5a
Deprecate FL_NOATTACK, replace it with FL_FAKESPEC. 2022-04-28 16:25:51 -07:00
Marco Cawthorne ade1deb910
Revert "base_player: MakeTempSpectator() will now null think and nextthink."
This reverts commit 0c802295c3.
2022-04-28 14:52:38 -07:00
Marco Cawthorne 0c802295c3
base_player: MakeTempSpectator() will now null think and nextthink. 2022-04-28 12:34:01 -07:00
Marco Cawthorne 70f32c97a4
NSVehicle: Add method CanDriverCrouch() to deal with player physics restrictions. 2022-04-27 15:03:00 -07:00
Marco Cawthorne 2e43e671a4
Base_Player: Network movetype and solid together. 2022-04-26 14:10:17 -07:00
Marco Cawthorne 9030ad82d9
Base_Player: Make sure disconnected clients get removed from other clients.
Menu-FN: Clear Rich-presence when no longer in a game.
2022-04-26 11:22:12 -07:00
Marco Cawthorne 2d403202b9
Avoid use of infokeys to communicate whether or not a client is spectating. 2022-04-25 15:25:35 -07:00
Marco Cawthorne 607194957e
Player: Move UseUp/Down into the base_player class. Should now universally handle un-presses for all games. 2022-04-25 10:19:17 -07:00
Marco Cawthorne 7395b8d421
Gamerules: exception for friendlyfire when it comes to self
point_message: make messages appear through entities, as they may be translucent.
Fixed a minor warning.
2022-04-21 18:50:21 -07:00
Marco Cawthorne af6412e283
Networking improvements to NSEntity, NSRenderableEntity and NSSurfacePropEntity 2022-04-20 14:29:37 -07:00
Marco Cawthorne 8e15f04c38
prop_physics_multiplayer: Initial implementation. Developed with the ODE plugin in mind. 2022-04-20 10:44:59 -07:00
Marco Cawthorne bf00bfa60c
spectator: Several fixes to make spectating a bit more polished. Ignore fakespectators entirely, etc. 2022-04-18 15:53:15 -07:00
Marco Cawthorne a469c06fc8
Add 'surfaceparm projectile' support, so non-solid surfaces can
still react to tracelines and projectiles.
2022-04-13 16:58:42 -07:00
Marco Cawthorne 1b2f587599
Shared: Deprecate ClientRemove() over OnRemoveEntity, which will work on both Client and Server.
prop_vehicle_drivable: Add minor collision boxes to aid player physics
Fix some warnings.
2022-04-12 23:48:31 -07:00
Marco Cawthorne e79a2e9c2e
NSMonster: Add method bool CanCrouch(). Monsters will then attempt to crouch.
SoundDefs: Add support for distshader on Sound_PlayAt() calls.
2022-04-10 07:01:14 -07:00
Marco Cawthorne 6b1af093bb
NSMonster: use PMoveCustom_RunStandardPlayerPhysics instead of the engine, as it overrides
our hitcontentsmask. This is required for monster/bot clips.
Client: If an entity gets removed, ensure the .skeletonindex gets deleted.
2022-04-09 19:21:00 -07:00
Marco Cawthorne 2c79071514
base_player: MakeTempSectator() will now make sure modelindex of the target
is set to 0.
2022-04-08 12:58:23 -07:00
Marco Cawthorne a8c8938408
NSEntity: New method CreatedByMap(). Additional work towards more vehicle related
code in preparation for WASTES.
2022-04-06 16:21:07 -07:00
Marco Cawthorne 60e4853549
Clean up some misc warnings, switch over to internal bool type for some methods
in NSSurfacePropEntity, added Get/Set functions for MaxHealth.
Also bump BUILD_ENGINEREVISION to 6224 (minor crash fix upstream)
2022-04-02 09:21:49 -07:00
Marco Cawthorne e45987d65c
NSEntity: Added new methods based on GMod's API. More to follow. 2022-04-02 00:10:25 -07:00
Marco Cawthorne 8c3804a1bc
Make Client_InIntermission() a shared (Client/Server) function, add method 'InIntermission()' to CGameRules.
Tone down the intermission view movement, also tweak Spawn_SelectRandom() to find more points.
2022-03-29 15:20:52 -07:00
Marco Cawthorne 50312d500a
SurfaceProperties: Be more pedantic about what object can contain material
info in SurfData_Impact()
2022-03-28 19:01:29 -07:00
Marco Cawthorne 9e9d5b1832
env_fog_controller: Initial implementation. Fully shared entity, tested on
d2_coast_XX maps in Half-Life 2.
2022-03-23 11:05:35 -07:00
Marco Cawthorne 750bb413e9
prop_rope: Now a shared (client/server) entity instead of just client. Will
now respect parenting so you can have very dynamic rope attachments in
the world.
2022-03-22 16:38:31 -07:00
Marco Cawthorne 143a00e94e
Fix light_dynamic (static) from not spawning in CSQC. Add r_skipDiffuse to rtlight.glsl,
add SURF_PENETRATE, which will make bullets pass right through them when
BULLETPENETRATION is set. Go over and refactor a lot of base_client, player
and spectator code to facilitate both permanent and temporary spectators
better. Add experimental env_glow lens flare code. Fix material ID detection
bug for Q3 based BSPs. A couple helper functions were added to src/client/utils.cpp
but they are not yet final.
2022-03-17 21:05:47 -07:00
Marco Cawthorne 96f3a1224a
This is a massive change. Check the full msg here:
https://icculus.org/~marco/txt/nuclide_may2022.txt
2022-03-15 19:33:11 -07:00
Marco Cawthorne ae85529f95
Add pmodel attributes to the base player class. 2022-03-13 17:01:18 -07:00
Marco Cawthorne 0fc52f726d
BotLib now responds to 'alert' flagged sounds as well. Also added a cooldown
timer so we don't call alerts too often.
2022-03-11 14:00:44 -08:00
Marco Cawthorne 6fb067eed3
My name has changed, so an update to the copyright to reflect it. 2022-03-11 11:40:43 -08:00
Marco Cawthorne ce02de7eff
Physics_InputPostMove: Unset FROZEN _after_ physics frame... 2022-03-03 23:32:33 -08:00
Marco Cawthorne d8a8f07432
Client: make sure customphysics is set 'Empty' on monsters, clients 2022-03-03 23:31:59 -08:00
Marco Cawthorne 93124fa6de
base_player: Add Death() method that'll let the client know when to render
the 'Deathcam'. Also add the mentioned UpdateDeathcam().
2022-03-02 20:37:40 -08:00
Marco Cawthorne 6db98c88aa
BotLib: Add support for goalitems. These may include objectives for things
like CTF - flag your game-mode entities as either .botinfo BOTINFO_TEAM_GOALITEM
or BOTINFO_TEAM_GOALCAPTURE and BotLib will try to figure out what to do.
2022-03-02 09:17:57 -08:00
Marco Cawthorne ee2d3f6b3f
SoundDef: add 'pitch' support to Sound_PlayAt(), the pointsound builtin does
support pitch on FTEQW but it's not advertised in the extensions .qc
2022-03-02 09:14:02 -08:00
Marco Cawthorne a687d7b330
Various tweaks to documentation inside the codebase, more verbose general
information prints to console to aid non-devs in sending bug reports and
finding other issues. Updates to some of the GLSL. Minor material fixes.
2022-02-23 01:17:05 -08:00
Marco Cawthorne 8cb4c35e23
Remove SendFlags with constants from NSEntity and peers, make full use
of EvaluateEntity() to decide which attributes to send network updates of.
2022-02-18 00:30:24 -08:00
Marco Cawthorne 1d9ade7319
NSEntity: Add ClientRemove() method so sub-classes can control what happens
when a SSQC ent representation is removed from the client.
prop_vehicle_drivable: All sorts of tweaks, lots subject to change.
VGUI elements now get a callback when the resolution gets resized, so they
get a chance to reposition themselves.
Deprecate function ClientGame_EntityRemove().
2022-02-17 22:16:35 -08:00
Marco Cawthorne bcf9e2e758
Cleaning up some warnings. 2022-02-01 13:37:21 -08:00
Marco Cawthorne eb3eb567ca
Shared: nil out the base_client predraw. Get rid of the .pitch attribute of
base_player. Fix some angle networking typos.
2022-02-01 09:33:28 -08:00
Marco Cawthorne a3a5f9d626
Client: Some fixes for handling player/spectator classes, both share now the
same parent class on both client and server. Fix crash with spectators and
input-frame overrides. Add 'additive' command to fontdefs.
2022-01-31 17:38:01 -08:00
Marco Cawthorne e11465018f
Client: Allow base_player and spectator classes to override CSQC_Input_Frame
with a new method: ClientInputFrame.
2022-01-31 15:31:07 -08:00
Marco Cawthorne 578da4a779
Add VGUI_Active() which returns whether or not we're drawing VGUI elements,
add SNDFL_ALERTS to sound shaders, which will alert enemy AI of suspicious
behaviour, fix a health-setting bug in NSSurfacePropEntity and remove
playerslot check in item_pickup from base/
2022-01-28 16:02:00 -08:00
Marco Cawthorne 2c80a9f9ff NSSurfaceProp/PropData: Add support for breakable_skin. When a prop 'dies'
it doesn't necessarily have to disappear, it can change its material to one
of your choosing.
2022-01-28 06:53:32 +01:00
Marco Cawthorne 06d07738b6
Clean up the base classes, get rid of having to manually include the entbase
defs.h for the respective progs.
2022-01-20 16:23:29 -08:00
Marco Cawthorne 9e2b89e386
NSEntity: BBox will now account for rotation whenever SetModel() is used. 2022-01-20 12:30:53 -08:00
Marco Cawthorne 02c2ff7be5
env_glow: Add 'rotate' key to rotate the sprite/material by X degree amount 2022-01-07 17:04:43 -08:00
Marco Cawthorne 52dfde0cf1
Sound: Add Sound_PlayLocal() which is a 'sound shader' analogue to to
localsound()
2022-01-07 13:46:16 -08:00
Marco Cawthorne 749424aa84
NSMonster: Add support for actions (used in e.g. HLMDL) to query which seq
to play. This will be expanded shortly in-engine to support more formats...
2022-01-06 19:27:08 -08:00
Marco Cawthorne 9d4d7afdcd
Big overhaul of momentary_door, momentary_rot_button... now onto the last
entity until Hazard Course is fully functional from beginning to end.
2022-01-04 21:54:42 -08:00
Marco Cawthorne f2e44b24fb
Add platform/base_sound.pk3, move base sound shaders in there. Add misc/null
and misc/missing PCM samples for fallback.
2021-12-18 15:06:37 -08:00
Marco Cawthorne 6ec29e9985
SurfData_IDtoImpact: Fix IMPACT_METAL lookup 2021-12-17 21:23:30 -08:00
Marco Cawthorne c2e4050bae
Replace CSQC_Parse_Damage with our own, add EV_DAMAGE. Make sure trigger_hurt
respects the 'damagetype' field. Add CSQC_UpdateSeat to make querying of
the current player seat easier (splitscreen).
2021-12-17 18:20:30 -08:00
Marco Cawthorne 8075616d6d
SurfaceProperties: We were missing a few material ID lookups for GoldSrc
regarding impacts.
2021-12-16 13:12:44 -08:00
Marco Cawthorne bfad97f6eb
prop_dynamic: Remove redundant .health set code that's now handled in the
parent class.
PropData: Fix a bug that fails to check our cache properly, resulting in
the first entry being returned when no data is properly defined.
2021-11-21 04:23:33 +01:00
Marco Cawthorne eb85121716
Add BUILD_ODE build.cfg setting. Add stubs for platform specific functions
like achievements, rich presense. Minor GLSL adjustments.
2021-11-20 17:27:52 +01:00
Marco Cawthorne 1e31ab2955
Following last commit, we allocate EFX data statically up-front too. 2021-11-15 03:59:39 +01:00
Marco Cawthorne 58734ec4d2
Improve VM memory usage by avoiding fragmentation in sound shaders and prop
data. Games can enable dynamic memory allocation by setting SOUNDSHADER_DYNAMIC
and PROPDATA_DYNAMIC in their progs.src
2021-11-15 03:46:59 +01:00
Marco Cawthorne 08c3a4a576
SurfData: Goodbye to DAMAGE_MATERIAL. We streamline that process now so
that all entities will use surfaceParm defined info by default unless
overriden by an entity. + Set up sane defaults for surface properties.
2021-11-13 01:38:20 +01:00
Marco Cawthorne b670c994c1
build_engine.sh: Support building of HL2/SRC2004 content via the new plugin
that you can enable in build.cfg...
base_player: Add MakeTempSpectator() and MakePlayer(), so gamemodes have it
easier to handle in-game status changes...
NSRenderableEntity: Add support for 'modelscale' key
2021-11-09 17:33:16 +01:00
Marco Cawthorne 3bb88216c8
Add DAMAGE_MATERIAL as a possible .takedamage value, this may just be a
temp way for model based entities to communicate whether or not they use
that in-model surfaceflags.
2021-11-06 07:15:13 +01:00
Marco Cawthorne aa0ccf4413
Add test_grenadeclip.
Add helper functions to convert RGB255 to ^x color codes.
Small fixes for fonts in vguilib.
2021-11-03 21:54:43 +01:00
Marco Cawthorne d25a597d71
Player: SetSize() after the .flags field update in case their bbox changed
and we aren't running physics on their entity.
Viewmodels: Add cvar v_modellag (Default: 0)
2021-10-30 00:59:31 +02:00
Marco Cawthorne 5bf3545e69
GS-EntBase: Added a ton more Save/Restore functions for many core entities.
Player entity is also getting save/restored now.
2021-10-28 04:29:11 +02:00
Marco Cawthorne 98c234da48
SurfaceData: Non NSSurfacePropEntity class ents will just use the generic world check for impact effect lookup. 2021-10-27 03:06:29 +02:00
Marco Cawthorne 98d9f8f618
Sound: Convert legacy attenuations to Q unit radii upon parsing. 2021-10-23 13:45:59 +02:00
Marco Cawthorne 64eb0cc11d
PMove: Be more aggressive with our unstuck function. 2021-10-21 21:27:58 +02:00
Marco Cawthorne 249e4bc612
Massive revamp of the Nuclide system classes, more efficient networking
and memory usage thanks to intelligent boxing of fields.
Added Util_TimeToString, removed old VOX code, added lots of new helper
classes...
2021-10-20 01:19:10 +02:00
Marco Cawthorne 70fe95e5a7
Add support for Source styled surfaceproperties.txt definitions, which
is incorporated into func_breakable/pushable already. Mods can now control
material/surface properties without code.
2021-10-15 19:01:36 +02:00
Marco Cawthorne d283c309cd
Add missing material/impact definition for sand. Document some other ids
of interest that are used in L4D and GO.
2021-10-11 23:29:26 +02:00
Marco Cawthorne 726332c78e
CBaseEntity: Add Ignite(), Exinguish(), IsOnFire() methods according to the
Source 2004 spec (controllable lifetimes etc.)
2021-10-04 13:22:40 +02:00
Marco Cawthorne 12753616df
Remove some left-over junk code that no longer runs 2021-09-30 23:32:47 +02:00
Marco Cawthorne 59ee0bd359
PMove: Pressing jump will now make you jump off the ladder, like in HL and
some other games.
2021-09-30 23:19:01 +02:00
Marco Cawthorne 2b377fdd79
Document the various CONTENTBITS that are relevant to us and reserve
a GRENADECLIP content bit, so levels can be optimised for nade throws.
2021-09-24 10:48:05 +02:00
Marco Cawthorne 565d8ad7e7
PMove: Add flag FL_ONUSABLE, which will tell us if we're looking/hovering
over something that we can +use on.
2021-09-23 01:01:59 +02:00
Marco Cawthorne 5439bfb59b
CBaseEntity: Mark some methods as nonvirtual, fix some regressions with
func_healthcharger/recharger, trigger_gravity
2021-09-22 20:56:20 +02:00
Marco Cawthorne 451beedb0c
CBasePhysics: add support for explosions upon destruction, provided via
propdata.
2021-09-21 21:11:02 +02:00
Marco Cawthorne 251713121c
PropData: Add support for the BreakModel info parsing. Any CBaseEntity can
now be augmented. prop_physics entities can already make use of them.
2021-09-21 20:33:09 +02:00
Marco Cawthorne 3bceff6a2c
Implement and parse the propdata system from Source 2004 and make our
func_breakable entity aware of it.
2021-09-17 19:31:22 +02:00
Marco Cawthorne 56e07c3f06
CGameRules: Add MonstersSpawn(), now game-modes can be queried for whether
or not monster entities spawn on init.
2021-09-16 21:16:37 +02:00
Marco Cawthorne cba54d3e2b
Added crossprint, changed input_sequence from int to float as
it's now integrated into the engine, however as a float (blame DP)
2021-09-15 22:44:31 +02:00
Marco Cawthorne 81116646e4
Sound_Distance: Use pointsound, because the engine may do a funny
with channels and whatnot in the OpenAL backend. It works when
no entities are involved.
2021-09-12 01:17:26 +02:00
Marco Cawthorne f884b3d35d
Separate networking between CBaseEntity and CBaseMonster, needs
cleaning.
2021-09-12 00:13:24 +02:00
Marco Cawthorne 10b2ff1fca
Add setorigin_safe(), which is just like setorigin but pushes
entities upwards out of the ground.
2021-09-12 00:12:55 +02:00
Marco Cawthorne d94a5f33eb
GS-EntBase: Add prop_vehicle_driveable, for model based 4-wheel
vehicles.
2021-09-11 22:43:14 +02:00
Marco Cawthorne 5578b0e602
GS-EntBase: Add client-side prediction for func_tankmortar. 2021-09-08 20:17:13 +02:00
Marco Cawthorne 2a86794d67
Add precache_cubemap() to src/client/defs.h 2021-09-02 21:11:54 +02:00
Marco Cawthorne 8ba5bc56d2
Sound: Added 'distshader' keyword support... which will play a
another sound definition at global attenuation (explosions like this)
2021-09-02 10:10:27 +02:00
Marco Cawthorne 4a2cde56cc
Clean up pseudorandom() a bit. 2021-09-02 09:47:48 +02:00
Marco Cawthorne 9fa091db43
Reserve 3 SRC'04 rendermodes, implement RM_DONTRENDER. 2021-09-01 22:41:11 +02:00