Commit Graph

14834 Commits

Author SHA1 Message Date
Christoph Oelckers c18e895272 - exported all native components of APlayerPawn.
Only the class definition itself remains and needs to be taken care of.
2019-01-03 18:01:58 +01:00
Christoph Oelckers 3314a1efe5 - scriptified the remaining PlayerPawn methods. 2019-01-03 14:35:17 +01:00
Christoph Oelckers 2258a71c36 - took several methods out of the native PlayerPawn implementation, either by scriptification or moving them to other places. 2019-01-03 13:59:46 +01:00
alexey.lysiuk 4cc78c3273 - fixed compilation warning with GCC and Clang
src/hwrenderer/dynlights/hw_aabbtree.cpp:143:24: warning: comparison of integers of different signs: 'const int' and 'unsigned int' [-Wsign-compare]
2019-01-03 14:24:09 +02:00
Christoph Oelckers 23146f1af2 - scriptified PlayerPawn.ResetAirSupply. 2019-01-03 13:04:48 +01:00
Christoph Oelckers badacbb968 - scriptified APlayerPawn's DamageFade handling. 2019-01-03 12:47:34 +01:00
Christoph Oelckers 2bd72478ee - 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-01-03 11:57:20 +01:00
Christoph Oelckers 9e5c5b68c5 - did some more lightening on the PlayerPawn class. 4 more properties and one native member function have been handled. 2019-01-03 10:06:45 +01:00
Christoph Oelckers 8da1b5c1b0 - 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.
2019-01-03 09:24:22 +01:00
Christoph Oelckers da735c0e87 - 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-01-03 08:27:41 +01:00
Magnus Norddahl 850ef1cd78 - Add missing screenshot sRGB gamma when vid_hdr is active 2019-01-03 03:48:47 +01:00
Christoph Oelckers d057af7c3b - fixed: DeactivateLight called Activate instead of Deactivate. 2019-01-03 00:39:42 +01:00
Christoph Oelckers c753d59a72 - scriptified A_SkullPop and ObtainInventory.
These were the last relevant items to access PlayerPawn.InvFirst.
2019-01-03 00:35:56 +01:00
Christoph Oelckers 6eb8ded471 - made ColorRangeStart and ColorRangeEnd meta properties of APlayerPawn.
These are only used during initialization and they should have been readonly from the start.
2019-01-02 22:13:57 +01:00
Major Cooke 8bbbd95dfd - Fixed: NODAMAGE was not accounted for with pain. 2019-01-02 15:37:43 +01:00
alexey.lysiuk cb6b5e92ab - added missing range checks to level compatibility handler 2019-01-02 16:35:23 +02:00
Christoph Oelckers bc47fdfa78 - scriptified useflechette CCMD's item finding code. 2019-01-02 11:58:26 +01:00
Timo Myyrä 9e80caa85d 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-01-02 08:44:26 +01:00
Christoph Oelckers dc612703d5 - scriptified the declaration of AmbientSound
Most of the code is still native, but this means that PlayerPawn is the last remaining child of AActor.
2019-01-02 01:05:20 +01:00
Christoph Oelckers cea97e5cc6 - 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-01-01 19:40:57 +01:00
Christoph Oelckers d654e02dea - 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.
2019-01-01 19:35:55 +01:00
Christoph Oelckers 3f8d565dbb - split up P_FreeLevelData, so that everything that clears out fields in FLevelLocals is now in a member function of that class. 2018-12-31 12:42:03 +01:00
Christoph Oelckers c45e1cbbf0 - fixed typo in sky preparation. 2018-12-31 00:14:15 +01:00
player701 7c8cdf80d1 - Fixed settings_controller not updating properly when a player becomes the new arbitrator in a netgame. 2018-12-30 10:48:55 +02:00
Christoph Oelckers 53be21eb58 - added missing return in P_RemoveThing. 2018-12-30 08:40:04 +01:00
Christoph Oelckers 5ca6f9af9a - added missing null pointer check to SBarInfo's inventory bar drawer. 2018-12-30 08:31:40 +01:00
Christoph Oelckers 65b01bd16d - fixed incomplete commit.
I have no idea where the rest of this stuff went...
2018-12-30 08:22:34 +01:00
Christoph Oelckers de375ce187 - fixed the direct native variant of DynamicLight.SetOffset. 2018-12-29 17:50:31 +01:00
Christoph Oelckers 4d34e5997b - pass level as an argument to some code being used by the map loader. 2018-12-29 16:20:06 +01:00
Christoph Oelckers eecf3a203a - let UDMFParser use the level from the map loader, not the global variable. 2018-12-29 16:20:06 +01:00
Christoph Oelckers f35ac75ca2 - fixed precaching of switches.
The backwards animation accessed the wrong array which in case of sequences with different length could crash
2018-12-29 14:01:07 +01:00
Christoph Oelckers 0aeaed4207 - use a TArray to store the sprite model hash to get rid of one atterm call. 2018-12-29 13:28:22 +01:00
Christoph Oelckers 313ec62a5c - removed the static members from FMaterial.
Their functionality has been moved to more appropriate places already and they were essentially unused.
2018-12-29 13:28:22 +01:00
Christoph Oelckers 20184e1e99 - removed some unused bits of code. 2018-12-29 13:28:22 +01:00
Christoph Oelckers 3fbc55a8dd - do not use global variables to track state in the decal code.
Setups like this have caused problems in the past so best get rid of it.
2018-12-29 13:28:22 +01:00
Christoph Oelckers 17e053499e - reworked the lock code to remove the 255 locks limit and to allow it to automatically deinitialize. 2018-12-29 10:19:31 +01:00
Christoph Oelckers 982c622367 - fixed: The polyobject spawn point collector did not properly check for bad mapthings. 2018-12-29 08:49:53 +01:00
Christoph Oelckers f31b1b92c9 - eliminated the two global FraggleScript variables by moving them into DFraggleThinker. 2018-12-29 01:18:21 +01:00
Christoph Oelckers 496dd4ee68 - treat non-existent arrays in the savegame as zero length. 2018-12-29 01:17:59 +01:00
Christoph Oelckers cad43e431c - cleanuo. 2018-12-28 23:19:01 +01:00
Christoph Oelckers 3559f7dffb Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-12-28 23:14:22 +01:00
Christoph Oelckers 5f303859e9 - made some changes to how the compatibility code works to allow removing the last remaining global variables of the map loading code.
Everything temporary is now part of the MapLoader class.
2018-12-28 23:14:11 +01:00
Christoph Oelckers d066a1f10f - renamed some variables because they were getting into the way of analyzing usage of the global variable of the same name. 2018-12-28 18:11:33 +01:00
Major Cooke 7acf43741a Fixed: IsFakePain received the modified damage instead of the raw, preventing ALLOWPAIN from working as intended. 2018-12-28 17:23:55 +01:00
Christoph Oelckers 0e904286e8 - moved renderinfo.cpp entriely into the map loader. 2018-12-28 15:51:32 +01:00
Christoph Oelckers e66e594dd0 - moved the sidetemp array into the map loader. 2018-12-28 15:30:23 +01:00
Christoph Oelckers 11e9cdae33 - split polyobject init into its own file and cleaned things up a bit. 2018-12-28 15:05:05 +01:00
Christoph Oelckers 9de2f5c1e7 - made polyobject init code part of MapLoader. 2018-12-28 14:48:10 +01:00
Christoph Oelckers 326e4d8559 - store the master pointer for the subsector lists in sector_t and the seg lists in side_t in FLevelLocals as a TArray instead of relying on the first element's pointer for this.
This simply way bad style.
2018-12-28 14:24:22 +01:00
Magnus Norddahl c499c563a0 - remove WallSampler 2018-12-28 13:04:54 +01:00
Christoph Oelckers 64595abe60 - moved main polyobject array into FLevelLocals and simplified the setup process to not depend on P_SpawnMapThing.
Since the SpawnedThings array is still available when polyobjects are spawned it makes no sense to create an expensive linked list in P_SpawnMapThing.
This can be done far better by scanning through the array again and collect all matching items in a second array.
2018-12-28 10:08:39 +01:00
Christoph Oelckers 84a28454dc - split maploader.cpp so that the parts that are not setting up the actual map data go back to p_setup.cpp. 2018-12-28 09:17:10 +01:00
Rachael Alexanderson c980f1c27f - g3.8pre 2018-12-27 23:46:21 -05:00
Magnus Norddahl 45d3df9df1 - remove pointless duplication of FWallCoords member variables 2018-12-28 01:13:58 +01:00
Magnus Norddahl 4d3d4ea746 - simplify colormap selection to a single function 2018-12-28 00:55:44 +01:00
Christoph Oelckers 467c73b2d7 - split P_SetupLevel so that the main part of it can be made part of the MapLoader class.
- allocate BlockNodes from the same memory arena as SecNodes.
2018-12-27 23:34:07 +01:00
Magnus Norddahl c0a4ba5e82 - Simplify ProjectedWallLight light step setup and positioning 2018-12-27 22:52:33 +01:00
Magnus Norddahl ed094d0b2f - create a ProjectedWallLight class for the variables used to calculate light for columns 2018-12-27 22:03:02 +01:00
Christoph Oelckers a47287f1e4 - use TArrays for all local allocations in the map loader. 2018-12-27 20:22:51 +01:00
Christoph Oelckers 6ae417725f - removed the optional MAPINFO data handler and moved the 3 items still using it to the main parser file.
This thing made sense when GZDoom and ZDoom were separate projects to avoid having to change some core files for the added options.
Now, with only 3 ones remaining, one for FraggleScript and two for Extradata the overhead here is just too high. The 3 variables can just be moved to level_info_t without carrying along this much baggage.
2018-12-27 17:38:11 +01:00
Christoph Oelckers 2edf02d731 - moved map loader files to a subdirectory. 2018-12-27 17:11:10 +01:00
Christoph Oelckers 017b3f9dc7 - fixed OpenGL texture objects weren't deleted when a texture was destroyed. 2018-12-27 14:25:13 +01:00
Christoph Oelckers f351df5c22 - moved Extradata parser into MapLoader class. 2018-12-27 12:33:18 +01:00
Christoph Oelckers 733cd5260a - moved slope creation functions and most initialize-time variables into MapLoader class. 2018-12-27 12:33:18 +01:00
Christoph Oelckers 89ba723609 - moved the content from p_glnodes into the MapLoader class. 2018-12-27 12:33:17 +01:00
Christoph Oelckers 2e22c01d45 - moved most content of p_setup.cpp into a MapLoader class. 2018-12-27 12:33:17 +01:00
Ijon 071347d7fb NOFRICTION now applies to Z friction when flying or swimming 2018-12-27 12:26:33 +01:00
alexey.lysiuk 23f2a3a7fc - fixed crash in Actor.Warp() with null destination
https://forum.zdoom.org/viewtopic.php?t=63031
2018-12-27 13:01:42 +02:00
Christoph Oelckers f3ae61a2d3 - remove some obsolete bit of cruft from the class type system.
This was a remnant of putting the meta data directly into the class descriptor which turned out to be an unworkable approach
2018-12-27 08:49:34 +01:00
Christoph Oelckers b31f284e28 - fixed 3D floor initialization for actor spawning.
Since actors are being spawned before the renderer gets set up this needs to fully initialize the list before spawning the actors, then take it down again for creating the vertex buffer and then recreate it.
2018-12-27 08:28:09 +01:00
Kevin Caccamo e04fc026ff Expand UDMF and ZScript API for side's own additive colors
Add 'useowncoloradd_{top,mid,bottom}' sidedef properties to the UDMF 
spec
Only use side's additive colors if 'useowncoloradd_(top|mid|bottom)' is 
set.
Rename UseOwnColors flag to UseOwnSpecialColors
Add UseOwnAdditiveColor flag to side_t::part
Add EnableAdditiveColor to side_t
Add Side.EnableAdditiveColor to ZScript API
2018-12-26 16:58:27 +01:00
Kevin Caccamo 286886e161 Minor fixes for additive colour ZScript API
Sector.SetAdditiveColor actually called Sector.SetSpecialColor
Add use boolean property, used to determine whether or not to override the sector's additive wall colour with the side's additive colour.
2018-12-26 16:58:27 +01:00
Kevin Caccamo 0773e6a98e Rework implementation as per the new specification
The new specification is more flexible, and allows assigning additive 
colors to individual parts of a sector (walls, sprites, flats) and even 
individual parts of a side (top, middle, bottom)

Add AdditiveColors arrays to sector_t and side_t::part
Initialize AdditiveColors arrays to 0
Export AdditiveColors to ZScript
Save AdditiveColors in saved game files
Use colors from AdditiveColors arrays when setting the additive color 
for the render state
Add code to parse the new UDMF additive color properties
Remove additive color slot from sector color/part enum
Add SetAdditiveColor to sector_t and side_t
Add GetAdditiveColor to side_t
Export new methods and additive color arrays to ZScript
2018-12-26 16:58:27 +01:00
Kevin Caccamo 60696c91a2 Change some of the names of the additive color properties 2018-12-26 16:58:27 +01:00
Kevin Caccamo 6485570c93 Implement additive colours on HUD sprites
Also, make sure the alpha for the additive colour is 255.
2018-12-26 16:58:27 +01:00
Kevin Caccamo 33723e8904 Implement additive colour on walls and sprites
Also, don't modify the alpha channel when adding the additive colour.
2018-12-26 16:58:27 +01:00
Kevin Caccamo 80bcac48ef Forcibly assign 0 to the additive special color 2018-12-26 16:58:27 +01:00
Kevin Caccamo 758cd77e55 Rename ColorAdd to AddColor, and use it ingame
Rename ColorAdd to AddColor
Add AddColor to FRenderState
Tweak SpecialColors array in ZScript to include the additive color
Add uAddColor to the shader compiler
Add uAddColor to the texel
2018-12-26 16:58:27 +01:00
Kevin Caccamo e5d43a734a Initial work on Doom64-style fade/glow 2018-12-26 16:58:27 +01:00
Magnus Norddahl 094ef39d5f - dynamically update polyobj lines 2018-12-26 14:26:57 +01:00
Major Cooke 1e741446d7 Reduced redundancy by putting all function aftermath handling in a subfunction. 2018-12-26 11:55:42 +01:00
Major Cooke 6372cdaa41 Split off pain chance triggering from ReactToDamage into its own function and gave ZScript access to it.
- TriggerPainChance(Name mod, bool forcedPain)
- One exception: PainThrehold is only checked in ReactToDamage, since this function does not require checking damage amount.
2018-12-26 11:55:42 +01:00
Major Cooke 2f7fae2fb0 DamageMobj Refactor
- Split off all reactive functionality (pain, infighting, etc) into its own function, ReactToDamage.
- Refactored all DamageMobj's damage <= 0 values.
 - Any unconditional cancellations now return -1. ReactToDamage will not be called if values < 0.
 - All pain/wound/target changing allowances return 0.
2018-12-26 11:55:42 +01:00
Ijon d2d684a35a Add NOFRICTION and NOFRICTIONBOUNCE flags
NOFRICTION disables all friction effects on the thing it's set on
(including the speed cap from water/crouching), and NOFRICTIONBOUNCE
disables the "bounce off walls on an icy floor" effect on the thing
it's set on.
2018-12-26 11:49:17 +01:00
Magnus Norddahl 1bb2bb31d4 - fix first softpoly frame being empty 2018-12-25 16:50:11 +01:00
Rachael Alexanderson dc05220abc - set vid_scalefactor to 1 when using vid_setscale 2018-12-25 00:18:44 -05:00
Christoph Oelckers a40c617478 - initialize the index field for particles.
This won't contribute to sort order so it should be the same for all particles, which it wasn't because it was never set.
2018-12-24 13:44:08 +01:00
Christoph Oelckers c58f5095d9 - fixed sprite sorting in the hardware renderer.
This did no longer sort sprites in the same position reliably since the feature to render sprites which only partially are inside a sector was added.
With this, sprites in the same position are no longer guaranteed to be added to the render list in sequence.
Fixed by adding an 'order' field to AActor which gets incremented with each spawned actor and reset when a new level is started.

The software renderer will also need a variation of this fix but its data no longer has access to the defining actor when being sorted, so a bit more work is needed here.
2018-12-24 10:18:58 +01:00
Magnus Norddahl 2cd1734de3 - improve softpoly 3d floor drawing somewhat 2018-12-23 14:59:47 +01:00
Magnus Norddahl 38cffa7646 - fix null pointer crash, replace DONT_DRAW with a boolean, make rw_pic a local variable 2018-12-23 05:01:50 +01:00
alexey.lysiuk 9446ddb318 - fixed default initialization of software warp textures
https://forum.zdoom.org/viewtopic.php?t=62979
2018-12-22 14:15:35 +02:00
alexey.lysiuk fb540d6d2b - fixed multipatch texture resolving
https://forum.zdoom.org/viewtopic.php?t=62972
2018-12-22 11:21:04 +02:00
alexey.lysiuk 5c5b9eb044 - empty screenshot array is returned by base framebuffer
src/v_video.h:556:94: warning: control reaches end of non-void function [-Wreturn-type]
2018-12-21 14:59:25 +02:00
Christoph Oelckers f6d9110c70 - removed the redundant GetOffsetPosition export and added direct native support to its existing variants 2018-12-21 13:52:30 +01:00
Christoph Oelckers a44e63babd - fixed the decal translation handler truncated the translation ID
This was yet another of those old misguided 16 bit space 'optimizations'.
2018-12-21 12:40:05 +01:00
Christoph Oelckers 2c3c91ff42 - fixed: The random sound handler was using 16 bit storage throughout
Changed to use 32 bit and also fixed the random number call which was using the byte value variant of the access operator, effectively limiting the number of choices to 256.
2018-12-21 12:40:05 +01:00
Christoph Oelckers ebaabcfb4f - a few more explicit local buffer allocations removed. 2018-12-21 12:40:05 +01:00
Christoph Oelckers cf18dbdfa7 - use a TArray to pass the screenshot buffer
This also removes a few other explicit buffer allocations.
2018-12-21 12:40:05 +01:00
alexey.lysiuk b3d6dfb55f - fixed lost settings controller state upon new game
https://forum.zdoom.org/viewtopic.php?t=62959
2018-12-21 13:14:21 +02:00
alexey.lysiuk 73d9751bb4 - cleaned up player reinitialization upon new game 2018-12-21 13:14:21 +02:00
Magnus Norddahl b64dfb54a5 - fix decals looking blackened due to low lookup table precision when alpha is zero 2018-12-21 10:15:09 +01:00
Cacodemon345 789941f24d Export P_GetOffsetPosition and ADynamicLight::SetOffset to ZScript 2018-12-20 22:54:45 +01:00
Christoph Oelckers 66a2cdb6e9 - added missing null pointer checks to cheat code. 2018-12-20 22:09:41 +01:00
Christoph Oelckers e279214f5b - removed the hasglnodes variables.
Since the software renderer also requires GL nodes now this was always true.
2018-12-20 18:40:19 +01:00
Christoph Oelckers d140d767a4 - changed last commit to let the replacement take the original's place and add the old texture at the end with its name cleared.
This is to ensure that this won't break ranged animations but aside from that should produce the same end result.
2018-12-20 18:20:25 +01:00
Christoph Oelckers 120b950291 - changed FTextureManager::ReplaceTexture to only append the new texture instead of replacing the old one.
This should ensure that other references to the original will remain valid.
2018-12-20 18:10:06 +01:00
Christoph Oelckers e05cedfc0d removed the unused DefaultExtension variant taking a char *. 2018-12-20 12:40:38 +01:00
Magnus Norddahl b0d8a813f9 - fix missing line number for the function throwing the exception and remove the duplicate call stack line 2018-12-20 04:50:45 +01:00
Magnus Norddahl 8c52f20373 - fix MemcpyCommand not using the same lines for the threads as softpoly (visible as a race condition when screenblocks didn't start at top of screen) 2018-12-20 04:27:30 +01:00
Christoph Oelckers 0faa9111b9 - moved P_OpenMapData and related content out of p_setup.cpp. 2018-12-19 18:41:53 +01:00
Christoph Oelckers 0160841dde - reverse the order of the texture list before resolving it.
Since this deletes the resolved elements one by one and needs to start at the front to ensure consistency, it is better to reverse the order so that the deletions take place at the end of the list which requires a lot less data movement.
On Total Chaos this slowed down texture setup to the point where the mod was basically unlaunchable.
2018-12-19 18:17:59 +01:00
Christoph Oelckers 1a3df8dfba - moved all shutdown handling for sound related resources to I_ShutdownSound instead of registering separate atterm handlers. 2018-12-19 09:39:06 +01:00
Christoph Oelckers bcff04e76f - fixed: The Heretic sky height hack needs to be stored in the already created texture object as well. 2018-12-19 09:12:58 +01:00
Christoph Oelckers c471be4409 - added an option to GAMEINFO to either force or disable loading of the default lights and brightmaps.
The mod which prompted me to add this is "The Chosen" which is a Dehacked-based TC and repurposes many original actors for something entirely different.
The stock lights are not usable for this and would make it impossible to add a GAMEINFO lump to it because then there is no way to disable loading of lights in the startup screen.
2018-12-19 01:37:48 +01:00
Magnus Norddahl ebfa61514e - remove InitSoftwareSky 2018-12-19 04:44:25 +01:00
Magnus Norddahl db295fae3a - fix sky drawer issues when not using max screenblocks 2018-12-19 04:27:41 +01:00
Magnus Norddahl e296d2819b - avoid creating labels when they are not used
- remove variable from class as it is only used locally
- set default values in the class
- remove unused field
2018-12-19 01:12:57 +01:00
Magnus Norddahl 650e6a9c1b - removed marked code for how to create GDB/LLDB debug info as it will probably never be implemented 2018-12-19 00:49:43 +01:00
Magnus Norddahl 34007a8d27 - add missing parameter on unix 2018-12-19 00:47:36 +01:00
Chronos Ouroboros bad8c18c58 Add line numbers to JIT stack traces. (#667) 2018-12-19 00:45:40 +01:00
Magnus Norddahl 9a2b3792ef - don't include the native frames per default 2018-12-19 00:43:50 +01:00
Magnus Norddahl 7785dd1b56 - fix linking and some linux things 2018-12-19 00:23:38 +01:00
Christoph Oelckers c6a3a6a3fb - fixed misnamed macros. 2018-12-19 00:09:36 +01:00
drfrag 39564d8933 - Fixed linking with MinGW-w64. 2018-12-18 16:43:52 -05:00
Chronos Ouroboros bb8fcd63c4 Added a function for triggering use/push specials for usage in custom monster AI. 2018-12-18 21:09:13 +01:00
Chronos Ouroboros e7118804ba Exported P_CheckFor3DFloorHit and P_CheckFor3DCeilingHit to ZScript. 2018-12-18 21:09:13 +01:00
Christoph Oelckers 462fe891bd - fixed: A powered up weapon which shares its ready state with the parent but is currently in a firing sequence may not force-switch the weapon, because that will cause the sequence to run in the wrong weapon's context. 2018-12-18 20:38:25 +01:00
Christoph Oelckers 6342e85c26 - fixed: The texture scale wasn't copied to image based font characters. 2018-12-18 19:52:56 +01:00
Christoph Oelckers c597b16f30 - fixed: 'frame' in GLDEFS light definitions was case sensitive. 2018-12-18 19:36:50 +01:00
alexey.lysiuk 8815379e15 - fixed compilation of POSIX targets
Making callstack resolving operational will require a little bit more effort

src/scripting/vm/jit_runtime.cpp:900:31: error: use of undeclared identifier 'frames'
src/scripting/vm/jit_runtime.cpp:903:23: error: use of undeclared identifier 'cnt'
2018-12-18 18:42:37 +02:00
drfrag 1ef5becd4f - Fixed compilation with MinGW-w64 64 bit. 2018-12-18 09:01:56 -05:00
Magnus Norddahl 585058c65e - add support for writing the native call stack 2018-12-18 14:49:41 +01:00
Magnus Norddahl 27ecae265d - improve the stack trace when the jit is active 2018-12-18 11:44:51 +01:00
Magnus Norddahl 64bfb1b905 - fix r_multithreaded 0 not working 2018-12-18 00:41:46 +01:00
Magnus Norddahl efb8e39aa9 - move more of the light calculation code to the drawerargs 2018-12-18 00:37:50 +01:00
Christoph Oelckers a73c065811 - replaced several explicit allocations with TArrays. 2018-12-17 18:28:04 +01:00
Christoph Oelckers d68cd3aa80 - fixed: Alpha textures need to use a color's grayscale value, not their red channel. 2018-12-17 17:44:22 +01:00
alexey.lysiuk fb71563311 - fixed inconsistent dymanic lights setup with UBO
https://forum.zdoom.org/viewtopic.php?t=62585
2018-12-17 12:27:35 +02:00
Magnus Norddahl 2ce91ea62f - delay converting sprite lightlevels to a shade until we hit ColormapLight 2018-12-17 07:54:46 +01:00
Magnus Norddahl 66b5e6e2ee - delay converting wall lightlevels to a shade until we hit the drawer 2018-12-17 06:47:26 +01:00
Magnus Norddahl 946f657a37 - fix heretic light torch in software renderer and remove some code duplication 2018-12-17 06:13:00 +01:00
Magnus Norddahl f35aeec6c3 - move visibility calculation to LightVisibility 2018-12-17 05:10:26 +01:00
Magnus Norddahl 9787e32d28 Merge branch 'SoftwareScaling' 2018-12-17 01:33:22 +01:00
Magnus Norddahl c3477e9197 - softpoly decals were upside down 2018-12-17 01:32:46 +01:00
Magnus Norddahl 9e15f26923 - fix decal upscaling 2018-12-17 01:32:15 +01:00
Christoph Oelckers 4cd745db48 - fixed: Patch rotations were not applied during true color texture composition. 2018-12-17 00:03:36 +01:00
Christoph Oelckers 87953020ba - fixed: FImageSource::GetCachedBitmap did not pass the translucency information along to the caller. 2018-12-16 19:17:53 +01:00
Christoph Oelckers cce82e99d6 - fixed: The texture compositor did not use a patch's translation. 2018-12-16 19:03:04 +01:00
Magnus Norddahl 15d599813b - add support for scaled textures in softpoly 2018-12-16 15:12:45 +01:00
Magnus Norddahl eaf1c4f1e2 - implement the physical texture scaling at the drawer transition level as the frontend of the software renderers do not even need to know the textures are scaled 2018-12-16 14:34:44 +01:00
Christoph Oelckers e776dbce55 - use TArrays for MD3 storage. 2018-12-16 13:33:42 +01:00
Magnus Norddahl 57525f1505 Merge remote-tracking branch 'origin/master' into SoftwareScaling 2018-12-16 12:10:53 +01:00
Christoph Oelckers cc52f89372 - fixed: For non-persistent buffers, sprite vertices need to be recalculated in the splitter code of the translucent sorter. 2018-12-16 12:06:17 +01:00
Magnus Norddahl 6648f4e47f Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-12-16 11:31:18 +01:00
Magnus Norddahl 88751a320c - fix sky drawers not staying within their numa node 2018-12-16 11:31:05 +01:00
Christoph Oelckers 881fc89fe8 - removed redundant std::move. 2018-12-16 11:29:22 +01:00
Christoph Oelckers 1422a95aa8 Merge branch 'Texture_Cleanup'
# Conflicts:
#	src/textures/formats/multipatchtexture.cpp
2018-12-16 10:19:58 +01:00
Christoph Oelckers a38e75db00 - improved error reporting for badly defined translations.
This needs to be handled by the caller for all use cases because the translation parser lacks the context to do a proper error report.
2018-12-16 09:56:53 +01:00
Christoph Oelckers a96b86b13b - fixed: sidedef-less GLWalls may not apply per-sidedef render properties.
These always come from open-sector render hacks where the renderer tries to fill in some gaps
2018-12-16 09:38:22 +01:00
Christoph Oelckers d0ce021805 - fixed: Both main and worker thread were modifying the portal state.
The parts in the main thread have been offloaded to a new worker job to avoid having to use a mutex to protect the portal state.
2018-12-16 09:05:02 +01:00
Christoph Oelckers 51f03c8215 - a few more fixes. 2018-12-16 00:37:34 +01:00
Christoph Oelckers 87b0567cd7 - the font character substitution logic needed more fixes.
The ZScript DrawChar function was incomplete and FFont::GetChar did not always return the proper texture.
To make things clearer the OriginalPic is now only used in the few cases where substitution takes place and nothing else.
2018-12-15 23:32:49 +01:00
Christoph Oelckers c92e6b03ac - why wasn't this saved? 2018-12-15 21:39:00 +01:00
Christoph Oelckers 39f6489ac5 - two more places where explicit allocations could be replaced. 2018-12-15 20:41:21 +01:00
Christoph Oelckers 091f73b833 - fixed: no sprites were drawn in a sector if it only had ones in its sectorportal_thinglist. 2018-12-15 20:22:42 +01:00
Christoph Oelckers 8e24a50b36 - let FxNop have a value type, even if it's just TypeError. 2018-12-15 20:08:05 +01:00
Christoph Oelckers e6e4f0f305 - disabled redirection to the original patch for FSpecialFont.
Using the same code as for the standard font does not work as intended, the reason still needs to be investigated.
2018-12-15 19:15:05 +01:00
Christoph Oelckers d1ca2a91f3 - fixed: ThePatchRemap table was only initialized in one of FFont's constructors. 2018-12-15 17:49:12 +01:00
Christoph Oelckers c105a1f670 - fixed two broken ScriptUtil calls in FraggleScript. 2018-12-15 16:57:20 +01:00
Rachael Alexanderson 14e9e3ac56 - use software mipmaps for truecolor for scaled textures 2018-12-15 10:50:59 -05:00
Christoph Oelckers 74ea9143ee - added a 'forceworldpanning' map flag.
Since unfortunately this cannot be set as a general default, let's at least make it as easy as possible to disable that panning+scaling madness without having to edit the texture data.
2018-12-15 16:29:37 +01:00
Rachael Alexanderson 3fc9dd4144 Merge remote-tracking branch 'origin/Texture_Cleanup' into softwarescaling 2018-12-15 10:18:39 -05:00
Rachael Alexanderson 2e927c7026 - port texture upscaler code to truecolour 2018-12-15 10:13:28 -05:00
Christoph Oelckers dc9c7afa24 - reimplemented the GetRawTexture redirect. 2018-12-15 16:05:48 +01:00
Rachael Alexanderson aaabefbfab Merge branch 'master' into softwarescaling 2018-12-15 09:51:50 -05:00
Christoph Oelckers 1aba33122b - fixed: The light defaults were not fully deleted on an engine restart. 2018-12-15 15:36:43 +01:00
Christoph Oelckers faa4bb45c9 - store UnchangedSpriteNames in Dehacked in a less hacky manner. 2018-12-15 15:36:33 +01:00
Christoph Oelckers d937c50726 - use a TArray in PPUniforms.
This makes the vast majority of code in that class just go away
2018-12-15 14:59:49 +01:00
Christoph Oelckers 056b2c3a80 - handle CR_UNTRANSLATED so that it doesn't force CR_UNTRANSLATED to the palette.
Since the entire font setup is very much incapable of handling this during rendering, short of a complete rewrite, it was necessary to put the relevant code into the places which process the characters for drawing so that it can disable the translation table (which needs to be passed as raw data to the draw functions) and keep track of both the translatable and the original variant of the character graphics.
2018-12-15 14:51:03 +01:00
Christoph Oelckers 48d87e3dcf - use TArrays for most buffers being used in the font class. 2018-12-15 11:55:21 +01:00
Christoph Oelckers cd25b4be4f - use a TArray to store the particles and remove all 16 bit global variables.
This means one less exit function to deal with - and these days 16 bit variables are a pointless attempt at saving space.
2018-12-15 10:04:49 +01:00
Christoph Oelckers 3d0fb6cf90 Merge branch 'master' into Texture_Cleanup 2018-12-15 09:45:26 +01:00
Christoph Oelckers 1187906a61 - use symbolic constants for the light modes. 2018-12-15 09:40:39 +01:00
Christoph Oelckers 15949102da Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-12-15 08:27:32 +01:00
Magnus Norddahl 3af6ae4b37 - add vanilla lightmode that behaves exactly as Doom's original light did 2018-12-15 07:11:28 +01:00
Christoph Oelckers 4d8e8e7741 - enable the texture scalers in software mode.
Currently only implemented for 8 bit in the classic renderer.
2018-12-15 00:38:27 +01:00
Christoph Oelckers 656dbc9647 Merge branch 'master' into Texture_Cleanup
# Conflicts:
#	src/textures/texture.cpp
2018-12-14 22:36:26 +01:00
Christoph Oelckers 013d3e2368 - code simplification. 2018-12-14 22:34:28 +01:00
Christoph Oelckers f373752b4f - fixed incorrect alignment of scaled world panned textures combined with per-sidedef scaling in the hardware renderer
This particular case incorrectly factored in the sidedef's scaling factor for how to calculate the offset.
Fortunately this is a very rare case - a quick check yielded no maps depending on it.
Should any map surface that depends on this bug a compatibility option may be needed but it doesn't seem likely that this may be the case.
2018-12-14 20:00:44 +01:00
Christoph Oelckers a19f297ae0 - fixed incorrect alignment of scaled world panned textures combined with per-sidedef scaling in the hardware renderer
This particular case incorrectly factored in the sidedef's scaling factor for how to calculate the offset.
Fortunately this is a very rare case - a quick check yielded no maps depending on it.
Should any map surface that depends on this bug a compatibility option may be needed but it doesn't seem likely that this may be the case.
2018-12-14 19:59:19 +01:00
alexey.lysiuk 4a83f4d251 - disable music playback if WinMM stream cannot be opened
https://forum.zdoom.org/viewtopic.php?t=62888
2018-12-14 15:58:08 +02:00
Christoph Oelckers e157e36b43 - the texture still needs to be added to the texture manager. 2018-12-14 01:48:53 +01:00
Christoph Oelckers bd6ba47d63 - fixed: The multipatch texture builder may not store the texture IDs on assignment.
Between creation and resolving the texture manager will resort the textures and after that the old ids are no longer valid. The textures themselves have the correct one, so that should be used.
2018-12-14 01:47:39 +01:00
Christoph Oelckers 1e844336b9 - fixed memory leak with texture creation. 2018-12-14 01:46:26 +01:00
Christoph Oelckers fc5dd17d77 - fixed 3D floor texture setup.
This code really makes zero sense, it looks like the cases for upper and lower texture should never be entered ever.
2018-12-14 01:31:40 +01:00
Christoph Oelckers 7ffc2f1275 - fixed invalid texture accesses in the software renderer. 2018-12-13 23:25:55 +01:00
Christoph Oelckers 134460bae6 - one final fix. 2018-12-12 20:16:02 +01:00
Christoph Oelckers 01e05c9b70 - now it's correct. 2018-12-12 20:11:09 +01:00
Christoph Oelckers 7ea1e8acee - fixed layer creation. 2018-12-12 20:08:12 +01:00
Christoph Oelckers 173b8beb33 - cleaned out the FHardwareTexture class, now that the translations are finally handled on a higher level. 2018-12-12 18:55:55 +01:00
Christoph Oelckers c5447f0cdd - continued work on texture management. 2018-12-12 18:39:38 +01:00
alexey.lysiuk 14094ebeb9 - fixed crash on invoking vid_setsize CCMD with one argument 2018-12-12 10:15:53 +02:00
Christoph Oelckers fb6ee5046c - add the hardware texture container to FTexture.
Currently it does not use the translated entries yet.

# Conflicts:
#	src/hwrenderer/textures/hw_material.cpp
2018-12-12 02:55:11 +01:00
Christoph Oelckers e6b4c63b99 - More adjustments 2018-12-12 02:52:27 +01:00
Christoph Oelckers 245a8243b0 - separated the savepic texture handler from the regular PNG texture
This was leaking memory with being handled like a regular image texture and also would prevent further changes to the in-game texture handling because the savegame picture was imposing some limitations on FPNGTexture's implementation
2018-12-12 02:03:54 +01:00
Christoph Oelckers 2cf6d213e2 - fixed compile bugs 2018-12-12 01:27:04 +01:00
Christoph Oelckers 8fcc170e8f - add font characters to the texture manager for easier management
These were the only non-transient textures not being handled by the texture manager which complicarted operations that require itrer
2018-12-12 01:25:25 +01:00
Christoph Oelckers 368c788789 - added a 'check only' option to CreateTexBuffer.
This is meant to calculate the content ID without constructing the texture buffer.
2018-12-12 00:46:58 +01:00
Christoph Oelckers 200188b3a4 - FHardwareTextureContainer.
This is essentially a stripped down version of FHardwareTexture, which can exist on the API independent size, and which stores pointers to hardware textures instead of OpenGL texture handles.
2018-12-12 00:34:37 +01:00
Christoph Oelckers 07f87e2542 - changed CreateTexBuffer to return its info in a structure and not as a naked pointer. 2018-12-11 21:06:34 +01:00
Christoph Oelckers ab624c8c5a Merge branch 'master' into Texture_Cleanup
# Conflicts:
#	src/textures/hires/hqresize.cpp
2018-12-11 20:27:24 +01:00
Christoph Oelckers f01d1ec072 - must merge before continuing... 2018-12-11 20:26:33 +01:00
Christoph Oelckers 86d851bc5c - minor cleanup and allow FHardwareTexture to restore the old bindings after creating a texture. 2018-12-11 19:56:23 +01:00
alexey.lysiuk 8b46be7686 - print VM stack trace on startup abort exception
https://forum.zdoom.org/viewtopic.php?t=62650
2018-12-11 10:46:56 +02:00
Christoph Oelckers abd6729d39 - fixed deprecation warnings for member functions not checking the version. 2018-12-11 00:35:22 +01:00
Christoph Oelckers ad8f484836 - fixed: The JIT compiler crashed on missing ArgFlags.
For ad-hoc Dehacked state functions no ArgFlags are created, in this case they can just be assumed to not be relevant here, because none of these function produces reference arguments.
2018-12-11 00:22:54 +01:00
Christoph Oelckers 5666e4c805 - made camera textures operational again.
Now with proper separation of software rendering logic from the main part of the class.
2018-12-11 00:01:45 +01:00
Rachael Alexanderson 28516c2def - split gl_texture_hqresize into two variables - one for mode, one for multiplier. 2018-12-10 14:25:29 -05:00
Christoph Oelckers 91a8f5cd04 Merge remote-tracking branch 'remotes/origin/master' into Texture_Cleanup
# Conflicts:
#	src/polyrenderer/poly_renderthread.cpp
#	src/swrenderer/r_renderthread.cpp
2018-12-10 18:47:21 +01:00
drfrag666 cbb5f8a0dc - Fixed: the vid_rendermode CVAR could get wrong values. 2018-12-10 07:08:48 -05:00
alexey.lysiuk 6362415054 - fixed return value of native call to dynamic array's Reserve()
https://forum.zdoom.org/viewtopic.php?t=62841
2018-12-10 11:26:46 +02:00
alexey.lysiuk 8a4b8cc2ca - server CVARs can be changed only by settings controller
Initially, settings controller flag was false by default
It was not touched during construction and destruction of player_t instances though
Now, with all members initialized in class definition, this flag must be saved and restored manually

https://forum.zdoom.org/viewtopic.php?t=62830
2018-12-10 10:36:40 +02:00
Christoph Oelckers 91bb7c0641 Let FSkyboxTexture map to the last defined regular texture of the same name instead of its first face
This is normally a better fallback for the software renderer.
2018-12-10 02:56:49 +01:00
Christoph Oelckers 0d07fb2550 Use FImageTexture for thre null texture
FDummyTexture had a big problem: Whenever it was accessed by accident it crashed the app because it wasn't fully implemented.

What it should do is return empty pixels of the given size, and an unextended FImageTexture is doing just that.
2018-12-10 02:50:22 +01:00
Christoph Oelckers b32aa60760 Made SWPaletteTexture an ImageSource and let it be managed by the texture manager.
This is a lot easier to manage because the palette is just static data that can easily mimic an image.
2018-12-10 02:43:37 +01:00
Christoph Oelckers 4cd60fbe99 - added caching for true color images as well 2018-12-10 02:35:10 +01:00
Christoph Oelckers 2e7bcf9e41 - implemented a proper texture composition cache.
This will mostly ensure that each patch used for composition is only loaded once and automatically unloaded once no longer needed.
So far only for paletted rendering, but the same logic can be used for true color as well.
2018-12-10 01:17:39 +01:00
Christoph Oelckers 796c0fe931 - fixed precaching to consider animations and switches 2018-12-10 01:13:44 +01:00
Magnus Norddahl f0ce453d47 - workaround pointer truncation bug in asmjit 2018-12-09 17:36:43 +01:00
Christoph Oelckers 5448874c6e - moved image format detection logic from FTexture to FImageSource. 2018-12-09 17:10:51 +01:00
Christoph Oelckers 34884e2756 - base FFontChar1 and FFontChar2 on FImageSource as well.
Now the only textures not being backed by an image source that are actually getting used during normal rendering are the canvas textures.
2018-12-09 16:00:27 +01:00
Christoph Oelckers 9e25025315 - missed this new file. 2018-12-09 15:41:02 +01:00
Christoph Oelckers 4cedbf6cc2 - split between textures and images is complete now.
* split up FMultiPatchTexture into a builder class and the actual image source.
* since images can now be referenced by multiple textures the old redirection mechanism has been removed. It can be done better and less intrusive now. Simple single patch textures already directly reference the underlying patch image now.
* allocate all image source related data from a memory arena. Since this is all static this makes it a lot easier to free this in bulk.
2018-12-09 15:25:56 +01:00
alexey.lysiuk 40f77e5dac - removed erroneous assertion
https://forum.zdoom.org/viewtopic.php?t=62815
2018-12-09 13:00:36 +02:00
alexey.lysiuk f6bb33787b - fixed Actor.A_StopSound() native call
Wrong function overload was selected by compiler

https://forum.zdoom.org/viewtopic.php?t=62820
2018-12-09 10:13:43 +02:00
Christoph Oelckers 91f7121452 - made some changes to the FImageSource interface that allows forwarding the bRemap0 flag, but do it so that it doesn't permanently alter how the image looks.
In ZDoom this would affect everything using a patch that got used in a front sky layer, even if the texture was totally unrelated. It is only owed to the low usability of such patches for other purposes that this hasn't caused problems.
2018-12-09 08:15:05 +01:00
Christoph Oelckers 583a740441 - separated the image converters from the texture offsets.
Mostly done, except for FMultiPatchTexture and FFontChar1 + 2.
Note that this commit leaks those image objects!
2018-12-09 07:39:05 +01:00
Magnus Norddahl 670d975a33 - moved argsCache out of JitCompiler::CreateFuncSignature 2018-12-08 23:31:55 +01:00
Christoph Oelckers 5eab944157 - started separating the texture class from the image format handlers. 2018-12-08 23:28:35 +01:00
Christoph Oelckers e35d88e039 - moved some utility code out of FTexture. 2018-12-08 20:44:28 +01:00
Christoph Oelckers 03626107eb - changed multipatch texture composition to always composite off full source images and not do it recursively.
Previously it tried to copy all patches of composite sub-images directly onto the main image.
This caused massive complications throughout the entire true color texture code and made any attempt of caching the source data for composition next to impossible because the entire composition process operated on the raw data read from the texture and not some cacheable image. While this may cause more pixel data to be processed, this will be easily offset by being able to reuse patches for multiple textures, once a caching system is in place, which even for the IWADs happens quite frequently.

Removing the now unneeded arguments from the implementation also makes things a lot easier to handle.
2018-12-08 17:23:15 +01:00
Christoph Oelckers 1e070d27bd - replaced FTexture::FillBuffer 2018-12-08 14:06:16 +01:00
Christoph Oelckers 82bd742ea3 - reworked how the software renderer manages its textures.
* it's no longer the main texture objects managing the pixel buffer but FSoftwareTexture.
* create proper spans for true color textures. The paletted spans only match if the image does not have any translucent pixels.
* create proper warp textures instead of working off the paletted variants.

As a side effect, caching of pixel buffers for texture composition is temporarily disabled, as it management of texture redirections. These things will be reimplemented once things progress further. The existing methods here had their share of serious issues that should be fixed.
2018-12-08 12:42:35 +01:00
Christoph Oelckers 92b722e0ee - don't put mutexes into static local variables.
Their initialization semantics are not safe for synchronization objects.
2018-12-08 11:56:31 +01:00
Christoph Oelckers e70138a266 - fixed crash with FraggleScript in Nimrod MAP02. 2018-12-07 20:15:02 +01:00
alexey.lysiuk 0dfb0d8427 - fixed broken Z coordinate in Actor.Vec3Angle() native call 2018-12-07 10:20:18 +02:00
Christoph Oelckers 69cc1f831c Renamed FTexture::GetPixels
This was needed to allow refactoring without letting all the other GetPixels get in the way.
2018-12-07 03:35:10 +01:00
Christoph Oelckers 9409843931 - replaced the last access operator, too
Now everything uses a function.
This really wasn't what operators are supposef to be used for.
2018-12-07 03:01:40 +01:00
Christoph Oelckers 42b18e6dfb - Disable PALVERS substitution when true color rendering is active. 2018-12-07 02:53:50 +01:00
Christoph Oelckers 79a0f76801 - replaced TexMan.operator() with two functions.
This was done to make reviewing easier, again because it is virtually impossible to search for the operators in the code.

Going through this revealed quite a few places where texture animations were on but shouldn't and even more places that did not check PASLVERS, although they were preparing some paletted rendering.
2018-12-07 02:53:18 +01:00
Christoph Oelckers 3dc9eab743 Renamed the operator() and [] methods in FTextureManager which take a name
The operators cannot be easily searched for so this makes it hard to do any evaluations on the use of this method.
2018-12-07 02:43:27 +01:00
Christoph Oelckers 9fedecbe60 Renamed FTextureManager::GetTexture to GetTextureID
It doesn't return a texture after all and I want to repurpose the name for something else.
2018-12-07 02:31:30 +01:00
Christoph Oelckers 3491182ac3 - fixed compilation 2018-12-07 02:21:39 +01:00
Christoph Oelckers bde3558dc2 - moved the bit size variables to FSoftwareTexture
They are only needed by the software rasterizer.
2018-12-07 02:13:11 +01:00
Christoph Oelckers 18c1a3abe5 - make the FWarpTexture class local to the software renderer.
This class has only meaning for software-based warping so it doesn't have to be a part of the FTexture hierarchy.
Making it a subclass of FSoftwareTexture is fully sufficient.
2018-12-07 00:58:37 +01:00
Christoph Oelckers 4c67785c40 - moved the span and swtruecolor creation code into FSoftwareTexture. 2018-12-07 00:04:39 +01:00
Christoph Oelckers 32e245f2b9 - moved the software rendering specific parts of the sky setup to r_skyplane.cpp. 2018-12-06 20:52:03 +01:00
Christoph Oelckers a4d61e6fb1 - everything compiles again.
As a bonus this already fixes several bugs caused by the botched texture scaling implementation the original texture manager came with.
System cursors are currently disabled because they rely on functionality that needs to be moved to different classes.
2018-12-06 20:12:15 +01:00
alexey.lysiuk f6561ca23b - fixed native calls to LevelLocals.GetUDMF*() functions
https://forum.zdoom.org/viewtopic.php?t=62774
2018-12-06 17:04:41 +02:00
Rachael Alexanderson 9c023c78a4 - changing vid_scalefactor now always shows current scaling data unless it gets set to "1"
- vid_scaletoheight/width now works in all scaling modes, and can now also scale on custom resolutions directly
2018-12-06 09:20:01 -05:00
Magnus Norddahl e83af15907 - remove some redundant variables 2018-12-06 04:34:19 +01:00
Magnus Norddahl 2aefeb6401 - Use static ifs (C++11 version of them, anyhow) for the triangle draw function 2018-12-06 03:10:14 +01:00
Christoph Oelckers 6eab4a882c - narrowing down the public interface of the texture class
Cannot refactor if the entire class is this wide open to everything.
Not complete yet, doesn't fully compile!
2018-12-06 01:11:04 +01:00
Christoph Oelckers e22e249287 - this "genuine hack" was totally redundant... 2018-12-06 00:34:17 +01:00
Christoph Oelckers aef882c137 - more direct native stuff, this is a week old but was almost forgotten. 2018-12-06 00:28:05 +01:00
Christoph Oelckers e01306d403 - missed one definition for adding a direct native call. 2018-12-06 00:17:07 +01:00
Christoph Oelckers 494a113920 - more direct native entry points.
- disallow bool as a return value for direct native calls because it only sets the lowest 8 bits of the return register.
- changed return type for several functions from bool to int where the return type was the only thing blocking use as direct native call.
2018-12-05 20:10:44 +01:00
Christoph Oelckers 2e7e6cba9d - scriptified P_CheckMeleeRange2. 2018-12-05 18:58:15 +01:00
Christoph Oelckers e4e86dd4f8 - fixed: Direct native functions for the JIT compiler may not return bool.
A bool will only set the al register on x64, but the entire eax needs to be set for the JIT code to deal with it.
2018-12-05 18:41:19 +01:00
Christoph Oelckers de5ab0b4b6 - deprecated a few functions that depend on AAPTR_* to be useful. 2018-12-05 18:33:59 +01:00
alexey.lysiuk b8c4a506a7 - fixed linking of optimized targets
CMakeFiles/zdoom.dir/r_utility.cpp.o: In function `R_SetupFrame(FRenderViewpoint&, FViewWindow&, AActor*)':
/home/travis/build/coelckers/gzdoom/src/r_utility.cpp:832: undefined reference to `AActor::GetCameraHeight() const'
CMakeFiles/zdoom.dir/g_shared/a_action.cpp.o: In function `A_Unblock(AActor*, bool)':
/home/travis/build/coelckers/gzdoom/src/g_shared/a_action.cpp:64: undefined reference to `AActor::GetDropItems() const'
2018-12-05 18:10:22 +02:00
Christoph Oelckers 148d75251f - fix it 2018-12-05 17:41:25 +01:00
Christoph Oelckers eb282c0d11 Merge branch 'master' of https://github.com/coelckers/gzdoom
# Conflicts:
#	src/scripting/vmthunks_actors.cpp
2018-12-05 17:34:53 +01:00
Christoph Oelckers 6c9d0b166a Added direct native entry points to a larger number of functions. 2018-12-05 17:34:11 +01:00
alexey.lysiuk 101ebe1731
- fixed linking of optimized POSIX targets
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Distance2DSquared(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x6ab): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Distance3DSquared(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x75f): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Vec3To(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x850): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Vec2To(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x930): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_DistanceBySpeed(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0xa00): undefined reference to `AActor::PosRelative(AActor const*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o:vmthunks_actors.cpp:(.text+0xad3): more undefined references to `AActor::PosRelative(AActor const*) const' follow
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_PosRelative(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x1200): undefined reference to `AActor::PosRelative(sector_t*) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_ClearInterpolation(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x127d): undefined reference to `AActor::ClearInterpolation()'
vmthunks_actors.cpp:(.text+0x1298): undefined reference to `AActor::ClearInterpolation()'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_GetBobOffset(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x135a): undefined reference to `AActor::GetBobOffset(double) const'
CMakeFiles/zdoom.dir/scripting/vmthunks_actors.cpp.o: In function `AF_AActor_Distance2D(VMValue*, int, VMReturn*, int)':
vmthunks_actors.cpp:(.text+0x222b): undefined reference to `AActor::PosRelative(AActor const*) const'
2018-12-05 10:25:07 +02:00
Christoph Oelckers a846ed391e - fixed: ST_FormatMapName did not clear the string it wrote to before appending text. 2018-12-05 08:29:39 +01:00
Christoph Oelckers 5e1fc45816 fixed missing include. 2018-12-05 08:22:24 +01:00
Christoph Oelckers 2f2ce8126b - fixed definition of GetUDMFString export. 2018-12-05 08:18:07 +01:00
Rachael Alexanderson 0d891b6289 - Enforce CheckCheatmode() for cheat-enforced CVARs, allowing them to be changed in normal single player games 2018-12-05 00:21:39 +01:00
Christoph Oelckers 33db5792b4 - moved a large part of the VM thunks out of p_mobj.cpp. 2018-12-05 00:21:16 +01:00
Christoph Oelckers a3265c2963 - more direct native entry points. 2018-12-04 23:12:16 +01:00
Christoph Oelckers 3b5ce4ecca - fixed: SBar_SetClipRect had a superfluous argument resulting in incorrect behavior 2018-12-04 19:14:14 +01:00
Christoph Oelckers e928b94ab2 - missed the header... 2018-12-04 18:53:12 +01:00
Christoph Oelckers d0f037d14f - the native APlayerPawn::PlayAttacking2 function is not needed anymore. 2018-12-04 18:51:03 +01:00
Christoph Oelckers 8025f02935 - fix bad return type. 2018-12-04 18:47:03 +01:00
Christoph Oelckers d7da2d838f - handle JIT errors in a more user-friendly fashion than aborting.
* use I_Error instead of I_FatalError to abort. I_FatalError is only for things that are not recoverable and should not be handled outside of error cleanup and rethrowing.
* only catch CRecoverableError in JitCompile. Everything else should fall through to the outermost catch block.
* Do not I_FatalError out after handling the exception locally. Just print an error and return null, indicating failure.
2018-12-04 18:45:07 +01:00
Christoph Oelckers 45d7e5a038 - scriptified ASpecialSpot.
This only had two simple native methods so the class is not fully scripted.
2018-12-04 18:21:48 +01:00
Christoph Oelckers de9805d5c7 - treat REGT_STRING | REGT_ADDROF just like REGT_STRING for direct native functions.
Both pass a reference so there's no need to treat them differently.
2018-12-04 18:21:00 +01:00
Christoph Oelckers 062528e0e2 - more direct native function calls. 2018-12-04 18:16:01 +01:00
Christoph Oelckers 5e4b366724 Removed all native components from AInventory. 2018-12-04 18:06:09 +01:00
Christoph Oelckers d66516ec82 - scriptified A_SpawnSingleItem, which was the last piece of native code still referencing AInventory 2018-12-04 17:55:45 +01:00
Christoph Oelckers 2459b27895 - scriptified A_SelectWeapon and inlined the last remaining use of APlayerPawn::SelectWeapon. 2018-12-04 17:41:55 +01:00
Christoph Oelckers 44e43c48b5 - scriptified A_SelectWeapon 2018-12-04 17:31:25 +01:00
Christoph Oelckers 9348baeeb1 Removed all remaining references to AInventory
What remains is the class definition and one single reference that will be scriptified.
2018-12-04 17:11:36 +01:00
Christoph Oelckers cd563cc4db Removed more literal references to AInventory. 2018-12-04 17:00:48 +01:00
Christoph Oelckers 3d28006eda - started removing literal references of AInventory, so far only simple stuff. 2018-12-04 00:41:39 +01:00
Christoph Oelckers a573c63f60 - removed all direct access to AInventory's members.
We are getting closer to make class Inventory fully scripted.
2018-12-04 00:22:26 +01:00
Magnus Norddahl 14919f49ec - gcc/clang didn't like having this in a class 2018-12-03 23:39:03 +01:00
Magnus Norddahl ae44b936eb - add bool and unsigned int to the allowed types
- fix one case where floats were used (the JIT always calls with doubles)
2018-12-03 23:09:23 +01:00
Magnus Norddahl ba0c7652eb - perform compile time validation of direct native function signatures 2018-12-03 22:59:56 +01:00
Magnus Norddahl 5d9784f215 - fix VM native calls containing strings and enable them again 2018-12-03 21:58:01 +01:00
Magnus Norddahl 4f078dfcb3 - fix compile error 2018-12-03 21:57:07 +01:00
Magnus Norddahl 3ac2e74f1c - GetInventoryIcon must return an integer for it to work for VM native calls 2018-12-03 21:56:06 +01:00
Christoph Oelckers 7df8245102 - added missing min/max unsigned instructions for the VM. 2018-12-03 21:12:39 +01:00
Rachael Alexanderson 493ff5f089 - always apply vid_scalefactor now, even when vid_scalemode is not 0 or 1. 2018-12-03 13:38:18 -05:00
Christoph Oelckers b6d0492478 - fixed crash with weapons which remove themselves from the inventory but continue calling action functions.
This is still an error, so now this throws a meaningful exception.
2018-12-03 18:51:24 +01:00
Christoph Oelckers 6faeadaceb - hardened the seg integrity checks against extremely broken mods.
Temple of the Lizardmen 3 has segs lumps in every level that seem to use a different data format and are completely unusable, up to triggering undefined behavior.
2018-12-03 18:10:36 +01:00
Christoph Oelckers 1b07bded47 - fixed: The static variant of PClass::FindFunction may only be used for actual static variables. 2018-12-03 17:41:05 +01:00
Christoph Oelckers 0e095b0c05 - removed all direct references of AInventory::Owner and AInventory::Amount from the C++ code. 2018-12-03 17:41:05 +01:00
Christoph Oelckers 53291b0abf Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-12-03 15:54:09 +01:00
Christoph Oelckers 40a67b8c9a - fixed issues with Dehacked's ad-hoc script code generation
* The functions had no prototype and caused crashes.
* even after creating a prototype it didn't work because CreateAnonymousFunction was set up incorrectly for the case where a known return type was given.
2018-12-03 12:24:55 +01:00
Magnus Norddahl 1e30bc72fe - compare against the thing renderstyle since the local copy has been modified 2018-12-03 11:10:40 +01:00
Magnus Norddahl 4604c9379c - disable alpha test on models if the renderstyle isn't STYLE_Normal 2018-12-03 10:46:28 +01:00
Christoph Oelckers 39d90d022b - made the BUddha checks readable again. 2018-12-03 09:48:05 +01:00
Christoph Oelckers d7bb1726ab - fixed compile warning 2018-12-03 09:14:11 +01:00
Christoph Oelckers 099b278f18 - removed assert that got triggered in an edge case that must pass here. 2018-12-02 23:35:18 +01:00
Christoph Oelckers d222e82bbc - implemented missing 'exact' parameter for ThinkerIterator.Next. 2018-12-02 23:15:34 +01:00
Christoph Oelckers bfcd714186 - started replacing direct references to class AInventory.
The easiest part was the type checks which could be changed to the name variant with a global search and replace.
2018-12-02 21:35:55 +01:00
Major Cooke 6fd3bea38c - fixed: P_PoisonPlayer and P_PoisonDamage did not check for NODAMAGE.
- fixed: P_PoisonDamage's check for Buddha2 and the Buddha powerup were inverted.
- fixed: P_PoisonDamage checked the modified damage instead of the raw, allowing amplifiers to boost the damage beyond telefrag and circumventing regular buddha.
2018-12-02 21:14:22 +01:00
Christoph Oelckers 807df33e1a - scriptified AInventory::Tick.
This was the last bit of code standing in the way of making AInventory a fully scripted class.
All that's left to sort out is some variable accesses - the vast majority of them in SBARINFO.
2018-12-02 20:58:15 +01:00
Magnus Norddahl d88d173b38 - ptest is a SSE 4.1 instruction 2018-12-02 20:44:36 +01:00
Christoph Oelckers 2e383073e8 - scriptified the AutoUseHealth feature.
This again is a piece of code that reads and even writes to inventory items' properties, so better have it on the script side.
2018-12-02 19:45:45 +01:00
Christoph Oelckers 3182569fb8 - scriptified the decision making of the invuseall CCMD.
Custom items had no way to adjust to this - and it also was the last native access to ItemFlags.
2018-12-02 18:43:38 +01:00
Christoph Oelckers 93f91d1039 - scriptified P_DropItem. 2018-12-02 18:31:18 +01:00
Christoph Oelckers a5fc26b37c - scriptified the no-spawn flag check for armor and health items. 2018-12-02 18:04:44 +01:00
Christoph Oelckers 319f8743db - consolidated the check for "is actor an owned inventory item" into a subfunction.
This check occured 9 times in the source, better have it only once.
2018-12-02 16:53:12 +01:00
Christoph Oelckers ee08412e49 - scriptified G_PlayerFinishLevel.
Outside of SBARINFO this was the biggest remaining piece of code that referenced AInventory internals.
2018-12-02 16:26:02 +01:00
Christoph Oelckers 719598aae4 - scriptified AActor::ClearInventory 2018-12-02 15:24:44 +01:00
Christoph Oelckers 2cb0b2db87 - took the last methods aside from Tick and Serialize out of AInventory. 2018-12-02 14:56:10 +01:00
Christoph Oelckers db814dc333 - properly hook up the alt HUD with the status bar. 2018-12-02 14:34:10 +01:00
Christoph Oelckers d11b33e8fd - scriptified the last components of the alternative HUD.
- moved the ALTHUDCF parser PClass::StaticInit, so that it gets done right after creating the actor definitions.

All left to do is not to reallocate the AltHud object for each frame but store it in a better suited place.
2018-12-02 14:34:10 +01:00
Christoph Oelckers ba905321b0 - scriptified the main drawer for the in-game HUD and removed all intermediate VM calls from the native source. 2018-12-02 14:34:09 +01:00
Christoph Oelckers fe39236ee1 - scriptified the AltHUD'S powerup drawer. 2018-12-02 14:34:09 +01:00
Christoph Oelckers ddaab4d2ab - scriptified and cleaned up the AltHUD's DrawCoordinates, DrawTime and DrawLatency functions.
Some backing functionality was moved elsewhere because scripting should not have access to low level system information.
2018-12-02 14:34:09 +01:00
Christoph Oelckers 4431ec06fd - scriptified the AltHUD's inventory drawer and fixed the InvPrev CCMD. 2018-12-02 14:34:09 +01:00
Christoph Oelckers 714ca9b2ce - scriptified the AltHUD's weapon drawer. 2018-12-02 14:34:08 +01:00
Christoph Oelckers 1406c11f8e - added the missing TNT1A0 check for icon-less keys.
Since it tries to get the icon from the spawn state it also has to check if that actually has a valid sprite.
2018-12-02 14:34:08 +01:00
Christoph Oelckers fbc441673a - AltHUD ammo drawer scriptified. 2018-12-02 14:34:08 +01:00
Christoph Oelckers 0cd93c14af - allow %*d etc. format specifiers in ZScript, but only for numeric types. 2018-12-02 14:34:08 +01:00
Christoph Oelckers 4a1f011dc1 - Alt HUD scriptification, part 1. 2018-12-02 14:34:08 +01:00
Magnus Norddahl edc05111cd - don't use SSE for integer min/max 2018-12-02 09:58:08 +01:00
Magnus Norddahl 706a923884 - Use SSE2 for min/max instead 2018-12-02 07:35:02 +01:00
Christoph Oelckers c66dae9f2c - this was wrong... 2018-12-02 00:08:19 +01:00
Christoph Oelckers 117537339d - fixed script call in PickNewWeapon. 2018-12-01 23:36:48 +01:00
Christoph Oelckers 2d0b90deb1 - fixed: P_Massacre without a class restriction no longer worked. 2018-12-01 22:44:06 +01:00
Christoph Oelckers 577af8860c - scriptified invnext and invprev CCMDs. 2018-12-01 22:37:12 +01:00
Christoph Oelckers 5c647de70c - moved ValidateInvFirst to the script side because this was one of the major functions that directly reference AInventory. 2018-12-01 17:46:20 +01:00
Christoph Oelckers bc1990b6d7 - moved AInventory::DoRespawn fully to the script side. 2018-12-01 17:29:37 +01:00
Christoph Oelckers 3922f817fb - made CallTryPickup a global function.
This one still gets called in too many places but stands in the way of moving Inventory fully to the script side.
2018-12-01 17:21:40 +01:00
Christoph Oelckers 7b63e088e1 - moved the GetBlend script call to the one single place where it is needed to get rid of one native AInventory method. 2018-12-01 17:21:20 +01:00