Commit graph

421 commits

Author SHA1 Message Date
Christoph Oelckers
a5c4e2dab3 Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/r_utility.h
2016-03-31 09:24:41 +02:00
Christoph Oelckers
8fd76f0c8a - floatified bmaporgx and bmaporgy, allowing to remove the gross overflow prevention hacks present in the blockmap code. 2016-03-31 09:23:14 +02:00
Christoph Oelckers
f41afde545 - floatified line_t::bbox. 2016-03-31 01:22:49 +02:00
Christoph Oelckers
7a2c8fdc1c - floatified po_man.cpp and the remaining bits in p_lnspec.cpp 2016-03-31 00:41:21 +02:00
Christoph Oelckers
cf44d2e37a - adjustments. 2016-03-30 20:01:44 +02:00
Christoph Oelckers
251172c7f0 Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/r_data/r_interpolate.cpp
2016-03-30 18:24:22 +02:00
Christoph Oelckers
27bad66f61 - floatified the remaining parts of p_sector.cpp. 2016-03-30 16:51:19 +02:00
Christoph Oelckers
66929cbaff - floatified p_trace, p_slopes and p_udmf.cpp.
- major cleanup of unused code.
2016-03-30 16:30:22 +02:00
Christoph Oelckers
ced30e7bbb - fixed a few oversights.
- switched p_buildmap to use the floating point variants of the linedef/sector init methods.
2016-03-30 11:25:02 +02:00
Christoph Oelckers
77f2530236 - floatified the sector plane movers and removed some of the ZatPoint conversion cruft. 2016-03-30 09:41:46 +02:00
Christoph Oelckers
e4d68e17fd Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt 2016-03-29 16:14:06 +02:00
Christoph Oelckers
ff0b371582 - made the linedef deltas private and only accessible through access functions.
Now everything should be in place to remove the fixed point math from the rest of the play code.
2016-03-29 16:13:16 +02:00
Christoph Oelckers
37e6429cf3 Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/r_data/r_interpolate.cpp
2016-03-29 13:12:15 +02:00
Christoph Oelckers
84d547adfb - fixed: The check if a line is in range of a bounding box must be exclusive.
Unfortunately I picked the one incorrect version of this check (from A_PainShootSkull) when moving it to an inline function.
2016-03-29 13:10:15 +02:00
Christoph Oelckers
25f5e8449a - replaced all direct access to sector plane coefficients with wrapper functions. 2016-03-29 12:40:41 +02:00
Christoph Oelckers
ae14268989 Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/r_utility.cpp
2016-03-29 10:09:03 +02:00
Christoph Oelckers
c7ae4688a3 - replaced all direct access to vertex coordinates with wrapper functions.
So that code replacement can be done piece by piece and not all at once.
2016-03-29 10:07:06 +02:00
Christoph Oelckers
c776a0fb54 - floatification of p_teleport and p_switch.cpp. 2016-03-29 00:31:59 +02:00
Christoph Oelckers
05504b65d2 - floatified p_scroll.cpp
While testing this it became clear that with the higher precision of doubles it has to be avoided at all costs to compare an actor's z position with a value retrieved from ZatPoint to check if it is standing on a floor. There can be some minor variations, depending on what was done with this value. Added isAbove, isBelow and isAtZ checking methods to AActor which properly deal with the problem.
2016-03-28 21:04:46 +02:00
Christoph Oelckers
a99ebc2356 - floatified p_sight.cpp. 2016-03-28 16:22:21 +02:00
Christoph Oelckers
23d311dd04 - floatified P_CheckSlopeWalk. It should be noted that this function is one place where full double precision is too high and needed to be truncated. 2016-03-27 14:07:35 +02:00
Christoph Oelckers
1877eca2ab - more floatification of p_map, plus some stuff used in those functions. 2016-03-27 01:06:54 +01:00
Christoph Oelckers
6e93264016 - started floatification on p_map.cpp. 2016-03-26 23:19:38 +01:00
Christoph Oelckers
dabed04d2a - floatification of p_3dfloors, p_3dmidtex and p_acs.cpp plus some leftovers.
- removed all references to Doom specific headers from xs_Float.h and cmath.h.
2016-03-26 12:36:15 +01:00
Christoph Oelckers
35bb686281 - floatification of sector_t::centerspot. 2016-03-26 09:38:58 +01:00
Christoph Oelckers
8e13d13916 - floatified the automap. 2016-03-25 21:54:59 +01:00
Christoph Oelckers
fb8e03d5eb - floatified FLineOpening.
- some smaller fixes.
2016-03-25 18:43:37 +01:00
Christoph Oelckers
1125101b37 - floatified AActor::Prev plus the stuff using it.
- rewrote some coordinate functions in AActor to use real float math instead of converting back and forth between float and fixed.
2016-03-25 16:25:25 +01:00
Christoph Oelckers
8cdfbeea01 - made AActor::__pos a genuine float vatiable. 2016-03-25 15:43:20 +01:00
Christoph Oelckers
ad74493d5e Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt 2016-03-25 14:56:40 +01:00
Christoph Oelckers
8b6b5e7b1c - preparation for upcoming work: rename the fixed point versions of PosRelative. 2016-03-25 14:18:50 +01:00
Christoph Oelckers
7a26318bf0 - floatified friction. 2016-03-24 22:50:03 +01:00
Christoph Oelckers
609defe078 Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/r_defs.h
2016-03-24 12:48:05 +01:00
Christoph Oelckers
7c87479eea - parameter rework of several spawning functions. 2016-03-23 13:31:12 +01:00
Christoph Oelckers
f60eac8dc0 - floatified FMapThing, dropoffz and GetBobOffset 2016-03-23 12:21:52 +01:00
Christoph Oelckers
eee5143b26 Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/r_defs.h
2016-03-22 22:12:51 +01:00
Christoph Oelckers
301f5abadc - floatified the decal code. 2016-03-22 22:07:38 +01:00
Christoph Oelckers
6b3c0ecbd3 - floatified viewheight variables and some related code. 2016-03-22 18:06:08 +01:00
Christoph Oelckers
1eb106e2c5 - floatification of some alpha parameters. 2016-03-22 13:35:16 +01:00
Christoph Oelckers
19b85f806e Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/actor.h
2016-03-22 12:44:40 +01:00
Christoph Oelckers
a652c061f6 - converted g_strife to full floating point use, except the floor height changing stuff in A_LightGoesOut. 2016-03-22 12:42:27 +01:00
Christoph Oelckers
48afdd7dcb Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt
# Conflicts:
#	src/CMakeLists.txt
#	src/actor.h
2016-03-21 01:34:39 +01:00
Christoph Oelckers
afa5f22b31 - added two floating point special variables, because the two existing ones are integers and unusable for storing doubles. 2016-03-20 21:51:09 +01:00
Christoph Oelckers
5875e91f39 - finished conversion of most of g_doom.
Only things left here are accesses to AActor::ceilingz and radius in A_PainShootSkull, plus scaleX and scaleY in the ScriptedMarine sprite setting code.
Most is still using wrapper functions around the fixed point versions.
2016-03-20 10:52:10 +01:00
Christoph Oelckers
51b05d331d - replaced AActor::vel and player_t::Vel with a floating point version.
- Converted P_MovePlayer and all associated variables to floating point because this wasn't working well with a mixture between float and fixed.

Like the angle commit this has just been patched up to compile, the bulk of work is yet to be done.
2016-03-20 00:54:18 +01:00
Christoph Oelckers
671291227e - first stage of converting actor angles to float complete
Patched up everything so that it compiles without errors again. This only addresses code related to some compile error. A large portion of the angle code still uses angle_t and converts back and forth.
2016-03-16 12:41:26 +01:00
Christoph Oelckers
f4f489b33d Merge branch 'master' of https://github.com/rheit/zdoom 2016-03-14 22:02:58 +01:00
Christoph Oelckers
d07bf08e56 - fixed: 3D floor ceiling calculation didn't take into account that an actor's top may just be slightly inside a 3D floor and returned the next highest one instead.
For floors this change is deliberately not done because it might cause problems with the movement code.
2016-03-14 16:38:17 +01:00
Christoph Oelckers
c2e7123a36 Merge branch 'master' of https://github.com/rheit/zdoom 2016-03-08 13:12:03 +01:00
Christoph Oelckers
2cd74118f6 - fixed sight checking through portals.
Notes:
 * It is actually not enough to disable the early-out condition for the current block if there's a portal. It must be disabled for the entire rest of the trace because otherwise the collected lines never get processed.
 * The block bounds check cannot be done globally with portals in the game. The actual trace can easily end up outside the blockmap bounds if portal offsets are factored into the distance between the two actors.
2016-03-08 01:26:13 +01:00
Christoph Oelckers
3c25b2c066 - some redesign of P_CheckSight to handle portals.
Portal stuff not tested yet.
2016-03-07 21:59:32 +01:00
Christoph Oelckers
e3c06e3df7 Merge commit '165d26baa1569685651baf4575e12e73c8cbfd2e'
# Conflicts:
#	bzip2/bzip2.vcproj
#	game-music-emu/game-music-emu.vcproj
#	gdtoa/gdtoa.vcproj
#	jpeg-6b/jpeg-6b.vcproj
#	src/p_spec.cpp
#	src/r_defs.h
#	tools/fixrtext/fixrtext.vcproj
#	tools/lemon/lemon.vcproj
#	tools/updaterevision/updaterevision.vcproj
#	tools/zipdir/zipdir.vcproj
#	wadsrc/static/xlat/eternity.txt
#	wadsrc/wadsrc.vcproj
#	zlib/zlib.vcproj
2016-03-01 17:23:35 +01:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
7242a0ef94 - fixed: Rendering 2-sided walls with 3D floor light effects had the 'is3dfloor' flag of GetLightLevel inverted. 2016-02-29 10:26:07 +01:00
Christoph Oelckers
e305f5211a Merge branch 'zmaster' 2016-02-27 23:36:52 +01:00
Christoph Oelckers
451cac457b - added NULL pointer check in AActor::ClearInterpolation. 2016-02-26 18:05:58 +01:00
Christoph Oelckers
bb4bd76257 Merge branch 'zmaster' 2016-02-26 11:54:08 +01:00
Christoph Oelckers
eafd2519b4 - fixed a few incorrect uses of AngleTo function.
- added portal offsetting to all AproxDistance, AngleTo and Vec*To members of AActor.
- optimized displacement retrieval so that the most common case with no offset retrieves a constant null-vector which can be optimized away fully by the compiler.
- early out in P_GetOffsetPosition if there's no portal lines nearby, so that the common case can skip the traverser completely even on maps with line portals.
2016-02-26 11:52:50 +01:00
Christoph Oelckers
205bbac411 Merge branch 'master' of https://github.com/rheit/zdoom 2016-02-25 13:01:51 +01:00
Christoph Oelckers
c7bce8b346 - added a special portal blockmap. This only contains all lines which have a crossable line portal assigned. This is to speed up offset calculations because those are quite frequent and would be too inefficient with the full blockmap.
- made some minor changes to FPathTraverse so that the Add*Intercepts methods can be virtually overridden.
- removed the PortalTracer class because in its existing form it was too costly. Replaced with a P_GetOffsetPosition function that does the minimum required work to get to the translated destination and that's better suited for being called from the Vec*Offset methods. Other use cases will require some changes to FPathTraverse anyway, or some wrapping class like the FMultiBlock iterators.
2016-02-25 13:00:23 +01:00
Christoph Oelckers
954f03e531 Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/actor.h
2016-02-25 01:40:36 +01:00
Christoph Oelckers
e11da06e69 - some preparations for actor interpolation through wall portals. 2016-02-25 00:41:31 +01:00
Christoph Oelckers
58d3b04590 - fixed some places in p_pillar.cpp where sector plane z's were calculated at (0, 0) which could cause overflows if the actual plane is too far away from the origin.
- renamed sector_t::soundorg in centerspot, changed the type to a fixedvec2 and removed the CenterSpot #define.

Since this thing was used in lots of places that have nothing to do with sound the name made no sense. Having it as a fixed_t array also made it clumsy to use and the CenterSpot #define used a potentially dangerous type cast.
2016-02-24 14:49:59 +01:00
Christoph Oelckers
e107d8ff48 Merge remote-tracking branch 'remotes/zdoom/master'
# Conflicts:
#	src/portal.h
#	src/r_defs.h
2016-02-22 16:06:31 +01:00
Christoph Oelckers
98c7fabb89 - untested partial refactoring of P_CheckPosition.
(This is just a safety commit before doing some more extensive behind-the-scenes refactoring.)

Notable changes here:

 * use the same logic for determining whether a 3D floor is 'below' or 'above' the actor as all the other functions.
 * removed the broken code which tried to detect whether an actor was touching a steep slope. Better use P_LineOpening to find the correct planes and store the results.
 * improved detection whether the slopes on both sides of a plane are identical, using the same data as for steep slope detection.
2016-02-22 12:05:37 +01:00
Christoph Oelckers
6132f6971a - added support for FFCF_NOPORTALS and FFCF_3DRESTRICT to FindNextLowestFloorAt and FindNextHighestCeilingAt
- use these functions in P_GetFloorCeiling instead of duplicating all this code.
- removed some debug CCMDs.
2016-02-20 02:22:09 +01:00
Christoph Oelckers
02d7572343 - some header dependency cleanup so that it is no longer needed to include portal.h to get the inline functions. Portal.h has been reduced of most dependencies now so that including it is cheap and can be done in other headers.
- some consolidation in p_map.cpp. PIT_CheckLine and PIT_FindFloorCeiling had quite a bit of redundancy which has been merged.
- čontinued work on FMultiBlockLinesIterator. It's still not completely finished.
2016-02-19 14:08:41 +01:00
Christoph Oelckers
6e4cf9699a Merge branch 'portal' of https://github.com/rheit/zdoom into portal 2016-02-17 02:21:46 +01:00
Christoph Oelckers
0948448988 - some more checking and refactoring of ZatPoint calls.
- removed Plane/Floor/CeilingAtPoint functions because they are overkill for the problem they were meant to solve. Calling ZatPoint with adjusted coordinates created with AActor::PosRelative is just as easy in the few places where this is needed.
- made P_HitWater and P_CheckSplash portal aware.
2016-02-17 02:21:26 +01:00
Christoph Oelckers
5611df1f3e - fixed the portal aware ceiling and floor functions. 2016-02-17 00:31:29 +01:00
Christoph Oelckers
0ecfc68205 - fixed conditions for PortalBlocksView. Created a new function PortalBlocksSight that's relevant for playsim-related sight checks. 2016-02-16 22:57:56 +01:00
Christoph Oelckers
8d53f6176e - fixed conditions for PortalBlocksView. Created a new function PortalBlocksSight that's relevant for playsim-related sight checks. 2016-02-16 22:57:03 +01:00
Christoph Oelckers
56202c49f1 Merge branch 'master' of c:\programming\doom-dev\zdoom
# Conflicts:
#	.gitignore
2016-02-16 21:02:13 +01:00
Christoph Oelckers
ae02b2fcaf - added NextHighestCeiling/NextLowestFloorAt functions. Not tested yet! 2016-02-16 21:00:34 +01:00
Christoph Oelckers
1b88052bba - started refactoring ZatPoint calls which need to be portal aware.
To summarize, anything that just works with map geometry doesn't need to bother, as does the renderer. (i.e. nearly all r_* files, p_floor.cpp, p_ceiling.cpp et.al)
But all calls that are somehow related to actor positions need to be made aware of potential portal transitions:

 * added FloorAtPoint, CeilingAtPoint and PlaneAtPoint methods to sector_t, which can be used to calculate a plane's height with relation to a given actor, even if that actor is on the other side of a portal.
 * added HighestCeilingAt and LowestFloorAt methods which traverse all ceiling/floor portals until they find an impassable plane.
2016-02-16 16:40:53 +01:00
Christoph Oelckers
6adb069506 - rewrote p_local.h so that it doesn't pull in the entire bunch of headers.
This was to resolve some circular dependencies with the portal code.
The most notable changees:

 * FTextureID was moved from textures.h to doomtype.h because it is frequently needed in files that don't want to do anything with actual textures.
 * split off the parts from p_maputl into a separate header.
 * consolidated all blockmap related data into p_blockmap.h
 * split off the polyobject parts into po_man.h
2016-02-15 02:14:34 +01:00
Christoph Oelckers
405db83393 - added a function which collects all portal group an actor would touch if standing in a given position. 2016-02-15 00:53:59 +01:00
Christoph Oelckers
0dce22ce85 - some portal considerations. 2016-02-14 21:02:18 +01:00
Christoph Oelckers
b60069bb26 Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/p_spec.cpp
#	src/r_bsp.cpp
#	src/r_data/r_interpolate.cpp
#	wadsrc/static/xlat/eternity.txt
2016-02-14 18:20:56 +01:00
Christoph Oelckers
c338b9cde3 - some more portal preparation . 2016-02-14 16:26:27 +01:00
Christoph Oelckers
d5a1004c41 - some preparations for portal stuff:
* set up linked sector portals so that everything that will eventually have to be considered is present, even though the software renderer currently can't handle those adequately.
* tag all skybox things with a type so that they can easily be distinguished at run time.
* fill in the linked portal types in xlat/eternity.txt.
2016-02-14 13:12:03 +01:00
Christoph Oelckers
6df435c8c5 Merge branch 'master' of https://github.com/rheit/zdoom 2016-02-11 22:58:16 +01:00
Christoph Oelckers
bf03ea496e - fixed: instant sector movement actions must actually delete the created interpolation right away and not wait until it deletes itself. 2016-02-11 22:03:09 +01:00
Christoph Oelckers
f8e5a0ebf0 Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/g_doomedmap.cpp
#	src/info.h
#	src/p_saveg.cpp
#	src/p_setup.cpp
#	src/p_spec.cpp
#	src/r_defs.h
#	wadsrc/static/mapinfo/eternity.txt
#	wadsrc/static/xlat/eternity.txt
2016-02-06 00:41:00 +01:00
Christoph Oelckers
e88901f4b7 - added the EE-Extradata parser I wrote for GZDoom so I can use the Vaporware demo map for testing portal stuff. 2016-02-05 23:51:28 +01:00
Christoph Oelckers
94b7ef72ca - more cleanup on portal implementation:
- store portal data in a separate structure.
- store portal data in savegames because some of this will be changeable later.
- run a cleanup pass after all portals have been created to weed out broken ones.
- add a definition type that's compatible with Eternity Engine's line portal types.
- swapped arg[2] and arg[3] of Line_SetPortal, because the type is more significant than the alignment.
2016-02-05 23:15:56 +01:00
Christoph Oelckers
a85a8c1465 - changed mirror handling so that it works without attaching a portal to the mirror line and removed line_t::portal_mirror member.
- did some cleanup on the portal interface on linedefs: All checks should go through isLinePortal (gameplay related) and isVisualPortal (renderer related) which then can decide on the actual data what to return.
- removed portal_passive because it won't survive the upcoming refactoring.
- removed all direct access to portal members of line_t.
- always use the precise (and fast) version of P_PointOnLineSide inside the renderer.
2016-02-05 16:14:45 +01:00
Christoph Oelckers
dda73b531c Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/CMakeLists.txt
#	src/p_setup.cpp
#	src/r_defs.h
#	src/version.h

This only updates to a compileable state. The new portals are not yet functional in the hardware renderer because they require some refactoring in the data management first.
2016-02-05 12:31:41 +01:00
Christoph Oelckers
76c5039c63 Merge branch 'master' of https://github.com/rheit/zdoom 2016-02-05 10:41:05 +01:00
Christoph Oelckers
8da6483223 - fixed some places where FStrings were incorrectly used.
- replace all implicit conversions from FString to const char * in the header files (so that it can be test compiled with the implicit type conversion turned off without throwing thousands of identical errors.)
2016-02-05 10:40:45 +01:00
Braden Obrzut
ba54d73e07 Merge branch 'portals2_visual' 2016-02-05 00:10:46 -05:00
Christoph Oelckers
6ae09334a3 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	src/r_defs.h
2016-01-19 10:51:42 +01:00
Christoph Oelckers
069889c5ce Merge remote-tracking branch 'remotes/zdoom/master' 2016-01-19 10:46:59 +01:00
Christoph Oelckers
2b5e5b6bc3 - next round of refactoring.
This contains some advance work for handling line-to-line portals in A_PainShootSkull.
This function is special because it performs a map check itself instead of using one of the common functions from p_map.cpp, like most of the rest of the game code.
2016-01-18 16:49:24 +01:00
Braden Obrzut
f3f77a1ba0 Merge branch 'master' into portals2_visual 2016-01-18 09:45:42 -05:00
Christoph Oelckers
e8ee8c5c97 - fixed: secspecial_t was left uninitialized, causing its damage type being an invalid name. 2016-01-18 01:21:20 +01:00
Christoph Oelckers
3f34083e88 Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	src/actor.h
2016-01-17 22:16:27 +01:00
Christoph Oelckers
3e446ea04d - replaced access to AActor's coordinate members with access functions
(first 200 compile errors down...)
2016-01-17 13:48:16 +01:00
Christoph Oelckers
7c925e39fe Merge branch 'master' of https://github.com/rheit/zdoom 2016-01-12 21:36:48 +01:00
Christoph Oelckers
37f18055af - turned sector_t::FloorSkyBox and CeilingSkyBox into an array.
- removed unused SpreadCeilingPortal function.
2016-01-12 21:34:41 +01:00
Christoph Oelckers
7c8d48bbfc Merge branch 'edf-gl'
Conflicts:
	src/actor.h
	src/p_spec.cpp
2016-01-12 00:02:17 +01:00
Christoph Oelckers
65022b780a - implemented 'copy portal to wall' linedef type. 2016-01-11 22:44:53 +01:00
Christoph Oelckers
76b0971067 Merge branch 'master' into edf-gl 2016-01-10 10:31:00 +01:00
Christoph Oelckers
d0978d0760 - added EDF sector handling. 2016-01-10 10:05:06 +01:00
Christoph Oelckers
f391216ab9 Merge branch 'master' of https://github.com/rheit/zdoom 2016-01-09 19:48:01 +01:00
Christoph Oelckers
71c7f2b42c - added 'floorterrain' and 'ceilingterrain' sector properties for UDMF. These will take precedence over texture based terrain if used.
'ceilingterrain' is needed because the top of 3D-floors refers to the model sector's ceiling, so in order to give a 3D floor a terrain it must be assignable to the sector's ceiling.
Note that although it is basically the same property, its actual function bears no relevance to its use in Eternity.
2016-01-09 12:10:36 +01:00
Christoph Oelckers
1b20a06ec4 Merge branch 'master' of https://github.com/rheit/zdoom 2016-01-06 17:16:06 +01:00
Christoph Oelckers
eb6c855a95 - handle intermediate special values in thinkers. They also need to take care of the related damage variables and flags. 2016-01-06 13:30:28 +01:00
Christoph Oelckers
bd8513c063 - made sector_t::damageamount an int so that it can hold TELEFRAG_DAMAGE.
- marked all places where sector_t::special needs to be addressed for the damage overhaul.

NOTE: This commit will not compile!
2016-01-06 12:56:35 +01:00
Christoph Oelckers
5474e01de8 - removed FraggleScript's 'sectortype' function. This was GZDoom exclusive and never documented so it got no public exposure. Since this is incompatible with the damage related changes, it has no more use.
- major overhaul of the static sector damage system:

* consolidated special based damage, Sector_SetDamage and UDMF properties into one set of damage properties. The parallel handling that could lead to double damage infliction was removed. This also means that damage through sector specials can be retroactively changed through Sector_SetDamage.
* all special cases were turned into flags. The new system can switch between Strife's delayed damage and regular damage, and it can also set whether terrain splashes are used or not. It also has access to the special properties of the end-level type (i.e. switching off god mode and ending the level.)
* the damage related flags are accessible through Sector_ChangeFlags, not the damage functions themselves.
2016-01-06 12:12:47 +01:00
Christoph Oelckers
b0db5d9b16 - added a SECF_SILENTMOVE flag.
Since Eternity got this it's a good candidate for a potential Super-Boom standard, and it's also useful for silencing a sector temporarily without removing the sound sequence.
2016-01-06 02:16:33 +01:00
Christoph Oelckers
d34077a3ba - ... and finally the push flag. 2016-01-06 02:05:39 +01:00
Christoph Oelckers
3ffcec3eb3 - moved friction flag from special to Flags as well. 2016-01-06 02:01:59 +01:00
Christoph Oelckers
6a63effa1f - fixed: A_CheckTerrain did not use the proper damage type for processing an instant death sector.
- moved sector secret information from sector_t::special and secretsector to two flag bits in sector_t::Flags.

This is to get rid of the bit masking madness in the floor/ceiling thinkers which need to preserve this bit when they change a sector's type.
2016-01-06 01:50:45 +01:00
Christoph Oelckers
ea6c498470 Merge branch 'zmaster' 2016-01-05 16:49:00 +01:00
Christoph Oelckers
3e13e772ef - after realizing that changing the sector's MOD variable to an FNameNoInit doesn't do anything bad, I just went ahead and got rid of the last place in the engine that still used this data type for internal storage. 2016-01-05 16:10:04 +01:00
Christoph Oelckers
d432df55e9 - changed Sector_SetDamage so that it can explicitly set the damage interval and the leakiness probability, instead of hardcoding it to fixed damage ranges.
- fixed: FCajunMaster::IsDangerous did not check for Heretic's sludge type.
2016-01-05 15:39:21 +01:00
Christoph Oelckers
bb355b3a78 Merge branch 'master' of https://github.com/rheit/zdoom 2016-01-01 13:40:24 +01:00
Randy Heit
c86cd53753 Merge branch 'master' of https://github.com/crimsondusk/zdoom into crimsondusk-master
Conflicts:
	src/am_map.cpp
2015-12-31 20:18:54 -06:00
Christoph Oelckers
4ed78d78cc Merge branch 'master' of https://github.com/rheit/zdoom 2015-11-25 11:51:11 +01:00
Christoph Oelckers
7b017f472a - fixed: Due to the default skybox being moved to the global level data, there was insufficient information to distinguish between using the default skybox or the regular sky. Fixed by adding two new sector flags which get set by a 0-tid SkyPicker. 2015-11-25 11:49:34 +01:00
Teemu Piippo
2f027504b6 Show sector action boundaries on the automap like line specials are. 2015-09-12 04:47:49 +03:00
ZZYZX
cd39c4b8a6 Merged mirrors with portals; Render part of mirrors done, render part of portals needs further testing 2015-06-07 04:19:17 +03:00
Christoph Oelckers
ab1d90038c Merge branch 'master' of https://github.com/rheit/zdoom
Conflicts:
	src/p_3dfloors.cpp
2015-04-25 19:45:27 +02:00
Christoph Oelckers
db61c1cb57 - allow multiple line IDs as well using the same method as for sector tags. 2015-04-19 17:51:34 +02:00
Christoph Oelckers
b921157f57 - uncouple sector tag storage from the sector data to allow multiple tags per sector.
Tags are now handled by a tag manager class which stores sector/tag pairs. This way multiple entries can be added per sector.
Since UDMF does not have any arrays the additional tags are stored as a space separated string as 'MoreIDs'.
2015-04-19 12:33:27 +02:00
Christoph Oelckers
f65a07c952 - minor bit of cleanup of tags code. 2015-04-19 08:48:20 +02:00
Christoph Oelckers
45f893f8fc Merge branch 'master' of https://github.com/rheit/zdoom 2015-04-16 18:08:23 +02:00
Christoph Oelckers
902593198b - wrapped all line ID accesss just like sector tags 2015-04-15 09:37:06 +02:00
Christoph Oelckers
2faf836aa1 - some minor rework of tag access interface after I realized that some stuff (e.g. Strife's scrolling sector special) need the primary tag to treated specially. 2015-04-14 18:48:19 +02:00
Christoph Oelckers
238046655c - wrapped all accesses to the sector tag into accessor functions, as preparation for allowing multiple tags per sector. 2015-04-14 18:32:14 +02:00
Christoph Oelckers
c98e3ca99d Merge branch 'master' into v2.x 2014-08-03 10:58:41 +02:00
Christoph Oelckers
1b55c17379 Merge branch 'master' of https://github.com/rheit/zdoom 2014-08-03 10:08:05 +02:00
Randy Heit
4cf468452c Remove slopetype from line_t.
- Recomputing it in the only two places where it's used is trivial, so
  it's basically a waste of space to precompute it.
2014-07-31 19:15:08 -05:00
Christoph Oelckers
183d0ba82a Merge branch 'master' into Glew_Version_For_Real 2014-07-28 19:56:17 +02:00
Christoph Oelckers
355dd1c2f5 - fixed some issues with setting the vertex dirty state. It was also called from several sector init functions and copy code for Boom deep water. The only case where SetPlaneTexZ should call it is from the interpolation code so this is a special case now. 2014-07-28 18:01:01 +02:00
Christoph Oelckers
29a56fe01c Merge branch 'master' into Glew_Version_For_Real 2014-07-27 17:59:50 +02:00
Christoph Oelckers
925305aa05 - fixed: The code for updating vertex dirty state had been completely missing. I have no idea when it disappeared... 2014-07-27 17:58:51 +02:00
Christoph Oelckers
b8bcbe819b - removed texture based dynamic lighting. For GL 3.x the shader approach is always better.
- fixed: sky fog was not unset.
2014-07-15 20:49:21 +02:00
Christoph Oelckers
6e6be8ed5b Merge branch 'master' into Glew_Version_For_Real 2014-05-18 12:47:48 +02:00
Christoph Oelckers
4e64ad847b Merge branch 'master' of https://github.com/rheit/zdoom 2014-05-15 09:46:47 +02:00
Christoph Oelckers
e49e926bd9 - added option to ASectorAction to remove itself upon triggering by setting the STANDSTILL flag on the map thing. 2014-05-13 21:26:51 +02:00
Christoph Oelckers
c47c7421a3 - route all glColor calls through render state.
- add sector links to dynamic lights.
2014-05-11 22:57:42 +02:00
Christoph Oelckers
2f60ca338b - removed unused members from sector_t 2013-12-05 12:19:44 +01:00
Christoph Oelckers
b2bb24ea0a - GZDoom project files and GZDoom related changes to main ZDoom code 2013-06-23 10:46:31 +02:00
Randy Heit
a50e670c0c - Use tests less prone to overflow on very steep slopes when detecting which side of a plane
the camera is on. Mostly, this means testing the distance of the camera to the plane rather
  than computing the plane's Z at the camera and comparing that with the camera's Z.

SVN r4220 (trunk)
2013-04-17 01:32:40 +00:00
Randy Heit
a4312fb106 - Fix spelling errors spotted by Gez in a few comments.
SVN r3957 (trunk)
2012-11-09 23:13:50 +00:00
Randy Heit
0f0dcc08a2 - Added a new UDMF sidedef flag: lightfog.
SVN r3933 (trunk)
2012-11-03 02:02:42 +00:00
Randy Heit
44b1879553 - Increased max resolution to 5760x3600, which is enough to do 2x supersampling on the currently
largest resolution monitors available (which is the MacBook Pro with Retina Display's 2880x1800).

SVN r3873 (trunk)
2012-09-16 04:51:28 +00:00
Randy Heit
3bfe7b74f4 - Fixed: side_t::SetTextureYScale() did not allow negative scales, even though they are perfectly valid for flipping a texture vertically.
SVN r3850 (trunk)
2012-08-23 01:40:00 +00:00
Randy Heit
980202a18f - Fixed: PrepWall() and PrepLWall() did not understand negative walxrepeats, which should cause
them to flip the texture horizontally.

SVN r3849 (trunk)
2012-08-23 01:34:19 +00:00
Randy Heit
2117c84a78 - Increase maximum resolution to 2880x1800.
SVN r3628 (trunk)
2012-05-06 04:23:49 +00:00
Randy Heit
6369a88e0f - Fixed: sector_t::GetHeightSec() was too aggressive about not returning heightsec.
SVN r3600 (trunk)
2012-04-27 02:50:23 +00:00
Randy Heit
d9f7a250ba - Fixed: Disable absolute wall lighting when in the shadow of a 3D floor.
SVN r3499 (trunk)
2012-04-01 02:31:57 +00:00
Randy Heit
2faf92858a - Fixed: LIGHT2SHADE would overflow with light values larger than 10 bits.
SVN r3339 (trunk)
2012-01-22 00:14:02 +00:00
Christoph Oelckers
b1905c16ef - added UDMF LOcknumber property, submitted by Nightfall.
SVN r3331 (trunk)
2011-12-12 16:07:32 +00:00
Christoph Oelckers
163301dcd5 - took all includes of farchive.h out of headers. This file will have to be included explicitly in each source file that needs it.
SVN r3259 (trunk)
2011-07-06 14:20:54 +00:00
Christoph Oelckers
42091b1bb3 - changed AlterWeaponSprite so that it doesn't take a full vissprite as parameter.
- FCoverageBuffer is only used in r_things.cpp, so its declaration does not need to be in a global header that's included everywhere.


SVN r3258 (trunk)
2011-07-06 13:00:51 +00:00
Christoph Oelckers
f8ba5af858 - separated sprite and skin maintenance code from r_things.cpp into a separate file.
SVN r3256 (trunk)
2011-07-06 10:24:40 +00:00
Christoph Oelckers
06d280f00a - moved all code not specific to the software renderer out of r_bsp.cpp.
SVN r3250 (trunk)
2011-07-05 19:50:01 +00:00
Christoph Oelckers
17ed7aaabd - moved the code from r_data.cpp to some better fitting places and deleted this file and r_data.h because the remaining parts of it were just a random collection of unrelated functions.
SVN r3248 (trunk)
2011-07-05 10:02:38 +00:00
Christoph Oelckers
7308e05ed0 - separated all voxel related resource maintenance code from r_things.cpp and r_data.cpp into its own file.
SVN r3246 (trunk)
2011-07-04 20:22:55 +00:00
Randy Heit
ee8ca0de87 Fixed: Light levels outside the range [0,255] really do matter.
SVN r3223 (trunk)
2011-06-11 23:58:33 +00:00
Christoph Oelckers
1806e47e43 - fixed: Sector_SetLink did incorrect checks for the returned control sector
- added Sector_SetTranslucent special so set translucency of portal planes at run time.
- added 'additive' information for portal planes. This is no-op at the moment because the flat drawers can't handle additive translucency yet though.


SVN r3149 (trunk)
2011-02-12 09:53:40 +00:00
Christoph Oelckers
fae8ed444c - merged 3dfloors2 branch into trunk.
SVN r3124 (trunk)
2011-01-29 11:09:38 +00:00
Randy Heit
2add3fb381 - Merge voxels back into trunk. Even if it needs further tweaking, it should at least be stable now.
SVN r3086 (trunk)
2011-01-02 18:02:27 +00:00
Christoph Oelckers
79c5080dda - added DavidPH's submission for specifying vertex heights directly in UDMF.
SVN r3037 (trunk)
2010-12-14 00:56:44 +00:00
Randy Heit
f7fa3c8dbb - Add a SetCursor() call to I_SetCursor() when the pointer is within the window's client area to
make the pointer change instant instead of waiting until the next mouse event.

SVN r3010 (trunk)
2010-11-19 04:20:33 +00:00
Christoph Oelckers
492bead360 - add alpha property to sector_t::splane. Not used yet.
SVN r2992 (trunk)
2010-11-07 16:17:14 +00:00
Christoph Oelckers
4e1a514455 - fixed: Subsectors which are the origin of polyobjects should not be drawn on the textured automap because the vertices no longer are where they'd be expected to be.
SVN r2622 (trunk)
2010-08-28 16:51:41 +00:00
Christoph Oelckers
9a4abe0915 - merged automap branch into trunk.
SVN r2609 (trunk)
2010-08-27 15:20:05 +00:00
Randy Heit
9137ef04f6 - Added "SoundSequence" UDMF sector property. This is the name of the sound sequence to play for
the sector. Note that this contrasts with sound sequence things in that it takes a name and
  not a number. Also, placing a sound sequence thing in a sector will override this property.

SVN r2492 (trunk)
2010-08-07 04:32:18 +00:00
Randy Heit
677d07f837 - Merge BSP-able polyobjects back into the trunk.
SVN r2480 (trunk)
2010-08-01 02:41:56 +00:00
Christoph Oelckers
4ac64b6df7 - merged polyobject branch into trunk and made some adjustments for savegame compatibility.
SVN r2448 (trunk)
2010-07-23 05:56:25 +00:00
Christoph Oelckers
69861688dc - expanded r_smoothlighting into a r_fakecontrast CVAR that allows to set all 3 options: off, standard and smooth.
SVN r2314 (trunk)
2010-05-12 06:52:03 +00:00
Christoph Oelckers
e0734b3c2d - ported GZDoom's new 'skyoffset' ANIMDEFS option for compatibility purposes.
SVN r1977 (trunk)
2009-11-13 21:28:39 +00:00
Christoph Oelckers
a4f4994e18 - re-fixed polyobject CheckSwitchRange so that it doesn't have to alter the polyobject's linedefs.
SVN r1954 (trunk)
2009-10-30 07:03:26 +00:00
Randy Heit
321ab2f686 - Make TranslateToStartSpot() set the new sector references for a polyobj's
walls so that P_CheckSwitchRange() will work with them.


SVN r1951 (trunk)
2009-10-30 03:29:15 +00:00
Christoph Oelckers
7e2e62fd5c - fixed: sector_t::GetHeightSec checked the wrong MoreFlags.
SVN r1936 (trunk)
2009-10-25 19:39:43 +00:00
Christoph Oelckers
f3f209160e - Renamed plane flags from SECF_* to PLANEF_*.
- Changed Heretic's plat raise type to use a flag to block further sector movement
  instead of keeping the dead thinker around.


SVN r1853 (trunk)
2009-09-17 10:40:38 +00:00
Christoph Oelckers
14a42bbada - changed line_t's sidenum into sidedef pointers.
SVN r1801 (trunk)
2009-09-06 20:45:56 +00:00
Christoph Oelckers
e6aadca409 - changed side_t's linenum into a linedef pointer.
SVN r1800 (trunk)
2009-09-06 18:19:28 +00:00
Christoph Oelckers
ba28749df7 - fixed: WIF_STAFF2_KICKBACK did not work anymore because it depended on conditions
that were changed some time ago.
- fixed: The damage inflictor for a rail attack was the shooter, not the puff.
- Fixed: Floor and ceiling huggers may not change their z-velocity when seeking.
- Fixed: UDMF set the secret sector flag before parsing the sector's properties,
  resulting in it always being false.
- Renamed sector's oldspecial variable to secretsector to better reflect its
  only use.
- Fixed: A_BrainSpit stored as the SpawnShot's target the intended BossTarget, 
  not itself contrarily to other projectile spawning functions. 
  A_SpawnFly then used the target for CopyFriendliness, thinking it'll be the 
  BossEye when in fact it wasn't.
- Added Gez's submission for a DEHACKED hack introduced by Boom.
  (using code pointers of the form 'Pointer 0 (x statenumber)'.
- fixed: Attaching 3DMidtex lines by sector tag did not work because lines
  were marked by index in the sector's line list but needed to be marked by
  line index in the global array.
- fixed: On Linux ZDoom was creating a directory called "~.zdoom" for 
  save files because of a missing slash.
- fixed: UDMF was unable to read floating point values in exponential format
  because the C Mode scanner was missing a definition for them.
- fixed: The recent changes for removing pointer aliasing got the end sequence
  info from an incorrect variable. To make this more robust the sequence index
  is now stored as a hexadecimal string to avoid storing binary data in a string.
  Also moved end sequence lookup from f_finale.cpp to the calling code so that
  the proper end sequences can be retrieved for secret exits, too.

SVN r1777 (trunk)
2009-08-30 10:43:51 +00:00
Christoph Oelckers
e49da9bba9 - forgot something,,,
SVN r1763 (trunk)
2009-08-08 21:30:23 +00:00
Christoph Oelckers
cd95473d57 - replaced all code that changed a sector's light level with a setter function.
SVN r1762 (trunk)
2009-08-08 20:03:43 +00:00
Randy Heit
93202a5488 - Removed -fno-strict-aliasing from the GCC flags for ZDoom and fixed the
issues that caused its inclusion. Is an optimized GCC build any faster
  for being able to use strict aliasing rules? I dunno. It's still slower
  than a VC++ build.
  
  I did run into two cases where TAutoSegIterator caused intractable problems
  with breaking strict aliasing rules, so I removed the templating from it,
  and the caller is now responsible for casting the probe value from void *.
- Removed #include "autosegs.h" from several files that did not need it
  (in particular, dobject.h when not compiling with VC++).


SVN r1743 (trunk)
2009-08-02 03:38:57 +00:00
Christoph Oelckers
da2df2778e Added Line_SetTextureScale.
SVN r1658 (trunk)
2009-06-08 23:49:27 +00:00
Christoph Oelckers
d04ffd57f8 - added Gez's infinite ammo powerup and random spawner fix patches.
- reduced size of Hexen's flames to fix bug in Deathkings MAP01.
- added checks for sidedef scaling values 


SVN r1648 (trunk)
2009-06-07 16:38:19 +00:00
Randy Heit
c66f237873 - Added per-tier texture scaling with these new UDMF sidedef properties:
* scalex_top
  * scaley_top
  * scalex_mid
  * scaley_mid
  * scalex_bottom
  * scalex_bottom
- Added sidedef versions of the linedef flags wrapmidtex and clipmidtex (via
  UDMF; names are the same). If the flag is set on the line, it applies to
  both sides. Otherwise, each side can control them individually.


SVN r1645 (trunk)
2009-06-07 01:14:14 +00:00
Christoph Oelckers
273758344f - Fixed: When setting up a deep water sector with Transfer_Heights the floorclip
information of all actors in the sector needs to be updated.


SVN r1600 (trunk)
2009-05-23 10:21:33 +00:00
Christoph Oelckers
571d28281b - Added handling for UDMF user keys.
- Added support for ACS functions that can be defined without recompiling ACC.
- Fixed: The short lump name for embedded files must be cleared so that they
  are not found by a normal lump search.
- Added AProp_Notarget actor property.
- Fixed: TraceBleed was missing a NULL pointer check,
- Fixed: P_RandomChaseDir could crash for friendly monsters that belong to
  a player which left the game.
- Changed A_PodGrow so that it plays the generator's attack sound instead of
  "misc/podgrow".


SVN r1575 (trunk)
2009-05-11 21:05:40 +00:00
Randy Heit
0c9f735357 - Restored the old drawseg/sprite distance check from 2.0.63. The code that
replaced it did the check at the center of the area intersected by the
  sprite and the drawseg, whereas 2.0.63 only did the check at the location
  of the sprite on the map.


SVN r1411 (trunk)
2009-02-07 03:01:38 +00:00
Christoph Oelckers
78933df10d - added GZDoom's 3D floor physics code. This is not active yet so anything compiled from this code won't have any support for it!
SVN r1351 (trunk)
2009-01-04 15:00:29 +00:00
Christoph Oelckers
bd9e318863 - Added a SECF_NORESPAWN flag for sectors that prevents players from being respawned
in such a sector. As a workaround for current map formats a new actor
  (DoomEdNum 9041) was added that can set the extended sector flags without the
  use of ACS and sector tags. The new flag can also be set with Sector_ChangeFlags.
- Fixed: Players ignored MF2_TELESTOMP and always telefragged what was in the way.
- Fixed: Actors with MF5_NOINTERACTION were not affected by the time freezer.


SVN r1315 (trunk)
2008-12-14 19:12:41 +00:00
Christoph Oelckers
b07542ddd6 More header cleanup.
SVN r1225 (trunk)
2008-09-15 00:47:31 +00:00
Christoph Oelckers
76cb09d546 - Replaced WALLF_AUTOCONTRAST with WALLF_NOFAKECONTRAST so that the
default setting for the flags is 0.
- Added: doom2day's smoothlighting
- Added: dontincrement argument to A_CheckForReload.


SVN r1179 (trunk)
2008-08-21 08:04:21 +00:00
Christoph Oelckers
bc5d0c882b - Put more floor/ceiling properties in sector_t into a substructure and
added wrapper functions.


SVN r1174 (trunk)
2008-08-16 20:19:35 +00:00
Christoph Oelckers
14e94b86e2 - Replaced the ActorInfo definitions of several internal classes with DECORATE definitions
SVN r1133 (trunk)
2008-08-08 22:52:04 +00:00
Randy Heit
7ed0311221 - Polyobject sounds now play from their lines, similar to the way sector
sounds are handled.
- Why do polyobjects have a 3D start spot? Flattened it to 2D.
- Moved the sector sound origin calculation out of fmodsound.cpp and into
  s_sound.cpp so that the near sound limiting will use the correct sound
  location for deciding on neighbors.


SVN r1061 (trunk)
2008-07-02 03:50:17 +00:00
Randy Heit
a3e8a0cefd - Removed the S_Sound() variant that allows for pointing the origin at an
arbitrary point. It has been replaced with a variant that takes a polyobject
  as a source, since that was the only use that couldn't be rewritten with the
  other variants. This also fixes the bug that polyobject sounds were not
  successfully saved and caused a crash when reloading the game. Note that
  this is a significant change to how equality of sound sources is determined,
  so some things may not behave quite the same as before. (Which would be a
  bug, but hopefully everything still sounds the same.)


SVN r1059 (trunk)
2008-07-01 04:06:56 +00:00