Commit Graph

9628 Commits

Author SHA1 Message Date
Christoph Oelckers 56f37185b2 - let's be a bit clearer and not name non-Build stuff with Build terms.
(cherry picked from commit f3389ff5b7)
2016-12-09 08:42:35 -05:00
Rachael Alexanderson 2b5f9eebba - Correctly redid commit 34d551fe1f. 2016-12-09 08:41:59 -05:00
Christoph Oelckers 15cf9d36a9 - moved wallscan code into its own file so that it can get an appropriate copyright notice and does not inflate an already large source file even more.
(cherry picked from commit 34d551fe1f)

# Conflicts:
#	src/r_segs.cpp
2016-12-09 08:39:58 -05:00
Christoph Oelckers 356e55f0a2 - made the general entry point to the wall drawer a single function instead of requiring the caller to check for NPOT textures.
- renamed all functions in r_walldraw.cpp to give them names more in line with Doom's naming conventions. Since this is not Build code anymore it also shouldn't use Build names to avoid giving a false impression.
2016-12-09 14:25:51 +01:00
Christoph Oelckers 1ea559dea4 - removed several unused fixed point math functions from the inlines headers.
(cherry picked from commit 86909ecdb2)
2016-12-09 08:13:33 -05:00
Christoph Oelckers cfd6bcec5e - more Build cleanup: Moved clearbufshort out of Build derived headers, removed the inline version for GCC 32 bit which was actually Build derived and renamed the C-version of this function, which does not originate from Build to 'fillshort'.
- cleaned out a lot the SafeDivScale stuff in m_fixed.h. The only SafeDivScale variant still in use was #16 for FixedDiv, so all the SafeDivScale stuff has been removed and the 16 variant renamed to FixedDiv because that's the only form in which it is still being used. (2x in R_DrawVoxel and 1x in ACS's FixedDiv PCode.)
- removed Build notice from m_fixed.h because aside from the inlines includes there is nothing here from Build anymore.

(cherry picked from commit eab06ef086)
2016-12-09 08:13:22 -05:00
Christoph Oelckers c61f30a627 - got rid of clearbuf.
This was used in only 4 places, 3 of which could easily be replaced with a memset, and the fourth, in the Strife status bar, suffering from a pointless performance optimization, rendering the code unreadable - the code spent here per frame is utterly insignificant so clarity should win here.

(cherry picked from commit 12a99c3f3c)
2016-12-09 08:13:08 -05:00
Christoph Oelckers 695b08ed4b - removed some unused functions from m_fixed.h.
- removed the Build license note from r_bsp.cpp.

This note was for code in R_AddLine which had been both refactored into several subfunctions and completely replaced with a floating point version. What is left is just some basic common math without any traits that resemble anything in Build.

(cherry picked from commit 8748b9ef6d)
2016-12-09 08:11:57 -05:00
Christoph Oelckers 5d210c64e0 - got rid of ksgn.
Because every bit of Build code that can be removed is a good thing.
This was only used in two places, one of which could be done better, the other one in the voxel drawer setup now uses a local C-inline version.

(cherry picked from commit 5536184bee)
2016-12-09 08:11:45 -05:00
Christoph Oelckers b709db3fd3 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-09 13:32:05 +01:00
Christoph Oelckers 86909ecdb2 - removed several unused fixed point math functions from the inlines headers. 2016-12-09 13:27:30 +01:00
Christoph Oelckers eab06ef086 - more Build cleanup: Moved clearbufshort out of Build derived headers, removed the inline version for GCC 32 bit which was actually Build derived and renamed the C-version of this function, which does not originate from Build to 'fillshort'.
- cleaned out a lot the SafeDivScale stuff in m_fixed.h. The only SafeDivScale variant still in use was #16 for FixedDiv, so all the SafeDivScale stuff has been removed and the 16 variant renamed to FixedDiv because that's the only form in which it is still being used. (2x in R_DrawVoxel and 1x in ACS's FixedDiv PCode.)
- removed Build notice from m_fixed.h because aside from the inlines includes there is nothing here from Build anymore.
2016-12-09 13:04:53 +01:00
Christoph Oelckers 12a99c3f3c - got rid of clearbuf.
This was used in only 4 places, 3 of which could easily be replaced with a memset, and the fourth, in the Strife status bar, suffering from a pointless performance optimization, rendering the code unreadable - the code spent here per frame is utterly insignificant so clarity should win here.
2016-12-09 12:48:10 +01:00
Christoph Oelckers f3389ff5b7 - let's be a bit clearer and not name non-Build stuff with Build terms. 2016-12-09 12:21:27 +01:00
Christoph Oelckers 34d551fe1f - moved wallscan code into its own file so that it can get an appropriate copyright notice and does not inflate an already large source file even more. 2016-12-09 11:49:18 +01:00
Magnus Norddahl b7d5110a49 Merge remote-tracking branch 'origin/rt_drawer_crashfix' into qzdoom 2016-12-09 10:36:19 +01:00
Christoph Oelckers 8748b9ef6d - removed some unused functions from m_fixed.h.
- removed the Build license note from r_bsp.cpp.

This note was for code in R_AddLine which had been both refactored into several subfunctions and completely replaced with a floating point version. What is left is just some basic common math without any traits that resemble anything in Build.
2016-12-09 10:31:17 +01:00
Magnus Norddahl 6609403fbe Fix null pointer crash in rt column drawers if rt_init is not called before the first draw 2016-12-09 10:27:18 +01:00
Rachael Alexanderson c53030d550 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-09 03:00:05 -05:00
Rachael Alexanderson c109ebf7cb Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-12-09 03:00:02 -05:00
Magnus Norddahl f1df400cc7 Add some portal segment culling and disable sector portals for now 2016-12-09 03:17:35 +01:00
Christoph Oelckers 5536184bee - got rid of ksgn.
Because every bit of Build code that can be removed is a good thing.
This was only used in two places, one of which could be done better, the other one in the voxel drawer setup now uses a local C-inline version.
2016-12-09 00:43:54 +01:00
Edoardo Prezioso 67b2e2f52e - Remove valgrind code, now that the assembly stuff is gone. 2016-12-08 22:44:23 +01:00
Christoph Oelckers 8a6d3b8e7b - sprites.cpp 2016-12-08 21:05:53 +01:00
Christoph Oelckers 3fbe41957d - removed GZDoom call. 2016-12-08 21:05:31 +01:00
Christoph Oelckers 6c628c9584 - changed sprite setup to work without global work variables. 2016-12-08 19:27:49 +01:00
Christoph Oelckers ee09219c08 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-08 19:08:25 +01:00
Christoph Oelckers d46ceafd35 - fixed: A_Face* had the sign for the pitch inverted (In Doom, negative pitch is upward, this had positive pitch upward.) 2016-12-08 19:07:50 +01:00
Christoph Oelckers 14400c41b6 Merge branch 'zmaster' 2016-12-08 17:53:41 +01:00
Christoph Oelckers a4d2468d34 - disable weapon interpolation for offset changes.
This has been causing far too many problems so now it will only be done if a A_Weaponoffset is either used with WOF_ADD or WOF_INTERPOLATE.
2016-12-08 17:52:59 +01:00
Christoph Oelckers 8f45664089 - fixed: Fog boundaries were not drawn on line portals.
There's two restrictions, though:

* on one-sided-line portals fog boundaries will not be drawn.
* the filler sector behind the portal may not have a sky ceiling texture. This is because the drawing code contains several sky checks which get in the way here.
2016-12-08 17:00:15 +01:00
Magnus Norddahl fb4e34d178 Fix crash reporter for 64 bit 2016-12-08 14:36:17 +01:00
Rachael Alexanderson dc07c2075f Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-12-08 07:47:33 -05:00
Magnus Norddahl 2854e1fe03 Fix crash reporter for 64 bit
(cherry picked from commit 3a0de8b0c714507823edaa24875bc97b39c76ab6)
2016-12-08 07:47:31 -05:00
Christoph Oelckers 715bdd69af Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-08 12:50:57 +01:00
Christoph Oelckers 3558b2234c - fixed: The dynamic light setup for walls did not portal-translate the light's coordinate.
- changed ADynamicLight::CollectWithinRadius to work iteratively to avoid the high stack overhead of 64 bit code.
2016-12-08 12:50:45 +01:00
Christoph Oelckers d741e0eb26 - fixed: P_CheckSight returned incorrect results when having to traverse the collected lines just for adding more portals to the list. 2016-12-08 11:23:08 +01:00
Magnus Norddahl dc82c19901 Fix sprites/translucent stuff being occluded by portal walls 2016-12-08 10:35:51 +01:00
Magnus Norddahl a1bb6e6b23 Only render line portals once 2016-12-08 10:29:52 +01:00
Christoph Oelckers 0720dd9816 Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/p_map.cpp
2016-12-08 10:17:12 +01:00
Christoph Oelckers 66d287ea81 - fixed: Stepping through a ceiling portal on a two-sided line did not work.
- fixed: Stepping up an actor checked against the sector's own ceiling, even if it was a crossable portal.
2016-12-08 10:16:22 +01:00
Rachael Alexanderson 40b68bfea0 Merge branch 'master' of https://github.com/coelckers/gzdoom
# Conflicts:
#	src/CMakeLists.txt
2016-12-07 23:12:42 -05:00
Christoph Oelckers 12f0b56036 - fixed: Stepping up through a portal did not work when the step line was two-sided. This special case was only implemented for one-sided lines
- fixed: The portal collector set bad flags for collected lower portals.
2016-12-08 00:59:04 +01:00
Christoph Oelckers 1e950d75bd - made dynamic light attenuation completely opt-in. This can be done either by setting a MAPINFO option for lights that do not automatically specify it and with a light property. The light property will always take precedence, if set. 2016-12-07 23:17:18 +01:00
Christoph Oelckers aa939ef17a Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-12-07 22:53:06 +01:00
Christoph Oelckers f547daccc8 Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/CMakeLists.txt
2016-12-07 22:51:05 +01:00
Rachael Alexanderson d12b92e926 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-07 16:49:44 -05:00
Magnus Norddahl 066158be69 Fix mirror 2016-12-07 22:26:18 +01:00
Magnus Norddahl 480b22c50e Add more checks for FTexture::TEX_Null 2016-12-07 18:59:48 +01:00
Christoph Oelckers 6adcba3c4b - fixed linkage for fuzzviewheight
- fixed naming conflict with GCC's virtual table.
2016-12-07 18:39:09 +01:00
Magnus Norddahl 9ed02a6aec Merge remote-tracking branch 'zdoom/master' into qzdoom
# Conflicts:
#	src/CMakeLists.txt
#	src/doomtype.h
#	src/r_drawt.cpp
2016-12-07 18:35:27 +01:00
Magnus Norddahl e3e90e1a08 Merge TC handling back into r_draw 2016-12-07 18:28:06 +01:00
Magnus Norddahl beb70d7dfa Merge remote-tracking branch 'origin/zdoom_multithreaded' into qzdoom
# Conflicts:
#	src/CMakeLists.txt
#	src/r_3dfloors.cpp
#	src/r_bsp.cpp
#	src/r_bsp.h
#	src/r_draw.h
#	src/r_main.cpp
#	src/r_main.h
#	src/r_plane.cpp
#	src/r_plane.h
#	src/r_segs.cpp
#	src/r_segs.h
#	src/r_swrenderer.cpp
#	src/r_things.cpp
#	src/r_things.h
#	src/r_thread.cpp
#	src/r_thread.h
#	src/v_draw.cpp
#	src/win32/fb_d3d9.cpp
2016-12-07 18:22:02 +01:00
Edoardo Prezioso e4c208602d - Fixed GCC/Clang warning/error. 2016-12-07 16:07:25 +01:00
Christoph Oelckers 2677976cae - r_drawt.cpp is no longer needed. 2016-12-07 15:44:25 +01:00
Christoph Oelckers a118903e3e - complete removal of assembly stuff. Nothing of this gets used anymore. 2016-12-07 14:41:21 +01:00
Christoph Oelckers ed141943e1 - removed use of BestColor_MMX because there is no measurable improvement at all on a modern system. On top of that this function does not get called nearly often enough to justify the hassle. Like DoBlending this would require hundreds of calls per frame to make any impact that would be measurable. 2016-12-07 14:40:19 +01:00
Christoph Oelckers 5910067c44 - discontinue using the MMX assembly version of DoBlending.
Some benchmarking shows that on SSE systems it only harms performance and compared to the intrinsics version the gains are too marginal for something this infrequently called.
Doing 100000 calls of DoBlending results in a 5 ms decrease of using assembly vs intrinsics on a 3.4 GHz Core i7, meaning that even on a computer that is 10x slower you can still do 1000 or so blends per frame without a speed hit.
2016-12-07 14:40:18 +01:00
Rachael Alexanderson 2200f6eda3 - fixed: compile error with SDLGLVideo class macro 2016-12-07 13:21:28 +01:00
Christoph Oelckers 42346c58d3 - disabled assembly entirely to make the MT drawer submission compile.
This still requires a review of the two non-drawer functions that get 'lost'.
2016-12-07 12:31:43 +01:00
Christoph Oelckers 1e42c6f227 - added copyright headers to two files missing them. 2016-12-07 11:40:59 +01:00
Magnus Norddahl 3ff91807b8 Move swrenderer into a namespace, add multithreading framework, and move drawers to commands 2016-12-07 09:34:49 +01:00
Christoph Oelckers 56f67726f0 - seems a Linux file was missed when refactoring the IMPLEMENT_CLASS macros. 2016-12-07 00:54:40 +01:00
Rachael Alexanderson c04e0d0df3 - fixed: Whoops. One of those danged macros got away. ;) 2016-12-06 18:44:59 -05:00
Rachael Alexanderson 8a23befd4d - Fixed abstract class macro in SDLGLFB class. 2016-12-06 18:22:36 -05:00
Rachael Alexanderson a78b713f4b Merge https://github.com/coelckers/gzdoom
# Conflicts:
#	src/v_video.cpp
2016-12-06 18:19:08 -05:00
Rachael Alexanderson 3fd4d00a77 - 1.2pre tag 2016-12-06 18:13:41 -05:00
Christoph Oelckers 6271ecf2af Merge remote-tracking branch 'remotes/zdoom/master' 2016-12-06 22:47:53 +01:00
Christoph Oelckers c3fb43db3a Merge branch 'gz-zscript' 2016-12-06 22:47:37 +01:00
Christoph Oelckers 52645afb4b - for the time being, make ZScript command line switch locked so that everybody understands that it's not ready for use in released mods yet. 2016-12-06 22:42:10 +01:00
Magnus Norddahl 0083c3c5f0 Fix some typos 2016-12-06 21:41:41 +01:00
Rachael Alexanderson af330e1c41 Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-12-06 13:55:46 -05:00
Magnus Norddahl 7441521a96 Remove comment about Build code as it is no longer correct (there's no build code left in that file) 2016-12-06 19:44:56 +01:00
Magnus Norddahl 30ddcfbc8f Add tilted plane drawer 2016-12-06 19:44:28 +01:00
Christoph Oelckers a3ae05299b - fixed: glPolygonOffset was not called for flat sprites. 2016-12-06 19:17:02 +01:00
Magnus Norddahl bec5d39ca8 ColoredSpan and FogBoundary drawers 2016-12-06 18:58:39 +01:00
Christoph Oelckers c115c0a5b2 - fixed: Random flicker lights must set up their size on the first tic they are run. If not they will keep the radius of the previous effect which may be too large. 2016-12-06 18:35:34 +01:00
Magnus Norddahl d8f805ddc9 Added DrawSlabPalCommand and rewrote the actual for loop so nobody can say it came from build.. 2016-12-06 18:31:26 +01:00
Magnus Norddahl 6054db0d86 Make puzzy pinky fuzzywuzzy about threads 2016-12-06 15:29:04 +01:00
Magnus Norddahl c16506bf59 Add thread awareness to the rt family of drawers 2016-12-06 15:13:43 +01:00
Christoph Oelckers d04c37101e Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-12-06 12:59:03 +01:00
Christoph Oelckers 17698467d7 - made application of dynamic lights to additively blended surfaces a MAPINFO option. In most cases this is not wanted but sometimes this can be used to good effect so it should be there as an option. 2016-12-06 12:58:45 +01:00
Christoph Oelckers fb7b49bba1 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-06 12:35:22 +01:00
Christoph Oelckers e41e404143 Merge branch 'zscript' of https://github.com/rheit/zdoom into gz-zscript 2016-12-06 12:33:52 +01:00
Christoph Oelckers b2d1b0d7a6 - fixed: FTranslatedLineTarget::angleFromSource returned the attack angle, not the angle between actors when returned from P_LineAttack.
For most attack functions this is wrong, it's only the Hexen fighter attack needing this particular value, so it has been split up into two return values now.
2016-12-06 11:04:54 +01:00
Magnus Norddahl 6a3ae2ce45 Add Rt drawers 2016-12-06 07:23:55 +01:00
Magnus Norddahl f4172782ed Fix compile error in debug builds 2016-12-06 06:22:58 +01:00
Magnus Norddahl bd8b05e10a Fix compile error 2016-12-06 05:07:37 +01:00
Christoph Oelckers daaa6e7831 - fixed bad parameter in AActor::ModifyDamage. 2016-12-06 00:00:56 +01:00
Rachael Alexanderson ba723f5296 Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-12-05 17:07:27 -05:00
Rachael Alexanderson 824705eaca - Fixed compile errors with maxviewpitch update 2016-12-05 22:32:18 +01:00
Rachael Alexanderson c53a20aea6 - Notify gamesim of maxviewpitch change. 2016-12-05 22:32:18 +01:00
Rachael Alexanderson caa0deec10 - r_polyrenderer now notifies the gamesim on change of new pitch limits. 2016-12-05 16:05:33 -05:00
Christoph Oelckers 092461ed34 - make dynamic object casts a dedicated VM instruction instead of a builtin function.
This can see some heavy use in iterators where saving several hundreds of function calls can be achieved. In these cases, using a function to do the job will become a significant time waster.
2016-12-05 14:52:34 +01:00
Magnus Norddahl 6122d982b7 Thread awareness to column drawers 2016-12-05 13:47:30 +01:00
Christoph Oelckers f722967abe - added automatic type deduction capabilities for local variables. If you type 'let variable = value;' the type of 'variable' will be deduced from the given value. This is mostly of interest for type casting pointers, because 'let p = Classtype(objectvar);' does not require writing the class type name twice. 2016-12-05 13:24:42 +01:00
Magnus Norddahl 836c7a5351 Make sky drawers thread aware 2016-12-05 13:23:30 +01:00
Magnus Norddahl 246d1625e5 Make wall drawers thread aware 2016-12-05 13:05:05 +01:00
Magnus Norddahl d8a3174330 Thread awareness to the span drawers 2016-12-05 12:47:43 +01:00
Magnus Norddahl 2ca0238e2f Add column drawers 2016-12-05 12:41:16 +01:00
Magnus Norddahl bc66682860 Add sky drawers 2016-12-05 12:16:10 +01:00
Christoph Oelckers 67bdac5227 Merge branch 'master' into zscript 2016-12-05 12:03:59 +01:00
Magnus Norddahl b755f489a3 Fix types 2016-12-05 12:01:03 +01:00
Magnus Norddahl 3b2d4fcff2 Added span drawers 2016-12-05 11:59:48 +01:00
Magnus Norddahl 645aed62d1 Add wall drawers 2016-12-05 11:38:21 +01:00
Magnus Norddahl dfbd7fd2ad Add drawer commands for pal mode 2016-12-05 10:44:24 +01:00
Magnus Norddahl 7ffab207cb Move rgba drawers to be dispatched by r_draw_tc 2016-12-05 09:22:45 +01:00
Magnus Norddahl 8a12d040de Merge remote-tracking branch 'zdoom/master' into qzdoom
# Conflicts:
#	src/r_draw.cpp
#	src/r_draw.h
2016-12-05 08:22:04 +01:00
Magnus Norddahl 2f3a6da295 Fix buffer overrun 2016-12-05 04:05:55 +01:00
Christoph Oelckers c0a622eb54 - removed pointless assignment. 2016-12-05 02:08:26 +01:00
Rachael Alexanderson 659abc9451 - Removed vestigial prototype. 2016-12-04 19:18:13 -05:00
Christoph Oelckers 28f9216e7b - fixed a few prototypes. 2016-12-04 19:16:40 -05:00
Christoph Oelckers f6fb27b683 - deleted rt_copy*col and rt_map*col assembly versions after running benchmarks that show inferior performance to the C++ versions on both older and newer CPUs. 2016-12-05 00:46:58 +01:00
Christoph Oelckers 86fcc3fd21 - added a heavily optimized version of vlinec4 for x64. The original loaded everything from the global variables. While this is acceptable in 32 bit code because it has an immediate register load instruction, for 64 bit this does not exist. Accessing these variables from the stack or a register doubles the execution speed of this function and on a Core i7-3770 from 2012 is even faster than the assembly version. Right now the assembly version is still there, pending a benchmark run on an older 64 bit system. 2016-12-04 23:53:36 +01:00
Christoph Oelckers f4454d2e00 - minor, but very effective optimization for R_DrawSpanMasked: Do not store the texel value in a byte. Store it in a local int variable. This allows the compiler to read it with a zero extending instruction instead of using a byte reading instruction and then later having it to convert to an int anyway. This removes one instruction from the loop which results in a 10% performance increase on 32 bit. 2016-12-04 19:32:54 +01:00
Christoph Oelckers c9caaf08c8 - removed asm version of R_DrawFuzzColumn, because even on my 9 year old laptop this was significantly slower than the C version. 2016-12-04 18:38:38 +01:00
Christoph Oelckers 13efb34964 - removed the asm version of R_DrawColumn because it doesn't provide any significant benefit.
On modern systems it is actually slower than the C version, only on old ones it is marginally faster - but the overall execution time for this function is so low that even in the worst case scenario the minor loss of performance on older systems is still not relevant.
2016-12-04 18:05:34 +01:00
Christoph Oelckers 8fd03bc4a3 - fixed a few prototypes. 2016-12-04 16:57:10 +01:00
Rachael Alexanderson c59925085c - Removal of the ASM functions resulted in failed compile when NO_ASM is set. 2016-12-04 10:05:01 -05:00
Rachael Alexanderson 4196a4d055 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-04 09:34:49 -05:00
Rachael Alexanderson 7f86a5148c Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/r_draw.cpp
2016-12-04 09:33:06 -05:00
Christoph Oelckers 93163d12f1 - removed R_DrawColumnHorizP_ASM completely after discovering that the compiler generated code isn't really anything worse than the old assembly code. This looks like something that may have been relevant 10 years ago but today it looks like there's no need for hand optimization here anymore. And since it appears to be broken anyway, off this goes. 2016-12-04 15:31:08 +01:00
Christoph Oelckers d0cf34890c - disabled R_DrawColumnHorizP_ASM because that function appears prone to crashing when rendering decals. 2016-12-04 15:01:48 +01:00
Christoph Oelckers bf0aedfd9c Merge branch 'master' of https://github.com/rheit/zdoom into zscript 2016-12-04 14:29:24 +01:00
Christoph Oelckers 5a08768eaf - removed unused label. 2016-12-04 14:29:03 +01:00
Magnus Norddahl 0ed0c47a45 Optimize capped sky rendering by writing 4 pixels at a time in 5 bands (solid, fade, texture, fade, solid) 2016-12-04 14:28:13 +01:00
Christoph Oelckers 18b953dd50 - fixed: Blasted objects should also be subject to being checked with CanCollideWith. 2016-12-04 10:34:36 +01:00
Christoph Oelckers 71e8f09126 Merge branch 'master' of https://github.com/rheit/zdoom into zscript 2016-12-04 10:27:35 +01:00
Edoardo Prezioso 0cff443945 - Fixed missing linebreak in 'currentpos' error message. 2016-12-04 10:25:23 +01:00
Edoardo Prezioso c99a051a2a - Added lambda feature to FString::(Strip|Replace)Chars.
Use it in the other (Strip|Replace)Chars methods to show how it would work.
2016-12-04 10:24:49 +01:00
Christoph Oelckers 94287518e0 - added a virtual CanCollideWith script method that can be overridden to do class specific collision checks.
This will get called for both actors taking part in a collision, if one of the two calls returns false it will immediately abort PIT_CheckThing with no collision taking place at all.
2016-12-04 10:13:36 +01:00
Magnus Norddahl 36f168040e Fix null pointer crash bug 2016-12-04 03:12:40 +01:00
Christoph Oelckers daf1a40521 - allow swapping the order of gl_finish and SwapBuffers calls, because some cards do not seem to like the correct order. 2016-12-03 20:09:25 +01:00
Christoph Oelckers 834802def3 - sanitized the old sprite offset adjustment feature and used it to redefine offsets for some sprites that have really bad ones. 2016-12-03 19:49:32 +01:00
Rachael Alexanderson 244eaa99b3 Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-03 13:23:28 -05:00
Christoph Oelckers dc1f03ec13 Merge branch 'zscript' of https://github.com/rheit/zdoom into gz-zscript 2016-12-03 19:14:39 +01:00
Christoph Oelckers 04f5be6249 - zcc_compile.cpp needs to include version.h for the DYNLIGHT #define. 2016-12-03 19:14:20 +01:00
Christoph Oelckers 5dd63a86cf - removed excess arguments for IMPLEMENT_CLASS. 2016-12-03 18:59:28 +01:00
Christoph Oelckers fbc8d0e83c Merge branch 'zscript' of https://github.com/rheit/zdoom into gz-zscript
# Conflicts:
#	wadsrc/static/zscript.txt
2016-12-03 18:51:10 +01:00
Christoph Oelckers 34970c9b9c - removed hexenglobal include from GL files. 2016-12-03 18:49:52 +01:00
Christoph Oelckers 71bda99c3b - fixed: DECORATE didn't pass all needed arguments to FunctionBuildList.AddFunction. Removed the default parameter values from this function's declaration to prevent it from happening again. 2016-12-03 18:14:07 +01:00
Christoph Oelckers 21e3aba1c7 - optionally allow passing a script position object to V_GetColor and subfunctions for better error output. Implemented this for all occurences where this info was available. 2016-12-03 16:27:53 +01:00
Christoph Oelckers 1fc90b1ba9 - fixed: A_Face* should not require the target to be non-null. 2016-12-03 15:59:02 +01:00
Christoph Oelckers 6a4f867c91 Merge branch 'master' into zscript 2016-12-03 15:54:18 +01:00
Christoph Oelckers 30cbce051e - fixed: Custom automap colors were not invalidated on restart.
- fixed: D_DoomMain has 3 calls to D_DoomLoop but only the main call of these was capable of a clean restart.
2016-12-03 15:44:46 +01:00
Magnus Norddahl e09c7d239f Adjust class naming to closer match the GZDoom renderer and split portal rendering part to its own file 2016-12-03 14:58:56 +01:00
Christoph Oelckers 5117b32431 - fixed: The math for emulating the old slop overflow was not correct and made the affected sectors in void.wad display incorrectly.
- set compat_polyobj for void.wad because its polyobjects glitch quite a bit with the normal setting.
2016-12-03 14:42:06 +01:00
Christoph Oelckers 28604bad62 - fixed: The polyobject init specials must be cleared after Polyobject initialization is done, because they can block usage of regular lines colinear with the polyobject 2016-12-03 14:06:51 +01:00
Christoph Oelckers 0da233a664 changed ZScript include mechanism.
* It will now use #include, just like most other definition formats and can be mixed with regular definitions. However, due to how the Lemon-generated parser works this will not recursively pull in all files, but store them in a list and process them sequentially. Functionally this shouldn't make a difference, because ZScript is mostly order-independent - the only thing where order is important is native classes, but these are completely internal to zdoom.pk3 where proper order is observed.
2016-12-03 13:16:09 +01:00
Christoph Oelckers 136e976b2a - added an error check for duplicate local variable definitions.
Note that this only applies if both are in the same block. Just like in C++, it is perfectly legal to have the same variable name in two different nested scopes.
2016-12-03 12:33:58 +01:00
Christoph Oelckers b3783a3850 redid the exception mechanism for script-side access violations to be of more use for diagnosing problems.
The original implementation just printed a mostly information-free message and then went on as if nothing has happened, making it ridiculously easy to write broken code and release it. Changed it to:

* Any VMAbortException will now terminate the game session and go back to the console.
* It will also print a VM stack trace with all open functions, including source file and line numbers pointing to the problem spots. For this the relevant information had to be added to the VMScriptFunction class.

An interesting effect here was that just throwing the exception object increased the VM's Exec function's stack size from 900 bytes to 70kb, because the compiler allocates a separate local buffer for every single instance of the exception object.
The obvious solution was to put this part into a subfunction so that it won't pollute the Exec function's own stack frame. Interesting side effect of this: Exec's stack requirement went down from 900 bytes to 600 bytes. This is still on the high side but already a lot better.
2016-12-03 12:23:13 +01:00
Magnus Norddahl dbacb75617 Capped sky rendering 2016-12-03 06:58:06 +01:00
Magnus Norddahl ff063a33b5 Merge branch 'master' of https://github.com/raa-eruanna/qzdoom into qzdoom 2016-12-03 05:02:42 +01:00
Magnus Norddahl 04e981dba0 Fix up/down culling issue 2016-12-03 05:02:34 +01:00
Rachael Alexanderson c95372052c Merge branch 'master' of https://github.com/rheit/zdoom 2016-12-02 16:39:50 -05:00
Christoph Oelckers d93b6e31d6 - fixed: The ammo and sister weapon type pointers were not properly declared as pointers to the type system. 2016-12-02 22:10:15 +01:00
Christoph Oelckers 211d9d92a1 Merge branch 'master' into zscript 2016-12-02 21:14:56 +01:00
Christoph Oelckers 60b1f5c25a - fixed: FPNGTexture::fr could be left uninitialized. 2016-12-02 19:38:30 +01:00
Christoph Oelckers 91c3ddf692 - fixed: When a tentative class is being replaced, the old one should be removed entirely so that it cannot cause any problems later. 2016-12-02 19:30:58 +01:00
Christoph Oelckers fbf8084999 - corrected the export signatures of several script exports to contain the correct classes, so that the fudging in FindFunction could be removed.
- fixed PARAM_ACTION_PROLOGUE to assign correct types to the implicit pointers. It gave the actual class to the wrong one, which until now did not matter because all functions were using 'Actor', regardless of actual class association.
- fixed the definition of IceChunk and removed some redundant code here. Since A_FreezeDeathChunks already calls SetState, which in turn calls the state's action function, there is no need to call it again explicitly.
2016-12-02 18:52:58 +01:00
Christoph Oelckers 1e01e6e4df - record all line numbers during function generation. This is useful for error reporting and eventually debugging.
- throw a useful exception when a VM abort occurs, the simple enum was incapable of reporting anything more than the barest minimum, which at least for array index out of bounds errors was insufficient.

The current exception mechanism is still insufficient. It really has to report a proper crash location and print a stack trace to the maximum extent possible. Instead it just prints a message and happily goes on. This is not a good solution.
2016-12-02 17:36:29 +01:00
Christoph Oelckers 967f6c0269 - use a separate exception type for reporting errors from FraggleScript.
CRecoverableError is used in other parts as well and it might create interference.
2016-12-02 16:56:50 +01:00
Edoardo Prezioso 9dbfa6d04e - Fixed uninitialized line number info in thing map parsing. 2016-12-02 14:54:32 +01:00
Magnus Norddahl ce6e1e1e47 Fully hook up sprite clipping by subsector 2016-12-02 13:24:53 +01:00
Magnus Norddahl 01008f0daa Fix sprite bsp clipping bug and wall sorting bug 2016-12-02 13:06:16 +01:00
Christoph Oelckers f9441cd9d9 - added null pointer validation to any relevant exported function. In most cases null pointers were already being treated as 'do nothing', but there's several places where this can make the code silently fail so in these cases a VM exception will be raised, once the VM's exception handling has been repaired to provide useful diagnostics. (Right now all it does is catch the exception, print a useless message and return to the caller as if nothing has happened.) 2016-12-02 12:06:49 +01:00
Magnus Norddahl 71350f2c17 Sprite line clipping by subsector 2016-12-02 08:12:01 +01:00
Christoph Oelckers 05cc3dde72 - fixed: Dehacked did not copy the defaults for DehackedPickup replacements anymore. 2016-12-02 01:33:18 +01:00
Christoph Oelckers 4dd22d74dd - partial optimization of chained comparisons. 2016-12-02 01:16:32 +01:00
Christoph Oelckers fb7a8fb553 - branch optimization for for loops. 2016-12-02 00:56:54 +01:00
Christoph Oelckers 719be058e5 - use the immediate versions for loading integer constants when possible. 2016-12-02 00:54:40 +01:00
Christoph Oelckers 77192fa9dd - branch optimization. 2016-12-02 00:51:29 +01:00
Christoph Oelckers 96df8f6729 - another typo... 2016-12-01 10:38:43 +01:00
Christoph Oelckers 44d7d0b5f6 - fixed a typo in the bool cast.
- fixed a few places for unsigned values.
2016-12-01 09:44:52 +01:00
Magnus Norddahl 3890c80b1a Fix compile error for msvc 2016-12-01 08:59:47 +01:00
Magnus Norddahl 9416d436fe Move software renderer into its own namespace to isolate its globals and make
any access explicit. This reveals the places in the code where they are being
accessed where they shouldn't and prevents accidental usage.
2016-12-01 02:38:32 +01:00
Christoph Oelckers 7688e14bec - added a boolean cast VM instruction.
Although this already helps a lot with the messed up code generated for comparisons it's not really a solution for this - it still needs a proper implementation to generate efficient code.
2016-12-01 01:13:53 +01:00
Magnus Norddahl 1bed6feadc Detach poly renderer from r_main 2016-12-01 00:42:14 +01:00
Christoph Oelckers 87484950cf - removed an assert from APowerMorph::EndEffect. With some recent changes to DestroyAllInventory it appears that the asserted condition no longer is true at this point when ending a game.
- fixed: When replacing a tentative class, the pointers in the morph objects were not replaced. Instead of adding more ReplaceClassRef methods I chose to integrate this part into the PointerSubstitution mechanism and delete ReplaceClassRef entirely. The code had some oversights anyway that would have caused problems, now that non-actors can be created.
2016-12-01 00:05:23 +01:00
Christoph Oelckers 0233c21e33 - fixed: When a bogus class is deleted from AllActorClasses, the entry should also be removed from the array instead of leaving a null pointer behind. 2016-11-30 19:48:52 +01:00
Edoardo Prezioso 07c110d5f7 - Fixed GCC compilation error.
It didn't like 'cvar' being declared between 'goto foundit' and the 'foundit' label.
2016-11-30 19:41:03 +01:00
Christoph Oelckers 1895feb185 - fixed two apparently bogus asserts with returning gloating point constants. 2016-11-30 19:22:56 +01:00
Christoph Oelckers c927aca2a0 Merge branch 'zscript' of https://github.com/rheit/zdoom into gz-zscript
# Conflicts:
#	wadsrc/static/zscript.txt
2016-11-30 18:46:23 +01:00
Christoph Oelckers 83d7f63364 - missed these in the last commit. 2016-11-30 18:43:10 +01:00
Christoph Oelckers 86544086df - allow the VM to run on one global stack per thread.
It is utterly pointless to require every function that wants to make a VM call to allocate a new stack first. The allocation overhead doubles the time to set up the call.
With one stack, previously allocated memory can be reused. The only important thing is, if this ever gets used in a multithreaded environment to have the stack being declared as thread_local, although for ZDoom this is of no consequence.

- eliminated all cases where native code was calling other native code through the VM interface. After scriptifying the game code, only 5 places were left which were quickly eliminated. This was mostly to ensure that the native VM function parameters do not need to be propagated further than absolutely necessary.
2016-11-30 17:15:01 +01:00
Christoph Oelckers 8a50004f55 - cleanup of the virtual function definitions for inventory items. Let's better use 'virtual' and 'override' everywhere to make sure that nothing gets overlooked.
- added call wrappers and script hooks for all relevant virtuals in AInventory.
- made GetSpeedFactor and GetNoTeleportFreeze entirely scripted because they are too trivial - also do them iteratively, just like HandlePickup, because it's just a better way to do this stuff.
2016-11-30 15:54:01 +01:00
Christoph Oelckers b0f3121bec - split up zscript/shared/inventory.txt.
- moved health items to their own file.
- scriptified ScoreItem and MapRevealer whose entire functionality was a small TryPickup method.
- fixed: bit fields in global variables were not correctly written.

This should conclude the inventory cleanup. It is now possible again to find things in there.
2016-11-30 13:36:13 +01:00
Christoph Oelckers 229c55ce61 - moved ammo to its own file, including the backpack.
- moved weapon declarations to their own header.
2016-11-30 12:24:50 +01:00
Christoph Oelckers 78fa076079 - moved armor class declarations to their own file and added necessary #includes only to those files actually using them.
- added copyright headers to a_armor.cpp and a_keys.cpp.
2016-11-30 10:55:03 +01:00
Christoph Oelckers 014e04ce82 - copied inventory files to their own folder.
It's about time this stuff is getting cleaned up seriously. Both a_pickups.cpp and a_artifacts.cpp are so overstuffed that it has become a chore finding stuff in there.
2016-11-30 10:28:02 +01:00
Christoph Oelckers b1910effd6 - remove debug code. 2016-11-30 09:54:37 +01:00
Christoph Oelckers 661692062d - fixed: FxIdentifier::Resolve checked all cases of what an identifier can be, even if it already found a proper match. 2016-11-30 09:53:16 +01:00
Magnus Norddahl 34bf581957 Fix new blend mode 2016-11-30 08:51:39 +01:00
Magnus Norddahl a7a779dd31 Fix race condition 2016-11-30 08:32:05 +01:00
Magnus Norddahl 03282c957b Add a new blend mode for sprites 2016-11-30 07:49:04 +01:00
Christoph Oelckers 0cd6cec531 - scriptified the SectorFlagSetter. 2016-11-30 01:49:36 +01:00
Christoph Oelckers fb3bde0e0d - cleaned up and grouped the virtual function declarations in AActor to ensure that everything has been properly exported.
- removed the native parts of SpecialBlastHandling. Since this is called from the script side and the only remaining native remnant was an empty function it's now 100% scripted.
2016-11-30 01:39:06 +01:00
Christoph Oelckers bbf62132d8 - added a larger batch of function exports.
- cleaned up the virtual function interface of APlayerPawn which still had many virtual declarations from old times when class properties were handled through virtual overrides. None of this makes sense these days anymore.
2016-11-30 01:25:51 +01:00
Magnus Norddahl 284a99f204 Merge branch 'gl_swframebuffer' into qzdoom 2016-11-29 22:16:58 +01:00
Magnus Norddahl 00387a7211 Add bounds check to palette upload buffer size 2016-11-29 22:16:40 +01:00