Commit graph

459 commits

Author SHA1 Message Date
Jason Francis
4494b18e8a Enable string & float user_ properties in UDMF things 2018-03-24 10:20:39 +01:00
Christoph Oelckers
011bf9d9aa - another one... 2018-03-11 22:44:05 +01:00
Christoph Oelckers
b939836846 - renamed FileRdr back to FileReader. 2018-03-11 19:29:37 +01:00
Christoph Oelckers
0be1ed252b - rewrote the operator>> methods of FileReader as normal functions for clarity. 2018-03-11 18:20:49 +01:00
Christoph Oelckers
8bbfd39f42 - fixed some remaining issues:
* initial positioning in a subsection of a file failed. This mainly affected music playback.
* made the FileRdr constructor which takes a FileReaderInterface private so that everything that needs it must be explicitly declared as friend.
* removed a few redundant construction initializers for FileRdrs.
* loading compressed nodes needs to check the validity of its reader.
* use GetLength to detemine the size of a Zip file instead of doing another seek to the end.
* removed duplicate Length variables.
2018-03-11 13:26:30 +01:00
Christoph Oelckers
b14ee50d0d - transition to new FileReader interface complete, but untested. 2018-03-11 12:33:46 +01:00
Christoph Oelckers
247785bca2 - converted map loader to FileRdr and took the opportunity to clean up its interface. 2018-03-10 21:48:33 +01:00
Christoph Oelckers
5fa63c396d - sound code and most of texture code converted to FileRdr.
This allowed to remove a lot of bad pointer voodoo in the music loader, because the new class does not allow duplication of the reader object
2018-03-10 18:45:11 +01:00
Rachael Alexanderson
420602e154 - check for deathmatch starts before forcing an unfriendly player to use them. 2018-02-20 05:35:40 -05:00
Rachael Alexanderson
ee9736fbb3 - print out FriendlySeeBlocks on 'info' ccmd
- not setting FriendlySeeBlocks on UDMF now causes the actor to use its ZScript default
2018-01-09 15:48:19 -05:00
Rachael Alexanderson
9c189e5d4b - expose a monster's 'friendlyseeblocks' to UDMF 2018-01-09 15:30:45 -05:00
Rachael Alexanderson
9fd78e90ad - export 'GetChecksum' as part of FLevelLocals in ZScript 2018-01-06 19:59:49 -05:00
alexey.lysiuk
a11e9ca4dc Apply compatibility flags to all map format
UDMF maps were no affected by settings in compatibility.txt
2017-12-24 10:33:29 +02:00
Rachael Alexanderson
a3a350e6e8 - fixed: make level.ShaderStartTime use the same values as what screen->FrameTime normally gets. 2017-12-07 16:31:27 -05:00
Rachael Alexanderson
909daadd75 - update more millisecond-storing data structures to u/int64_t to fix possible rollover bugs 2017-11-15 20:33:08 -05:00
Rachael Alexanderson
ab32cb4c88 - track level start time for the shader system, reset the shaders. 2017-11-15 11:06:21 -05:00
Christoph Oelckers
0323f54384 - rename I_FPSTime function.
- now that the frame buffer stores its render time, the 'ms' return from I_GetTimeFrac is not needed anymore, we may just as well use the globally stored value instead.

The only feature this value was ever used for was texture warping.
2017-11-13 00:54:32 +01:00
Christoph Oelckers
6bd76d6b5a - fixed compilation in debug mode.
- moved timer definitions into their own header/source files. d_main is not the right place for this.
- removed some leftover cruft from the old timer code.
2017-11-12 09:06:40 +01:00
Magnus Norddahl
307d8931d8 - Switch to C++11 steady clock
- Move the C++11 implementation to d_main
- Remove the platform specific timer implementations
2017-11-12 03:12:22 +01:00
Rachael Alexanderson
fa3846ccc6 Merge https://github.com/coelckers/gzdoom 2017-05-05 00:36:22 -04:00
Christoph Oelckers
2dff0e7309 - fixed: P_TranslateLinedef should not do any byte swapping but require passing of properly ordered values.
This gets called from several places, and the only one passing in potentially byte swapped values is P_LoadLineDefs.
All other uses of this function were essentially broken on PowerPC.
2017-05-04 23:52:16 +02:00
Rachael Alexanderson
5d11c9962b Merge commit '8db239d' 2017-04-18 11:33:52 -04:00
Christoph Oelckers
96d328de9b - removed all Doom Source license and all default Raven copyright headers and replaced them with GPLv3. Also fixed the license in a few other files.
For some files that had the Doom Source license attached but saw heavy external contributions over the years I added a special note to license all original ZDoom code under BSD.
2017-04-17 13:33:19 +02:00
Rachael Alexanderson
93564078fe Merge https://github.com/coelckers/gzdoom 2017-04-14 01:05:26 -04:00
Christoph Oelckers
b2d944974e - first stage of simplifying the type system.
Let's use inline checkers in PType instead of constantly having to do clumsy IsKindOf checks etc. Once complete this also means that the types can be taken out of the class hierarchy, freeing up some common names.
2017-04-13 12:52:18 +02:00
Rachael Alexanderson
a15031706d Merge https://github.com/coelckers/gzdoom 2017-04-12 20:33:38 -04:00
Christoph Oelckers
6599e2c425 - moved the VM types into their own file and only include it where really needed. 2017-04-13 01:12:04 +02:00
Christoph Oelckers
6308251084 - added a FindSymbol wrapper to PClass so that other code does not need to access the symbol table directly.
- added an isActor utility function to codegen.cpp to simplify a few constructs.
2017-04-12 13:08:41 +02:00
Rachael Alexanderson
959fb2577b - Unfriendly players now spawn at deathmatch starts. 2017-03-24 14:59:25 -04:00
Christoph Oelckers
2c7ceaf96a - fixed the check for one-subsector BSPs. 2017-03-18 22:44:03 +01:00
alexey.lysiuk
cb5ddeff25 Fixed compilation warnings reported by Clang
src/gl/scene/gl_clipper.h:150:23: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/gl/dynlights/gl_aabbtree.cpp:137:24: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:137:34: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:137:44: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:30: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:54: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:142:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:143:3: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:144:3: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:167:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_shadowmap.cpp:163:31: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/p_saveg.cpp:367:16: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
src/p_saveg.cpp:402:60: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/p_setup.cpp:1553:39: warning: format specifies type 'ptrdiff_t' (aka 'long') but the argument has type 'int' [-Wformat]
src/scripting/zscript/zcc_compile.cpp:293:74: warning: field 'AST' will be initialized after field 'mVersion' [-Wreorder]
src/swrenderer/drawers/r_thread.cpp:113:21: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-03-18 15:13:02 +02:00
Christoph Oelckers
b416322032 - converted FInterBackground into a class so that the scripts can use it.
- fixed some issues with default value matching in savegames.
2017-03-18 13:25:22 +01:00
Christoph Oelckers
c4f6a54753 - fixed reject check in particle code. 2017-03-17 21:54:03 +01:00
Christoph Oelckers
33d36157c8 - moved the blockmap into a substructure of FLevelLocals.
This part can certainly improved a lot but the most important thing, grouping all those global variables into one place, is done.
2017-03-17 14:24:21 +01:00
Christoph Oelckers
f864a09faa - moved more varialbles into FLevelLocals. 2017-03-17 12:49:43 +01:00
Christoph Oelckers
ea1d6634f7 - moved the Zones array into FLevelLocals.
- replaced TStaticArray with regular TArrays.

They had incomplete implementations preventing proper cleanup of the level loading code. It makes more sense to add the missing methods to the regular TArray and use that.
This also makes some changes to how the game nodes are used to avoid creating a copy: If the head node's pointer is stored in a separate variable, no code needs to check which of the two arrays gets used.
2017-03-17 12:11:37 +01:00
Christoph Oelckers
fea4079b7c - moved nodes into FLevelLocals. 2017-03-17 01:42:37 +01:00
Christoph Oelckers
f818d25542 - last commit deleted a small piece of code. 2017-03-17 00:31:15 +01:00
Christoph Oelckers
f201dab534 - moved the subsectors into FLevelLocals. 2017-03-17 00:22:52 +01:00
Christoph Oelckers
59b684bdbc - moved the segs array into FLevelLocals. 2017-03-16 21:34:04 +01:00
Christoph Oelckers
9a24771a7d - refactored FDynamicColormap out of sector_t.
This has increasingly become an obstacle with the hardware renderer, so now the values are being stored as plain data in the sector, with the software renderer getting the actual color tables when needed. While this is a bit slower than storing the pregenerated colormap, in realistic situations the added time is mostly negligible in the microseconds range.
2017-03-15 22:04:59 +01:00
Christoph Oelckers
d2beacfc5f - except for DWORD, all homegrown integer types are gone - a handful were left where they represent genuine Windows types. 2017-03-09 19:54:41 +01:00
Christoph Oelckers
ad41b23506 - replaced the homegrown integer types in all p* sources and headers. 2017-03-08 18:55:52 +01:00
Christoph Oelckers
4a87a598fb - do floatification of the UDMF Health property as it should have been. 2017-02-28 00:59:09 +01:00
Christoph Oelckers
d39ee1daf3 - added a new thinker statnum STAT_STATIC which do not get deleted between levels. 2017-02-25 16:56:49 +01:00
Christoph Oelckers
498da825a5 - made the Skins array scripting friendly and exported it. 2017-02-17 21:51:23 +01:00
ZZYZX
6a0103a746 Merged p_setup conflict 2017-02-03 13:02:44 +02:00
ZZYZX
b45af599c5 Explicit handler deinitizliation in P_Shutdown and P_FreeLevelData 2017-02-03 13:01:15 +02:00
ZZYZX
27c5e21a1d Moved E_InitStaticHandlers(true) a bit higher in the initialization so that local scripts receive PlayerEntered properly 2017-02-03 09:04:01 +02:00
Christoph Oelckers
becc00a8be - added a check to P_VerifyBlockmap to discard all blockmap with blocks whose first entry is not 0.
Seems someone has written a node builder which violates this long-standing assumption (https://www.doomworld.com/vb/source-ports/92468-introducing-zokumbsp/)
However, rather than second-guessing the format's correctness it's more advisable to just discard such blockmaps to avoid some less obvious issues that may creep up.
2017-02-01 21:40:47 +01:00
Christoph Oelckers
6d28aa3541 - do not use strtol for parsing critical values that can get large.
This function will truncate everything that is larger than LONG_MAX or smaller than LONG_MIN to fit into a long variable, but longs are 32 bit on Windows and 64 bit elsewhere, so to ensure consistency and the ability to parse larger values better use strtoll which does not truncate 32 bit values.
2017-02-01 11:19:55 +01:00
Christoph Oelckers
94d5d6848e - moved all code that deletes some data from P_SetupLevel to P_FreeLevelData so that P_Shutdown can also call it.
This is particularly important for camera textures which otherwise would not be taken down before a restart.
2017-01-31 13:46:35 +01:00
Christoph Oelckers
ba629379ca - fixed: for levels with 0-length lines the allocation size of the lines array was too large because it didn't subtract those deleted lines. 2017-01-30 00:25:40 +01:00
Christoph Oelckers
dbbd797baa - added the needed properties for Doom64 colors and a little FraggleScript hack to test it with existing maps. 2017-01-28 19:05:39 +01:00
alexey.lysiuk
0b62645a35 Fixed compilation warnings reported by GCC/Clang
gl/data/gl_setup.cpp:430:11: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
gl/data/gl_setup.cpp:527:19: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
gl/data/gl_setup.cpp:542:19: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
nodebuild.cpp:1056:63: warning: format specifies type 'ptrdiff_t' (aka 'long') but the argument has type 'int' [-Wformat]
p_glnodes.cpp:379:50: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
p_saveg.cpp:381:18: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
p_scroll.cpp:532:11: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
p_setup.cpp:2304:43: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
p_setup.cpp:2302:12: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
scripting/codegeneration/codegen.cpp:8488:20: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
scripting/codegeneration/codegen.cpp:8606:15: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-01-14 15:03:14 +02:00
Christoph Oelckers
7b7623d2c4 - split DObject::Destroy into the main method, a native OnDestroy and a scripted OnDestroy method and made the main method non-virtual
This was done to ensure it can be properly overridden in scripts without causing problems when called during engine shutdown for the type and symbol objects the VM needs to work and to have the scripted version always run first.
Since the scripted OnDestroy method never calls the native version - the native one is run after the scripted one - this can be simply skipped over during shutdown.
2017-01-12 22:49:18 +01:00
alexey.lysiuk
d9efeb206d Fixed crash on loading GL nodes
See http://mantis.zdoom.org/view.php?id=21
2017-01-10 17:16:18 +02:00
Christoph Oelckers
46179936ec - added global per-mod precaching lists, to be defined in MAPINFO's Gameinfo section. 2017-01-10 01:00:06 +01:00
Christoph Oelckers
cc8c20adf8 - fixed: non-existent partner segs were not properly initialized. 2017-01-09 20:54:22 +01:00
Christoph Oelckers
472ace1bea - removed the needless copying around of the vertexdatas array. The slope code can just use this from the TArray created by the UDMF parser. 2017-01-09 01:40:14 +01:00
Christoph Oelckers
b9ac44e8f2 - fixed: The sight checker's portalgroup variable was not initialized.
- got rid of glsegextras.

This was probably one of the most ill-conceived means to save some memory in ZDoom, but now, when a pure software rendered engine no longer needs to be considered it's just totally useless to keep this mess in.
2017-01-09 01:28:07 +01:00
Christoph Oelckers
12037fdc95 - made the vertexes array VM friendly. 2017-01-09 00:46:16 +01:00
Christoph Oelckers
cd7986b1b1 - refactored global sides array to be more VM friendly.
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00
Christoph Oelckers
cb89a1a81a - fixed inconsistent use of line_t::portaltransferred.
Some parts used 0 as 'nothing' others used UINT_MAX. 0 should refer to the map's default sky, not to nothing.
2017-01-08 14:59:31 +01:00
Christoph Oelckers
71d1138376 - refactored the global lines array into a more VM friendly form, moved it to FLevelLocals and exported it to ZScript.
- disabled the Build map loader after finding out that it has been completely broken and nonfunctional for a long time. Since this has no real value it will probably removed entirely in an upcoming commit.
2017-01-08 14:39:16 +01:00
Christoph Oelckers
5ee52f159e - refactored the level backup data needed by the serializer into p_saveg.h. 2017-01-08 12:11:31 +01:00
Christoph Oelckers
91981e25a8 - moved all 'sectorptr - &level.sectors[0]' constructs into a subfunction. 2017-01-07 20:02:25 +01:00
Christoph Oelckers
c02281a439 - refactored the global sectors array into a more VM friendly type and moved it into FLevelLocals. 2017-01-07 19:32:24 +01:00
Christoph Oelckers
c52bc06e9b - use a memory arena to allocate msecnodes.
These are rather small and extremely frequently allocated, so they are prime candidates for memory arena, because it not only avoids fragmentation and internal overhead due to mass allocation of small memory blocks but it also makes it a lot faster to free the memory when finishing a level.
2017-01-06 13:09:58 +01:00
Christoph Oelckers
b11c8fef57 - renamed a few variables for clarity. 2017-01-06 11:56:17 +01:00
alexey.lysiuk
9ed2da176e Fixed signed/unsigned mismatch in comparisons
No more 'comparison of integers of different signs' warnings reported by GCC/Clang
2017-01-06 10:40:51 +01:00
Christoph Oelckers
1a16f664e4 - added a TStaticArray class that allows safe access to resizable static data (like the sectors, linedefs, etc.) for the VM.
- used this to replace the line list in Sector because that gets already used and implemented proper bounds checks for this type of array.
2017-01-02 21:40:52 +01:00
Christoph Oelckers
6322c81719 - added UDMF_fields for sector plane reflectiveness. 2016-12-28 01:09:42 +01:00
Christoph Oelckers
7f72de6b71 - use msecnode_t's for the touching_renderlists instead of std::forward_list.
- preparations for checking the proper sector to get a sprite's lighting info.
2016-12-26 11:58:08 +01:00
ZZYZX
87b23d160b Ported RenderRadius and related code from gzdoom branch 2016-12-25 13:09:32 +02:00
Christoph Oelckers
76c34d7b2f - block access to private and protected data for the external variabler getter functions.
- fixed: The state index comparison against 0 was broken.
- fixed: Resolving codegen nodes must set the strictness flag per function so that ZSCRIPT and DECORATE are done properly.
2016-11-05 09:50:53 +01:00
Christoph Oelckers
daf43f9d35 - added polyobject serializer.
- added sanity checks to prevent a savegame from being loaded with an incompatible map
- refactored a few things to simplify serialization.
- started work on main level serializer function.
2016-09-20 09:11:13 +02:00
Christoph Oelckers
a5628518c1 - cut down on data size by not saving trivial defaults. 2016-09-18 16:41:34 +02:00
Christoph Oelckers
9313a99e12 - started implementing a JSON based serializer. Unfortunately it is far too slow to be of any real use. 2016-09-18 13:26:34 +02:00
Christoph Oelckers
e04055dbb2 - added multiple message levels for 'developer' CVAR so that the important stuff won't get drowned in pointless notification spam that's of no use to anyone.
- made 'developer' CVAR persist across launches and added some menu entries for it.
- added checks for 'developer' to ACS's CheckInventory function.
2016-08-28 09:55:04 +02:00
Christoph Oelckers
19b65195ea - added an internal compatibility option to disable setting the line ID for the Plane_Align special.
There have been reports for some Skulltag maps a few years back and I just ran across an old beta version of a map that got completely broken by this.
2016-08-09 10:07:06 +02:00
Christoph Oelckers
cebd877191 - fixed the center point calculation for triangular sectors.
The old method does not work as expected with the higher precision of doubles, so instead just average the 3 vertex positions to get the triangle's center.
2016-06-19 11:48:20 +02:00
Christoph Oelckers
b8e392eaa5 - do not try to load empty BEHAVIOR lumps.
These would otherwise print an error message but there's a lot of maps out there which only have an empty entry to mark the map as Hexen format.
2016-06-12 11:45:25 +02:00
Christoph Oelckers
65e1589543 - allow specifying actor classes whose graphics to precache through MAPINFO.
- some reorganization of texture precaching so that the renderer can decide what to do with actors.

Just marking the sprite textures loses too much info if more is needed than just loading the images into memory.
2016-05-01 22:47:36 +02:00
Randy Heit
7d03ed4dc7 Use floating point node bounding boxes 2016-04-30 22:37:02 -05:00
Christoph Oelckers
0f99d7d73f - floatified the few remaining linedef and sector properties that still were fixed_t. The only fixed point things left in r_defs.h are the nodes and a fixed point setter function for vertex_t, which is still needed by the node builder. 2016-04-24 12:15:09 +02:00
Christoph Oelckers
4d4f31fd83 - floatified sidedef texture info and fixed two bugs involving this data. 2016-04-23 09:41:59 +02:00
Christoph Oelckers
54d78df267 - added a new sector list to AActor that collects all portal-linked sectors the actor's center is in. (Inspired by Eternity's solution to the same problem.)
This is for rendering the sprite properly in all areas the actor touches. The original thinglist is not sufficient for this and Boom's touching thinglist has other purposes and collects too much data.
This new list will only get filled in when the actor is actually crossing a portal plane, for the normal sector thinglist will still be used.
This piggybacks on the msecnode_t code which has been extended to be able to handle more than one list by passing the sector's membert pointers as parameters.
2016-04-17 23:48:04 +02:00
Christoph Oelckers
7404142edf - fixed incorrect center point calculation. 2016-04-08 12:51:00 +02:00
Randy Heit
4b10177e46 Make the firelines fudging more "streamlined" 2016-04-06 20:09:42 -05:00
Randy Heit
b796a5fed6 Fixed: segangle is only 16-bits, so AngleToFloat won't work on it directly 2016-04-06 08:45:07 -05:00
Christoph Oelckers
9b5a4b6d43 - removed several unused setter functions for level data structures and fixed some incorrect uses. 2016-04-02 22:05:23 +02:00
Christoph Oelckers
6a150f7248 - fixed seg vertex adjustment (from a commit that wasn't copied to this branch.) and added viewx etc. to a global header . 2016-04-02 20:24:51 +02:00
Christoph Oelckers
3db90ff4c1 - removed all remaining fixed point methods from AActor.
- removed all calls to fixed point vertex access methods in p_setup.cpp.

# Conflicts:
#	src/p_setup.cpp
2016-04-02 20:14:58 +02:00
Christoph Oelckers
60e25b32a8 - floatified the particles.
This is the last bit of play code that needed to be altered, what's left is the underlying data representations of vertices, linedefs and sectors.

# Conflicts:
#	src/p_setup.cpp
#	src/r_things.cpp
2016-04-02 20:12:08 +02:00
Christoph Oelckers
96a02f922d - removed R_PointToAngle2 call in P_Setup.cpp.
- removed long inactive node saving code in p_writemap.cpp. If this file is ever made operational again it will be with UDMF output.
2016-04-02 20:10:25 +02:00
Christoph Oelckers
9412ce45d6 - floatified portals.cpp and most of p_maputl.cpp. 2016-03-31 16:52:25 +02:00
Christoph Oelckers
6b065b8074 - floatified FBoundingBox. 2016-03-31 10:38:54 +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
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
25f5e8449a - replaced all direct access to sector plane coefficients with wrapper functions. 2016-03-29 12:40:41 +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
35bb686281 - floatification of sector_t::centerspot. 2016-03-26 09:38:58 +01:00
Christoph Oelckers
f60eac8dc0 - floatified FMapThing, dropoffz and GetBobOffset 2016-03-23 12:21:52 +01:00
Christoph Oelckers
f8cf4bcf3d - trimmed down the AActor Spawn interface and removed all non-float variants.
This still needs some cleanup in a few calling functions.
2016-03-23 10:42:41 +01:00
Christoph Oelckers
6b3c0ecbd3 - floatified viewheight variables and some related code. 2016-03-22 18:06:08 +01:00
Christoph Oelckers
4e60ea0252 - made AActor::alpha a floating point value
- replaced some uses of FRACUNIT with OPAQUE when it was about translucency.
- simplified some overly complicated translucency multiplications in the SBARINFO code.
2016-03-21 12:18:46 +01:00
Christoph Oelckers
1ff4bb419c - made AActor::gravity and FMapThing::gravity floats. 2016-03-21 00:51:19 +01:00
Christoph Oelckers
161d03231a - added custom math routines for reliability. 2016-03-11 15:45:47 +01:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
047070d180 - made arbitrary portals passable.
This includes:

* allow one sided portal linedefs to be crossable when part of a polyobject. Due to the limitations, two-sided linedefs won't work here. For general use this is still not allowed because making them passable would require some crippling fudging.
* delay portal finalization until after polyobjects have been spawned.
* the camera interpolation also needs to handle angle differences.

The code is still not 100% complete - the most important thing that is still missing is proper handling of P_CheckPosition through arbitrary portals.
2016-02-27 18:07:39 +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
dc37f78566 - fixed: Old portal data must be deleted before loading a new level. 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
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
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
9eaefc3685 - initialize portals with all other static line specials instead of doing it separately in P_FinishLoadingLineDefs when the map isn't fully set up yet.
- replace all float use in portal.cpp with doubles.
2016-02-05 16:58:57 +01:00
Christoph Oelckers
6639984772 - removed Line_SetVisualPortal special. This will be folded into Line_SetPortal later 2016-02-05 14:24:20 +01:00
Braden Obrzut
ba54d73e07 Merge branch 'portals2_visual' 2016-02-05 00:10:46 -05:00
Randy Heit
9744b9e0d9 Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/dobject.h
	src/dobjgc.cpp
	src/p_local.h
	src/thingdef/thingdef_codeptr.cpp
2016-01-21 12:45:06 -06:00
Christoph Oelckers
d347415aee - fixed some garbage collection issues with interpolations:
* FInterpolator depended on external references to prevent its content from getting GC'd.
* none of the pointers in the interpolation objects were declared to the GC.

The result of these issues was that changing anything about the life cycle of interpolation objects caused corrupted memory crashes when a level was changed.
2016-01-21 11:36:37 +01:00
Braden Obrzut
b6cdcddf30 - Fixed: Static mirrors in hexen format maps were broken. 2016-01-18 10:30:56 -05:00
Braden Obrzut
f3f77a1ba0 Merge branch 'master' into portals2_visual 2016-01-18 09:45:42 -05:00
Christoph Oelckers
bf747075e8 Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/g_hexen/a_clericstaff.cpp
	src/p_enemy.cpp
	src/p_interaction.cpp
	src/p_local.h
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
2016-01-17 20:57:55 +01:00
Christoph Oelckers
fbaab5044d Merge commit '38df0665e3a2018cf1d0028a36357df6c7e908e9' into scripting
Conflicts:
	src/d_dehacked.cpp
	src/decallib.cpp
	src/g_hexen/a_clericstaff.cpp
	src/p_interaction.cpp
	src/p_local.h
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/constants.txt
	wadsrc/static/actors/shared/inventory.txt
2016-01-17 19:50:34 +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
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
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
9bfd676783 - allow setting the FloatbobPhase through UDMF. 2015-11-29 11:28:26 +01:00
alexey.lysiuk
27135d5c5d Fixed crash on loading map with corrupt linedefs and/or sectors
See http://forum.zdoom.org/viewtopic.php?t=49276
2015-10-18 16:28:42 +03:00
ZZYZX
d0df4c1744 Upgraded the portal code to work with the new tagManager system. Was uncompilable 2015-06-07 21:27:20 +03:00
Christoph Oelckers
7ba577e1b0 Merge branch 'master' into scripting
Conflicts:
	src/g_heretic/a_hereticweaps.cpp
	src/thingdef/thingdef_codeptr.cpp
2015-06-07 09:43:54 +02:00
Christoph Oelckers
4444d3c0c5 - removed the _3DFLOOR #define because we really do not want to comment this out anymore, right? 2015-06-07 09:41:44 +02:00
ZZYZX
78ea00be59 Put line ID from args[1] for Hexen maps 2015-06-07 04:19:18 +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
1effaa4c8e Merge branch 'master' into scripting 2015-04-29 10:53:37 +02:00
Christoph Oelckers
7d90c65427 - mask out Strife mapthing flags when starting an original Hexen map. 2015-04-29 08:42:54 +02:00
Christoph Oelckers
2e0f999fea Merge branch 'master' into scripting
Conflicts:
	src/p_effect.cpp
	src/p_effect.h
	src/p_local.h
	src/p_map.cpp
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/actor.txt
	wadsrc/static/actors/shared/inventory.txt
	zdoom.vcproj
2015-04-28 14:45:13 +02:00
Christoph Oelckers
8447990889 Merge commit '2719ce86dc07c9f7b1ad6d61a9a49c974896abf2' into scripting
Conflicts:
	src/info.h
	src/thingdef/thingdef_codeptr.cpp

(until right before the main work for multiple tags.)
2015-04-28 13:32:50 +02:00
Christoph Oelckers
ddced06be2 Merge commit '6e45c565a0bc8d05279b0b2458a3fb718ae0924c' into scripting
Conflicts:
	src/p_mobj.cpp

(This stops right before moving the conversation IDs into MAPINFO because that feature is quite conflict-heavy and will have to merged by itself.)
2015-04-28 12:59:20 +02:00
Christoph Oelckers
065c0a79cd Merge commit '4f7ec3ad891d556c0d3f680e209a120ed38e9cdb' into scripting
Conflicts:
	src/d_main.cpp
	src/info.cpp
	src/info.h
	src/p_acs.cpp
	src/p_interaction.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_properties.cpp

(scripting branch update part 5)
2015-04-28 12:48:33 +02:00
Christoph Oelckers
792cad89b3 Merge commit '3849cb86231ce24131a86e9c29795a8cf3706a3d' into scripting
Conflicts:
	src/g_hexen/a_clericstaff.cpp
	src/g_hexen/a_hexenspecialdecs.cpp
	src/p_acs.cpp
	src/p_enemy.cpp
	src/p_interaction.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_expression.cpp

(Scripting branch update part 4)
2015-04-28 11:59:33 +02:00
Christoph Oelckers
d6e3fc0567 Merge commit 'fb9231a38db2025eb77bfd246f36d985cbbccd2e' into scripting
Conflicts:
	src/info.cpp
	src/thingdef/thingdef_expression.cpp
	wadsrc/static/actors/constants.txt

(Scripting branch update part 2)
2015-04-28 09:57:01 +02:00
Christoph Oelckers
cad282142d - fixed some last issues with the tag manager. 2015-04-19 18:22:39 +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
203f88ce6e - some sanitizing of sector tag/line id management:
* make setting the line ID with P_TranslateLineDef explicit because there's one FraggleScript function that needs to work around the changes caused by this. There's also some functions setting only a temporary linedef. These would inevitably cause problems if the underlying data gets changed.
* remove FS function 'ChangeTag'. Fortunately this was just some long forgotten test stuff that can be removed without affecting any maps, but the feature would cause some serious problems in a more complex system.

With these changes it is guaranteed that after map setup the tag/ids won't change anymore.
2015-04-15 20:10:27 +02:00
Christoph Oelckers
902593198b - wrapped all line ID accesss just like sector tags 2015-04-15 09:37:06 +02:00