Commit graph

15339 commits

Author SHA1 Message Date
Major Cooke
f136650e81 Fixed Thing_ProjectileAimed being broken.
- It was calling the fallback aiming in the wrong place when it should have been outside the speed check.
- Credit to _mental_ for the base code, but no gotos involved.
2019-04-26 01:39:56 +02:00
Chronos Ouroboros
df3f074b0a Fixed some issues in the ZScript array compilation code. 2019-04-26 01:33:09 +02:00
Christoph Oelckers
99f6d2a177 - replaced some NULLs with nullptr.
# Conflicts:
#	src/fragglescript/t_script.cpp
2019-04-26 01:33:07 +02:00
Chronos Ouroboros
541fd0097b Implemented compound initializers for arrays. 2019-04-26 01:31:23 +02:00
Christoph Oelckers
ff9fe5f4d0 - changed AFuncDesc initialization to avoid generating initializer functions.
Visual C++ will never statically initialize a class instance where a member field has a default value set, so the DEFINE_ACTION_FUNCTION variants without a direct native call need to be handled differently. The easiest way to do this is to leave out the nullptr default and omit the value in the initializer list. For trailing fields this will always get them nulled.
2019-04-26 01:31:21 +02:00
Player701
99a5f86364 - Fixed spawn height of projectiles created by SpawnPlayerMissile. 2019-04-26 01:31:18 +02:00
Christoph Oelckers
30f55ccf7d - converted the ACS Stringbuilder macros into inline functions. 2019-04-26 01:31:16 +02:00
Christoph Oelckers
b00a039af8 - let RunHealth clamping respect the newly added global properties. 2019-04-26 01:31:12 +02:00
Christoph Oelckers
bb129fd929 - bumped savegame version because the recent scriptification of APlayerPawn will render all old savegames unusable. 2019-04-26 01:31:10 +02:00
Christoph Oelckers
9a99d55896 - made forwardmove and sidemove defaults configurable through the gameinfo section. 2019-04-26 01:31:07 +02:00
Christoph Oelckers
7f7c87a537 - fixed: Trying to remove the first item in an actor's inventory would lose all owned items. 2019-04-26 01:29:06 +02:00
Christoph Oelckers
edfb814957 - fixed delete calls on FDynamicLight.
This isn't allocated from the system heap so it cannot be freed by it.
2019-04-26 01:29:03 +02:00
Christoph Oelckers
e6ae9984ff - fixed: GetSoundClass must be able to handle non-players. 2019-04-26 01:29:01 +02:00
Christoph Oelckers
094aa245e6 - fixed: G_StartTravel must remove all dynamic lights from the actors it is about to carry over to the next level. 2019-04-26 01:20:05 +02:00
Christoph Oelckers
251b096b48 - removed all remaining native parts of APlayerPawn.
Unlike the other classes, the places where variables from this class were accessed were quite scattered so there isn't much scriptified code. Instead, most of these places are now using the script variable access methods.
This was the last remaining subclass of AActor, meaning that class Actor can now be opened for user-side extensions.
2019-04-26 01:20:02 +02:00
drfrag
15bcc4c6a1 - Missed some castings. 2019-04-26 01:15:11 +02:00
Christoph Oelckers
8fecfb8f85 - properly handle passing of the light flags.
Since these can be changed on the placed light actor they have to be read from there, so this is now a pointer in FDynamicLight, just like the other properties that can be user-changed.
Also did some cleanup on the interface so that external code doesn't need to dereference the lightflags pointer but can use utility functions for all flags.

# Conflicts:
#	src/hwrenderer/dynlights/hw_dynlightdata.cpp
#	src/swrenderer/line/r_walldraw.cpp

# Conflicts:
#	src/g_level.cpp
#	src/gl/compatibility/gl_20.cpp
2019-04-26 00:42:05 +02:00
Christoph Oelckers
17b13f1a60 - fixed: DeactivateLight called Activate instead of Deactivate. 2019-04-26 00:28:08 +02:00
drfrag
1bb9b3b861 - Fixed compilation of previous commit.
# Conflicts:
#	src/gl/compatibility/gl_20.cpp
2019-04-26 00:27:39 +02:00
Christoph Oelckers
f261ec7d53 - rewrote dynamic lights to not use actors for the internal representation and made DynamicLight a purely scripted class.
This should be less of a drag on the playsim than having each light a separate actor. A quick check with ZDCMP2 showed that the light processing time was reduced to 1/3rd from 0.5 ms to 0.17 ms per tic.
It's also one native actor class less.

# Conflicts:
#	src/g_shared/a_dynlight.cpp
#	src/g_shared/a_dynlight.h
#	src/hwrenderer/dynlights/hw_dynlightdata.cpp
#	src/hwrenderer/dynlights/hw_dynlightdata.h
#	src/hwrenderer/scene/hw_renderhacks.cpp
#	src/namedef.h
#	src/scripting/thingdef_data.cpp
#	src/swrenderer/line/r_walldraw.cpp

# Conflicts:
#	src/d_main.cpp
#	src/g_levellocals.h
#	src/g_shared/a_dynlight.cpp
#	src/g_shared/a_dynlight.h
#	src/gl/dynlights/gl_dynlight.h
#	src/gl/dynlights/gl_dynlight1.cpp
#	src/gl/scene/gl_spritelight.cpp
#	src/gl/scene/gl_walls.cpp
#	src/hwrenderer/dynlights/hw_shadowmap.cpp
#	src/hwrenderer/dynlights/hw_shadowmap.h
#	src/hwrenderer/scene/hw_flats.cpp
#	src/p_setup.cpp
2019-04-26 00:19:03 +02:00
Christoph Oelckers
08c75efb10 - fixed: ADynamicLight's shadowmap index must be reset when loading a savegame. 2019-04-25 21:20:56 +02:00
Christoph Oelckers
bc8af1cab8 Fixed initialization issues with dynamic lights.
Actors get initialized from their defaults so anything done in the constructor or some explicit member initialization will be overwritten.
They must use their properties for setting up configurable fields and do the rest in BeginPlay.
2019-04-25 20:59:06 +02:00
alexey.lysiuk
81cb8cb60b Fixed applying of dynamic lights to models
https://forum.zdoom.org/viewtopic.php?t=60301

# Conflicts:
#	src/gl/scene/gl_sprite.cpp
2019-04-25 20:48:17 +02:00
Christoph Oelckers
b3a8dcdbd4 store shadow map index in the light actor instead of a separate TMap
This frees another file of a direct renderer dependency and generally also should be faster
2019-04-25 20:14:00 +02:00
drfrag
e335a48009 - Fixed bad merge of "- changed handling of attenuated lights in the legacy renderer to be adjusted when being rendered instead of when being spawned.". 2019-04-25 19:11:40 +02:00
Christoph Oelckers
99dd234d10 - exported all native components of APlayerPawn.
Only the class definition itself remains and needs to be taken care of.

# Conflicts:
#	src/g_statusbar/sbarinfo_commands.cpp
#	src/hu_scores.cpp
#	src/scripting/thingdef_data.cpp

# Conflicts:
#	src/actorinlines.h
#	src/hu_scores.cpp
2019-04-25 17:42:11 +02:00
Christoph Oelckers
94eb0ecdda - scriptified the remaining PlayerPawn methods. 2019-04-25 17:35:44 +02:00
Christoph Oelckers
b28faa6793 - took several methods out of the native PlayerPawn implementation, either by scriptification or moving them to other places. 2019-04-25 17:34:56 +02:00
Christoph Oelckers
6f2a32ecbe - scriptified PlayerPawn.ResetAirSupply. 2019-04-25 17:34:53 +02:00
Christoph Oelckers
1c577e4c97 - scriptified APlayerPawn's DamageFade handling. 2019-04-25 17:34:51 +02:00
Christoph Oelckers
cf890a24c3 - scriptified P_CalcHeight.
This was the only code using the ViewBob member variable.
This also moves the range check for this variable to its application, because a badly behaved mod can just as easily change it at run time instead of just setting an absurdly large value in the class definition.
2019-04-25 17:34:49 +02:00
Christoph Oelckers
8e376754fc - did some more lightening on the PlayerPawn class. 4 more properties and one native member function have been handled. 2019-04-25 17:34:47 +02:00
Christoph Oelckers
c762757aca - initialize the PlayerPawn members only used by scripts through the script variable interface.
The goal here is to eliminate the native PlayerPawn class, after all, so this will be needed anyway.
2019-04-25 17:34:45 +02:00
Christoph Oelckers
cb2e46a4fe - scriptified A_SkullPop and ObtainInventory.
These were the last relevant items to access PlayerPawn.InvFirst.
2019-04-25 17:34:43 +02:00
Christoph Oelckers
08e2a86f64 - made ColorRangeStart and ColorRangeEnd meta properties of APlayerPawn.
These are only used during initialization and they should have been readonly from the start.
2019-04-25 17:34:41 +02:00
Christoph Oelckers
51499e167d - scriptified useflechette CCMD's item finding code. 2019-04-25 17:34:39 +02:00
Christoph Oelckers
4be9217215 - scriptified the declaration of AmbientSound
Most of the code is still native, but this means that PlayerPawn is the last remaining child of AActor.

# Conflicts:
#	src/g_shared/a_dynlight.cpp
2019-04-25 17:34:37 +02:00
alexey.lysiuk
70e7f9f853 - added missing range checks to level compatibility handler
# Conflicts:
#	src/compatibility.cpp
2019-04-25 16:50:28 +02:00
Christoph Oelckers
990aad3b0c - fixed: The player sound lookup would fail if a sound was only available for the last gender in the list.
This is an ancient bug, but it never registered before - only after making 'other' the default gender for nonsense input it became apparent.
2019-04-25 16:32:19 +02:00
Christoph Oelckers
0c1fc45df8 - fixed A_Chase default detection. 2019-04-25 16:31:58 +02:00
Christoph Oelckers
96d40ac403 - fixed the direct native variant of DynamicLight.SetOffset. 2019-04-25 16:26:40 +02:00
Major Cooke
2e6382f55e - Fixed: NODAMAGE was not accounted for with pain. 2019-04-25 13:10:51 +02:00
Rachael Alexanderson
77c97afd2b - force CMake to use internal asmjit. I left it in a state so that it can easily be changed back in the future. 2019-04-25 13:10:49 +02:00
Timo Myyrä
b561b72fd0 fix Unix builds without backtrace functions in their libc
backtrace functions are not present in all libc implementations. Cmake has
module to add external libraries into build if needed so use it to fix build on
Unix systems without backtrace in libc.
2019-04-25 13:10:47 +02:00
Marrub
d623ede89d Fix A_CustomBulletAttack's spawnofs_xy parameter
The current behaviour offsets to the front of the actor rather than the side, due to an oversight in the code, which oddly is not present in the A_FireBullets equivalent.
2019-04-25 13:10:44 +02:00
Player701
3d1e810e72 - Since GetParentAmmo is now virtual, BackpackItem and the "give ammo" cheat should call GetParentAmmo to determine base ammo classes. 2019-04-25 13:10:41 +02:00
Christoph Oelckers
1669e10f6e - fixed memory leaks in network code.
ReadString allocates a buffer, so saving it in a local variable and then forgetting it will not free the buffer afterward.
(This should probably be refactored to use some safer methods to read the string than this old-school method...)
2019-04-25 13:10:39 +02:00
alexey.lysiuk
b706e8fead - fixed everlasting fast projectile after hitting ceiling
Without the test for ceiling hit fast projectile could enter its Death state every tick infinitely

https://forum.zdoom.org/viewtopic.php?t=63023
2019-04-25 13:04:25 +02:00
Christoph Oelckers
f1b345dc73 - fixed crash in AutoUseStrifeHealth
The loop never checked if the item was still valid and would continue to try to use it, even after it was removed from the inventory and destroyed.
As native code this just failed silently, but with the VM it needs to be explicitly checked.
2019-04-25 13:04:21 +02:00
Major Cooke
5209d43bf3 - Fixed: SXF_CLEARCALLERSPECIAL cleared the spawned actor's special instead of the caller. 2019-04-25 13:03:50 +02:00