Commit graph

756 commits

Author SHA1 Message Date
hendricks266
9991201f04 Fix a typo in loadpalette that broke reading of the lognumalphatabs byte.
git-svn-id: https://svn.eduke32.com/eduke32@5370 1a8010ca-5511-0410-912e-c29ae57300e0
2015-10-03 11:53:02 +00:00
hendricks266
5c09daf294 Add forgotten newlines to error messages in loadpalette().
git-svn-id: https://svn.eduke32.com/eduke32@5369 1a8010ca-5511-0410-912e-c29ae57300e0
2015-10-03 11:52:59 +00:00
hendricks266
8437d22bf2 Before aliasing empty palookups to #0, check existing ones if they are identical to #0, and if so, also alias them. This saves memory in Polymost with tileshades enabled.
git-svn-id: https://svn.eduke32.com/eduke32@5368 1a8010ca-5511-0410-912e-c29ae57300e0
2015-10-03 11:52:56 +00:00
hendricks266
cac05f8305 Defs: Add "undef" subtokens to and undef-range versions of basepalette, palookup, and blendtable.
git-svn-id: https://svn.eduke32.com/eduke32@5367 1a8010ca-5511-0410-912e-c29ae57300e0
2015-10-03 11:52:51 +00:00
hendricks266
8f3ee25ae0 Fix error in r5346 that broke the MoreBlendTab section of PALETTE.DAT.
git-svn-id: https://svn.eduke32.com/eduke32@5365 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-27 21:18:21 +00:00
hendricks266
ff416551ce Split the initialization of the pragma.h's libdivide tables into its own function.
git-svn-id: https://svn.eduke32.com/eduke32@5362 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-27 21:18:12 +00:00
hendricks266
5f2b662c77 Split the getclosestcol functions into a new object, colmatch.
git-svn-id: https://svn.eduke32.com/eduke32@5359 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-27 21:17:59 +00:00
hendricks266
a557eedf7e Remove NULL checks before calling free(): they are unnecessary as per the C standard. Other cleanup includes factoring code into DO_FREE_AND_NULL() macros.
git-svn-id: https://svn.eduke32.com/eduke32@5352 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:55:31 +00:00
hendricks266
1ca367960f Defs: Add basepalette, palookup, and blendtable tokens.
git-svn-id: https://svn.eduke32.com/eduke32@5351 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:55:19 +00:00
hendricks266
064461a06f Internally, work with 24-bit palettes instead of 18-bit.
git-svn-id: https://svn.eduke32.com/eduke32@5349 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:55:11 +00:00
hendricks266
c0e7dba4c1 Restructure the basepaltable subsystem to support up to 256 palettes and use dynamic allocation like palookup and blendtable.
git-svn-id: https://svn.eduke32.com/eduke32@5348 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:55:02 +00:00
hendricks266
2a237a3d72 Don't error out when lookup.dat can't be read.
git-svn-id: https://svn.eduke32.com/eduke32@5347 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:54:55 +00:00
hendricks266
ce7a20d4f2 Restructure loadpalette() so that read errors are not immediately fatal and enforce that the necessary parts have been loaded in E_PostInit (after loaddefinitionsfile()).
git-svn-id: https://svn.eduke32.com/eduke32@5346 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:54:50 +00:00
hendricks266
43459780af Engine: Add E_PostInit, called from the game after loaddefinitionsfile().
git-svn-id: https://svn.eduke32.com/eduke32@5345 1a8010ca-5511-0410-912e-c29ae57300e0
2015-09-23 17:54:42 +00:00
helixhorned
b408cb641c engine.c: use swapptr() instead of swaplong() in two cases in drawmasks().
git-svn-id: https://svn.eduke32.com/eduke32@5315 1a8010ca-5511-0410-912e-c29ae57300e0
2015-08-02 08:40:39 +00:00
helixhorned
2aa732128f Polymost: don't redundantly adjust globalcursectnum in polymost_drawrooms().
See r5024 and the added comment.

git-svn-id: https://svn.eduke32.com/eduke32@5314 1a8010ca-5511-0410-912e-c29ae57300e0
2015-08-01 08:41:14 +00:00
helixhorned
c9949f53a3 engine: fix unbalanced begindrawing()/enddrawing() pair in printext16().
git-svn-id: https://svn.eduke32.com/eduke32@5310 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-25 17:23:20 +00:00
helixhorned
73ca265137 Fix various, but not all warnings.
Except:
 - missing braces around initializer [-Wmissing-braces]: due to union-in-struct
   vec3f_t
 - comparison between signed and unsigned integer expressions [-Wsign-compare]:
   in polymer.c

git-svn-id: https://svn.eduke32.com/eduke32@5309 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-25 17:23:17 +00:00
terminx
6f9a9c94ec Mapster32: fix frame locking issue with 2d3d mode, crash when toggling bottom texture swap, issues with drawing certain types of walls.
git-svn-id: https://svn.eduke32.com/eduke32@5307 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-22 02:06:23 +00:00
terminx
9cf3e19d61 Mapster32: fix display of pal 4 sprites in 2d mode.
git-svn-id: https://svn.eduke32.com/eduke32@5306 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-20 20:25:32 +00:00
terminx
480dc0ecaf Mapster32:
-Improved indication of selections in 2d mode. This includes both highlighted objects and multiple object selection.
-2d3d improvements: it's no longer possible to end up with a black view due to the z position being out of range when moving the cursor position to a new area with the right mouse button.
-The middle mouse button can now be used in place of the right alt key when selecting sectors, similar to how the left mouse button can be used in place of the right shift key to select points and sprites.
-2d mode mouse cursor has been changed to a 1 pixel thick red cross with a shadow instead of a 2 pixel thick red cross with no shadow. This improves visibility when working in textured mode with lava sectors and other textures similar in color.
-2d mode palette now changes when working in an underwater sector.
-Misc tweaks

git-svn-id: https://svn.eduke32.com/eduke32@5302 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-17 00:12:48 +00:00
terminx
e676b04687 Engine: misc cleanups, support for drawing transparent lines in 2d mode. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@5300 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-17 00:12:40 +00:00
terminx
868afddbc3 Mapster32: further 2d mode performance improvements. Sprites are also now displayed with their xrepeat and yrepeat taken into account. It's not perfect yet... needs more "jiggery-pokery"
git-svn-id: https://svn.eduke32.com/eduke32@5293 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-11 23:07:47 +00:00
helixhorned
e20e6584d6 Mapster32: fix two "variable may be used uninitialized" warnings.
I didn't produce a case when this could actually have happened, but
reading the code, in the case of variable 'j' it seems possible with
an empty map.

git-svn-id: https://svn.eduke32.com/eduke32@5292 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-11 17:06:30 +00:00
terminx
21e9125f2d Mapster32: 2d mode performance improvements
git-svn-id: https://svn.eduke32.com/eduke32@5290 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-10 21:19:41 +00:00
terminx
253f0b8771 Mapster32: improve 2d mode sprite label display. I want to test this further, so this is marked as DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@5289 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-10 07:56:48 +00:00
terminx
9d1503ac12 Mapster32: fix 3d picture-in-picture when editing a map with TROR.
git-svn-id: https://svn.eduke32.com/eduke32@5286 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-10 07:56:35 +00:00
terminx
3ff2e2155c A couple of Mapster32 tweaks to play nicer with different palettes.
git-svn-id: https://svn.eduke32.com/eduke32@5284 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-09 05:58:00 +00:00
terminx
ff466191cb Address complaints from the "Mapster32 problems and bugs" thread.
git-svn-id: https://svn.eduke32.com/eduke32@5283 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-09 03:55:24 +00:00
terminx
f72dffce07 Mapster32 changes:
-2d mode sprite colors are now automatically generated from the sprite's 8-bit tile.
-Zooming in and out has been smoothed out.
-The 2d mode crosshair cursor is now 1px thick instead of 2.
-The left mouse button can now be used to select multiple wall points and sprites in 2d mode.
-Ctrl-x now skips corrupt maps instead of going into an infinite loop. ;)
-'-L function in 3d mode works again.
-Sprites with a clipdist that has been changed from the default value of 32 will display a circular approximation of the distance in 2d mode. Note that the real clipping distance is actually closer to a square, but a circle looks much less confusing/stupid alongside the display of floor sprites.
-2d mode status bar has been made a few shades lighter.

git-svn-id: https://svn.eduke32.com/eduke32@5282 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-08 03:34:46 +00:00
terminx
86f94d2897 New experimental Mapster32 hybrid 2D/3D mode feature. Pressing F10 in 2D mode enables a picture-in-picture 3D view in the corner of the screen. When moving the mouse over the 3D view, the controls change to 3D mode controls and all 3D mode operations can be performed. The 3D view can be resized with shift + F10 and can be moved to different positions by holding CTRL and using the arrow keys.
This commit also implements a much more useful automatic grid sizing feature and smooths out zooming in and out of the map.

git-svn-id: https://svn.eduke32.com/eduke32@5281 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-08 03:34:42 +00:00
terminx
d47187a92d Enable sector drawing and textured map in Mapster32 sideview mode with a sideview elevation of 512 (straight up and down).
git-svn-id: https://svn.eduke32.com/eduke32@5278 1a8010ca-5511-0410-912e-c29ae57300e0
2015-07-08 03:34:31 +00:00
Plagman
684da706f0 Fix automap lines in Polymer mode
git-svn-id: https://svn.eduke32.com/eduke32@5267 1a8010ca-5511-0410-912e-c29ae57300e0
2015-06-14 23:42:52 +00:00
terminx
7c139646ca Fix clipshapes, accidentally broken in my vec2_t rotatepoint commit.
git-svn-id: https://svn.eduke32.com/eduke32@5261 1a8010ca-5511-0410-912e-c29ae57300e0
2015-06-04 00:04:00 +00:00
hendricks266
de28d574ec Define the formerly nonsensical combination of orientation bits 256 and 512 to mean "automatically zoom the tile so that the 320x200 coordinate system is vert-minus widescreen instead of horiz-plus".
git-svn-id: https://svn.eduke32.com/eduke32@5258 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-27 08:48:22 +00:00
hendricks266
f33887b2f8 Convert multi-psky handling to use dynamically-allocated arrays.
git-svn-id: https://svn.eduke32.com/eduke32@5255 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-27 08:47:34 +00:00
hendricks266
410406158a Re-expose kpzbufsiz and set it to zero in uninitengine, preventing potential crashes from successive re-initializations of the engine.
git-svn-id: https://svn.eduke32.com/eduke32@5254 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-27 08:47:03 +00:00
terminx
54d016902f vec2_t rotatesprite, take 2
git-svn-id: https://svn.eduke32.com/eduke32@5239 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-26 00:47:54 +00:00
helixhorned
1d11b6fdd6 Free alloc'd anims in h_dukeanim. Adds a function hash_loop().
git-svn-id: https://svn.eduke32.com/eduke32@5234 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-25 12:57:49 +00:00
hendricks266
7a89c58360 Re-expose clipmoveboxtracenum.
git-svn-id: https://svn.eduke32.com/eduke32@5229 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-19 22:11:02 +00:00
hendricks266
93d6d61180 SW: Parallaxed skies.
git-svn-id: https://svn.eduke32.com/eduke32@5211 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-19 22:05:20 +00:00
hendricks266
a979fa95a3 Merge glbuild_android into glbuild. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@5189 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-16 09:12:12 +00:00
hendricks266
416ccc076c Restructure and expand some ART loading functionality in the engine.
git-svn-id: https://svn.eduke32.com/eduke32@5177 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-03 07:04:49 +00:00
hendricks266
f7c187875c Defs: Factor out dummytile creation code into E_CreateDummyTile and account for the case when a dummytile may be overwriting a faketile from tilefromtexture.
git-svn-id: https://svn.eduke32.com/eduke32@5176 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-03 07:04:31 +00:00
hendricks266
40c704babe Separate kpzload into two separate functions, kpzbufload (which now lives in cache1d, regardless of WITHKPLIB) and kpzdecode.
git-svn-id: https://svn.eduke32.com/eduke32@5175 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-03 07:04:11 +00:00
hendricks266
b3639ae8e7 Replace most instances of casting byte arrays to wider integral types with the B_(UN)BUF functions in compat.h that were previously used only in the netcode.
I have commented out the versions of these functions that perform bitmasks and shifts and replaced them with versions that cast to and from integral types, pending performance and compatibility research across platforms.

git-svn-id: https://svn.eduke32.com/eduke32@5174 1a8010ca-5511-0410-912e-c29ae57300e0
2015-05-03 07:03:48 +00:00
helixhorned
5ae6253a30 Savegame: for non-user level, don't write garbage into h.boardfn, allow per-map ART.
git-svn-id: https://svn.eduke32.com/eduke32@5160 1a8010ca-5511-0410-912e-c29ae57300e0
2015-04-20 20:46:42 +00:00
terminx
53d2e0939e Revert "vec2_t rotatepoint()."
This reverts commit b0eeef385aecf9cea3ec2bd0ee82f59982942ce0.

git-svn-id: https://svn.eduke32.com/eduke32@5154 1a8010ca-5511-0410-912e-c29ae57300e0
2015-04-18 21:49:36 +00:00
terminx
ce5260e235 vec2_t rotatepoint().
git-svn-id: https://svn.eduke32.com/eduke32@5150 1a8010ca-5511-0410-912e-c29ae57300e0
2015-04-18 21:37:01 +00:00
hendricks266
9a8941ef41 Defs: Add "copytile" token that allows you to copy existing 8-bit tiles from one slot to another, along with their x/yoffsets and flags. ART animation values are not copied.
Examples: (assuming stock Duke palswaps)
copytile 10000 { tile 0 } // tile #10000 is now the same as #0
copytile 10001 { tile 1 pal 8 } // tile #10001 is now #1 with a full-green tint
copytile 0 { pal 1 pal 23 } // tile #0 now has a full-yellow tint

git-svn-id: https://svn.eduke32.com/eduke32@5139 1a8010ca-5511-0410-912e-c29ae57300e0
2015-04-12 08:07:30 +00:00
hendricks266
f15199cb79 Instead of keeping the entire contents of ART files loaded from within zips in memory, assimilate them into tilefromtexture's compressed faketiledata.
This involves some refactoring.

git-svn-id: https://svn.eduke32.com/eduke32@5138 1a8010ca-5511-0410-912e-c29ae57300e0
2015-04-12 08:07:10 +00:00
hendricks266
5c69ae7d11 Allow alpha fade-out for quotes and the menu mouse cursor in 8-bit when the supplied PALETTE.DAT has enough alpha tables to fully display each effect.
git-svn-id: https://svn.eduke32.com/eduke32@5124 1a8010ca-5511-0410-912e-c29ae57300e0
2015-04-09 07:51:48 +00:00
terminx
9cb68410a0 Engine memory reductions/optimizations:
-faketilesiz[MAXTILES] removed in favor of simple faketile[(MAXTILES+7)>>3] bitfield
-h_xsize/h_ysize (tile size overrides from .def) are now uint16_t instead of int32_t
-hudmem[2][MAXTILES] removed in favor of adding a hudmem ptr to mdmodel_t
-tilefromtexture performance improvements
-more tsectortype/twalltype usage in various engine functions that read but never write
-continued Polymost cleanups and refactors. Please report any odd rendering errors.

git-svn-id: https://svn.eduke32.com/eduke32@5079 1a8010ca-5511-0410-912e-c29ae57300e0
2015-03-24 00:40:48 +00:00
terminx
8cc2cd8585 Minor stylistic changes, fix FPS counter and other 2D drawing in Polymer.
git-svn-id: https://svn.eduke32.com/eduke32@5071 1a8010ca-5511-0410-912e-c29ae57300e0
2015-03-24 00:40:18 +00:00
hendricks266
97025d9fc7 Add "globalflags" def token. Flag 1 is a kill switch for the tileshades and artmapping features. Flag 2 is kill switch for the GL fullbright rendering pass.
git-svn-id: https://svn.eduke32.com/eduke32@5056 1a8010ca-5511-0410-912e-c29ae57300e0
2015-03-09 20:32:36 +00:00
hendricks266
1f93451ea0 Partially revert r5020. It's okay to update totalclocklock in G_DrawRooms(), but we must continue updating it in drawrooms() so as to not break the editor and every other BUILD game.
¿Por qué no los dos?

git-svn-id: https://svn.eduke32.com/eduke32@5051 1a8010ca-5511-0410-912e-c29ae57300e0
2015-03-08 23:39:51 +00:00
helixhorned
3ecc8a6962 engine.c: style-cleanup getzrange(). DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@5035 1a8010ca-5511-0410-912e-c29ae57300e0
2015-03-01 14:15:36 +00:00
helixhorned
b1347517ee Classic/Polymost: factor out update of starting sectnum, use updatesectorbreadth().
The latter means that running perpendicular thin sector is handled better
if there are e.g. TROR sectors in the same x/y space.

git-svn-id: https://svn.eduke32.com/eduke32@5024 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-22 12:43:02 +00:00
helixhorned
850206ef62 Stick update of 'totalclocklock' at beginning of G_DrawRooms() instead of drawrooms().
This fixes engine-side sprite animation in the following scenario: CON code
wants to draw a scene from EVENT_DISPLAYREST, but since it covers the whole
screen, disables the drawing of the 3D scene beforehand (RETURN set to 1 from
EVENT_DISPLAYROOMS). DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@5020 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-19 22:19:05 +00:00
helixhorned
a1a79b001e Under conditions of CLASSIC_Z_DIFF_64 (r4960), make some drawvox() vars 64-bit.
- In drawvox(), make view-relative x and y high-precision on desktops. To a
  large extent (but not completely), this fixes "stray" fake floor shadow
  sprites for voxels.
- In the mouse picking code for voxels, fix a possible integer overflow.
  A new engine.c-private function mulscale_triple30() is added.

DONT_BUILD.

git-svn-id: https://svn.eduke32.com/eduke32@5017 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-19 17:41:53 +00:00
terminx
139276e6fe Polymost changes to better support running under GL ES. Still need to investigate GL_LINES and GL_QUADS... neither work under either GL -> GL ES wrapper we've tried, so we must be doing something wrong.
git-svn-id: https://svn.eduke32.com/eduke32@5001 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-11 05:23:04 +00:00
terminx
cb2dcdc99e Minor engine cleanup
git-svn-id: https://svn.eduke32.com/eduke32@4984 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-11 05:21:53 +00:00
terminx
88e0bfd7d3 More twalltype
git-svn-id: https://svn.eduke32.com/eduke32@4981 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-11 05:21:38 +00:00
hendricks266
b980ca7b0b Engine: Remove some conditional disabling of spriteext features when !defined USE_OPENGL.
git-svn-id: https://svn.eduke32.com/eduke32@4971 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-08 08:04:23 +00:00
helixhorned
a7bea4f6bc Classic: fix underallocation of TILE_TILT and tilting at very small resolutions.
Since TILE_TILT is only allocated once, it must be done with the maximum
possible size.

git-svn-id: https://svn.eduke32.com/eduke32@4965 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-07 17:29:15 +00:00
helixhorned
952a723229 Make g_player a +1 offset pointer into 'static g_player_s[1 + MAXPLAYER]'.
This fixes the out-of-bounds read of former g_player[] in VM_EventCommon_().

git-svn-id: https://svn.eduke32.com/eduke32@4961 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-07 17:29:11 +00:00
helixhorned
c3ddf08fd1 Classic: on desktops, handle abs. z diff. of floor/ceiling to camera >= 1<<24.
git-svn-id: https://svn.eduke32.com/eduke32@4960 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-07 17:29:10 +00:00
helixhorned
d95aaa5da5 engine.c: style-cleanup owallmost() and wallmost(). DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4959 1a8010ca-5511-0410-912e-c29ae57300e0
2015-02-07 17:29:08 +00:00
helixhorned
038bc1517b engine.c: in qsetmodeany(), call initsmost() after setting xdim and ydim.
This makes sure that the engine arrays have sufficient space allocated for usage
in Mapster32's 2D mode, for example from drawmapview().


git-svn-id: https://svn.eduke32.com/eduke32@4938 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-19 01:54:53 +00:00
helixhorned
ace6087f7b Classic: fix "windowed" modes (r_size >= 12) by reverting r4920; adapt.
In setview(), we now assert windowx2 < xdim. The only calling places where its
non-violation is non-trivial to ascertain are (1) showview from CON and
(2) draw-to-tile for look-sideways in game.c. AFAICS case 1 should be fine.
Case 2 is adapted; see comments there.


git-svn-id: https://svn.eduke32.com/eduke32@4935 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-18 23:16:37 +00:00
helixhorned
3a433130bb Fix bsearch() call for user G_LoadMapHack(): don't access nonexistent storage. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4933 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-18 20:31:37 +00:00
helixhorned
03be585ff7 engine.c: fix memory leak. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4931 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-18 20:22:25 +00:00
hendricks266
86e7a97ef7 Fix a crash exposed by animating the menu back button.
git-svn-id: https://svn.eduke32.com/eduke32@4927 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-17 00:27:46 +00:00
terminx
0b1582185e Fix off-by-one error in setview()
git-svn-id: https://svn.eduke32.com/eduke32@4920 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-15 06:45:21 +00:00
terminx
419ea3ed40 Polymost: fix wall and floor sprites clipping into or z-fighting with surfaces (replaces glDepthRange() hacks for sprites), add r_nofog cvar for debugging, reduce the total number of OpenGL calls by only calling glFogi() to set the fog mode when initializing the renderer or changing r_usenewshading.
git-svn-id: https://svn.eduke32.com/eduke32@4904 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:56:58 +00:00
terminx
43161e1fd8 Fix distrecip calculation
git-svn-id: https://svn.eduke32.com/eduke32@4899 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:55:23 +00:00
terminx
4911b9a949 Revise C++ structure trackers for performance and introduce "tspritetype", for temporary sprites or other usages where using the trackers would be invalid or undesired. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4898 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:55:07 +00:00
terminx
c591711fe8 MSVC C++ build fixes. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4890 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-11 04:52:15 +00:00
hendricks266
589c993c39 Implement UserMapHacks.
git-svn-id: https://svn.eduke32.com/eduke32@4884 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-08 15:14:00 +00:00
helixhorned
26683d5bfe engine.c: fix clipmove() against upper part of wall-aligned sprites.
git-svn-id: https://svn.eduke32.com/eduke32@4882 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-06 20:54:49 +00:00
helixhorned
5c4f9b1f14 engine.c: on non-touch devices, roughly double maximum voxel drawing distance.
By setting DISTRECIPSIZ to 131072, as far as I can see the absolute maximum
that's possible with the integer scaling convention of the voxel drawing code.

BUILD_LUNATIC.

git-svn-id: https://svn.eduke32.com/eduke32@4881 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-06 19:56:44 +00:00
helixhorned
431941771d engine.c: prevent multiple collection of same sector in scansector().
Also for polymost_scansector(). These were likely of little consequence
because collection in scansector() is the exception than the rule (see
added comments), and because the redundant drawwalls() would find the
x range done the second and following times.

Also, add a bound check for sectorborder[] (the limit was probably rarely
hit in practice, but the check is mandatory nontheless) and add functions
printscans() and printbunches() in the DEBUGGINGAIDS=2 build.

git-svn-id: https://svn.eduke32.com/eduke32@4877 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-04 18:45:03 +00:00
helixhorned
bc35a5c8d2 engine.c: in drawmasks(), remove sorting sprites by statnum.
There were various issues with that code.
 - It does not seem to be very meaningful to do so.
 - It was carried out on the same range as the sprites sorted by z coordinate
   (those with equal x/y) just a few lines away, effectively overriding it.
   The former is very meaningful, though.
 - It led to inconsistencies between editor and game, see
   http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__214873

git-svn-id: https://svn.eduke32.com/eduke32@4876 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-04 18:45:01 +00:00
helixhorned
17fab4d8ac Cleanup of various engine functions.
- factor out calculation of player-relative and screen+clipped-player-relative
  coordinates into get_rel_coords() and get_screen_coords(), respectively
- the usual beautification stuff, especially since we're now on C99

git-svn-id: https://svn.eduke32.com/eduke32@4875 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-04 18:45:00 +00:00
helixhorned
b0c48eec25 CON: always return non-negative values from 'clipmove' and related.
Previously, the C function clipmove() returned negative values when hit a
wall (32768+wallnum) or sprite (49152+spritenum) because internally,
these values were encoded into a *signed* 16-bit integer. This made no
difference to C code using it, since it always proceeded by bit checks,
but was inconsistent with documentation on CON 'clipmove' on the wiki.

The following commands are affected too, since they use the value returned
by clipmove(): 'clipmovenoslide', 'movesprite'. Also, the value of
actor[].movflag ('htmovflag' from CON).

Also, fix 'clipmove*' in LunaCON and add lunatic/test/checknearwall.con
as an example of how to implement a being-close-to-a-wall checker as
requested in
http://forums.duke4.net/topic/7869-determining-closeness-to-a-wall/

git-svn-id: https://svn.eduke32.com/eduke32@4874 1a8010ca-5511-0410-912e-c29ae57300e0
2015-01-04 18:44:58 +00:00
helixhorned
2daa44ca6a engine.c: fix clipmove() against floor-aligned sprites.
Introduced in r3207. Oops.

git-svn-id: https://svn.eduke32.com/eduke32@4873 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-30 20:05:22 +00:00
helixhorned
5f263f1358 engine.c: prevent an oob read of spriteext[] in drawsprite_classic().
git-svn-id: https://svn.eduke32.com/eduke32@4872 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-30 20:05:20 +00:00
helixhorned
7033205fcf Menus: disable mouse pointer if CROSSHAIR is void. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4862 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-28 19:48:20 +00:00
helixhorned
33addad941 Minor cleanup, mostly in engine.c:drawalls().
git-svn-id: https://svn.eduke32.com/eduke32@4846 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-27 17:17:50 +00:00
helixhorned
843894dd57 engine.c: clamp all indices for distrecip[] access, as more OOBs were observed.
git-svn-id: https://svn.eduke32.com/eduke32@4842 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:59 +00:00
helixhorned
584ed7982a Convert voxels to models only when starting or changing to Polymost.
Analogously to the way models are processed in a deferred manner for Polymer.

git-svn-id: https://svn.eduke32.com/eduke32@4836 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:53 +00:00
helixhorned
bd93fd2aab A couple of miscellaneous cleanups.
defs.c: sync some dup'd code for 'definevoxel' and 'voxel' DEF tokens.
engine.c: factor out PolymerProcessModels().

git-svn-id: https://svn.eduke32.com/eduke32@4835 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:52 +00:00
helixhorned
3a6bcdc102 engine.c: style-cleanup drawvox(). Also clean up ALL of voxmodel.c.
No deliberate semantic changes here.

git-svn-id: https://svn.eduke32.com/eduke32@4834 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-26 17:29:48 +00:00
helixhorned
b716534104 Lunatic: sync MAXJOYAXES, add lunatic/test/sprite_addtv.con. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4829 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-20 13:08:27 +00:00
helixhorned
50a5e38cb6 Pull setting g_noFloorPal[] further down, into makepalookup().
Now passed as last arg 'noFloorPal' to makepalookup(). Used as follows:
- from loadlookups(): *false*, i.e. do take over floor pal.
- from generatefogpals() [default fog pals] and fillemptylookups(): *true*,
  i.e. don't take over floor pal
- from DEF 'fogpal': true
- from DEF 'makepalookup': take over flag from pal from which we are remapping,
  or set to true if remapping from pal 0
- (CROSSHAIR_PAL: true)

This should make the issue reported in
 http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__197583
resolve in a natural manner.

git-svn-id: https://svn.eduke32.com/eduke32@4812 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-13 22:33:05 +00:00
helixhorned
70cbde87eb Move g_noFloorPal[] to the engine side and adapt other stuff accordingly.
- 'nofloorpalrange' DEF token: now handled for both game and editor (for the
  latter, it's effective only for "shade preview" mode, [']+[X]).
- in generatefogpals(), assign g_noFloorPal[] = 1 for every generated (default)
  fog pal; get rid of its return value / g_firstFogPal

git-svn-id: https://svn.eduke32.com/eduke32@4811 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-13 22:33:04 +00:00
helixhorned
c9943bcde0 engine.c: prevent an oob access of uwall[] in ceilspritescan().
git-svn-id: https://svn.eduke32.com/eduke32@4810 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-13 22:33:02 +00:00
helixhorned
be06b43347 engine.c: style tweaks (tighter var. declaration) in sprite drawing functions.
git-svn-id: https://svn.eduke32.com/eduke32@4809 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-13 22:32:57 +00:00
helixhorned
5e574436e2 engine.c: minor stylistic changes. DONT_BUILD.
Since we're targeting C99/C++ now, we can finally declare variables as close
to their use as possible.

git-svn-id: https://svn.eduke32.com/eduke32@4797 1a8010ca-5511-0410-912e-c29ae57300e0
2014-12-05 23:12:36 +00:00
hendricks266
4e664fe878 Some minor fixes. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4768 1a8010ca-5511-0410-912e-c29ae57300e0
2014-11-28 08:14:00 +00:00