Maggio 2020
-
Add the oangdiff field to USER struct as suggested by Hendricks,
Mostra dettagli
and use it in MovePoints. This will be used for interpolating the angles of sprites carried by SOs soon.
-
Interpolate the player's bob_z, based on suggestion by Striker.
Mostra dettagli
Using pp instead of ppp seems to work better with prediction.
-
Generale
sw/src/network.cpp: Disable most of the packet transmission
Mostra dettagli
debug messages unless NET_DEBUG_MSGS is defined
-
Generale
sw/src/draw.cpp: Import from Duke3D the Polymost shadow drawing hacks
-
Generale
sw/src/network.cpp: Fix waitforeverybody in Master/Slave
Mostra dettagli
modes. This uses SVN r1135 and r1143 as a reference.
-
Generale
sw/src/network.cpp: Fix sending of messages in Master/Slave.
Mostra dettagli
Thanks Dynamo for spotting the bug.
-
Generale
sw/src/draw.cpp:analyzesprites: Interpolate other players' sprites, in a
Mostra dettagli
similar manner to what's done in Duke3D (with the addition of the angle). There seem to be some jitters with this, mostly in Master/Slave mode. Decreasing PAKRATE in mmulti.cpp might also increase the frequency of this occuring in Peer-2-Peer mode.
-
Generale
sw/src/jsector.cpp:JS_DrawMirrors: Make camera oscilation
Mostra dettagli
less dependent on the frame rate. It would probably be better to update this from the game loop side, like in Duke3D, but it's still better than the preceding situation.
-
Q16.16 refinements in DoPlayerDeathFollowKiller.
-
Add GetDeltaQ16Angle.
-
Generale
Add PedanticQ16AngleFloor to sw/src/game.h and use it in DoPlayerTurn
-
Remove drive_oangvel from PLAYERstruct. We can use local variables instead.
-
Generale
SW - Hopefully a better way to decide if getinput should call
Mostra dettagli
DoPlayerTurn/DoPlayerHorizon while input is tied to the frame rate: Introduce the new player flags PF2_INPUT_CAN_TURN and PF2_INPUT_CAN_AIM. Set PF2_INPUT_CAN_TURN if DoPlayerTurn can be called outside of getinput. Similarly set PF2_INPUT_CAN_AIM if DoPlayerHorizon can be called in this manner. getinput will only call DoPlayerTurn/DoPlayerHorizon if PF2_INPUT_CAN_TURN/PF2_INPUT_CAN_AIM is set. These flags are reset right before the call to the player's current DoPlayerAction function. For one example in which this assists, it's not always the case that DoPlayerDeathFollowKiller may call DoPlayerTurn, even if we assume that pp->input.q16angvel is never zero.
-
Temporarily lock angle and horiz right upon player death
-
Generale
sw/src/draw.cpp:drawscreen: Don't interpolate while the game is paused
-
Generale
sw/src/game.cpp: Remove unused ReloadPromptMode variable
-
Generale
Minor SW cleanup: Have a single declaration of
Mostra dettagli
GamePaused within game.h. Do the same with ReloadPrompt.
-
Migrate the player's RevolveAng field to Q16.16 format.
Mostra dettagli
This fixes truncations of q16ang in MovePlayer. One known fixed issue is a minor micro-shaking effect, reproduced while standing on a non-moving SO (e.g., the bus in level 1). The latter is also related to the use of camq16ang. Based in idea on patch from mjr4077au.
-
Generale
sw/src/draw.cpp:drawscreen: Use GetQ16AngleFromVect for pointing
Mostra dettagli
at a remote-controlled SO. In case PedanticMode == FALSE, this leads to small improvements with aiming at the car in EXAMPLE.MAP.
-
Generale
Add GetQ16AngleFromVect wrapper function to sw/src/game.h
-
Generale
Add gethiq16angle and the getq16angle wrapper to the engine
-
Lock angle and horiz right after teleporting to sprite
-
Generale
sw/src/draw.cpp:drawscreen: Removing the check that pp->sop_control
Mostra dettagli
is non-null seems to resolve the newly introduced interpolation issue for looking up/down while controlling a sector object. We can also remove the PF_DEAD test, since game.cpp:getinput should lock any kind of aiming. src/src/game.cpp:getinput: We now, however, need to further lock turning here while controlling a sector object.
-
Ensure the player's rendering angle is in sync with a rotating
Mostra dettagli
sector. This re-introduces the angle interpolation in drawscreen while sector object interpolation is in use. A side-effect of this is that looking up/down is now less smooth while controlling a sector object (e.g., a turret).
-
Generale
sw/src/track.cpp:MovePlayer: We also need to update pp->camq16ang here.
Mostra dettagli
Note that this angle is currently not interpolated, as done for the sector.
-
Generale
sw/src/track.cpp:MovePlayer: Missed this in preceding interpolation fixes
-
Generale
sw/src/track.cpp: If interpolation is enabled, also cover
Mostra dettagli
the SO's midpoint. Fixes aiming at a remote controlled SO.
-
fix buffer overflow crash
-
block horiz input while the player view is returning to center
-
Disable dead code in implementation of undocumented SE 128
Mostra dettagli
Avoids warning: bitwise or with non-zero value always evaluates to true [-Wtautological-bitwise-compare]
-
Fix redundant sqr/ksqr functions
-
Fix -Wformat warnings
-
Generale
Link with -pthread when building with clang on Windows
-
Add FIXMATH_FUNC_ATTRS to relevant function definitions
Mostra dettagli
Avoids warning: missing exception specification [-Wmissing-exception-spec]
-
Change TEXT_* from enums to #defines
Mostra dettagli
Avoids warning: bitwise operation between different enumeration types is deprecated [-Wdeprecated-enum-enum-conversion]
-
Move ENET_PROTOCOL_COMMAND_FLAG_* to ENetProtocolCommand
Mostra dettagli
Avoids warning: bitwise operation between different enumeration types is deprecated [-Wdeprecated-enum-enum-conversion]
-
Generale
debugbreak.h: Use FORCE_INLINE macro instead of attributes
Mostra dettagli
Avoids warning: 'gnu_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10 [-Wgnu-inline-cpp-without-extern]
-
Avoid C++20 -Wvolatile warning
-
Generale
Replace deprecated is_pod with is_standard_layout && is_trivial
-
Generale
compat.h: Add CXXSTD definition for C++20
-
Generale
Remove GitLab CI/CD configuration
Mostra dettagli
Synthesis builds are now kicked off with a post-commit hook.
-
remove LIBXMP_CORE_DISABLE_IT preprocessor definition
Mostra dettagli
This seems to fix memory corruption issues with .xm playback... ???
-
Generale
engine, audiolib: clean up most SDL_MAJOR_VERSION checks so they're relative to version 2
-
comment the reason SetWindowGrab exists
-
Generale
Fix trains not moving spawn points with higher indexes than player count.
-
use timerGetPerformanceCounter() instead of timerGetHiTicks() for CON performance profiling
-
move gameHandleEvents() (and therefore system event pumping) back to directly in the main loop
Mostra dettagli
I'm hoping this is OK now that the issues with SDL and GetClipCursor() have been worked around.
-
bypass SDL_SetWindowGrab on Windows
-
make CON_GETFLORZOFSLOPE and CON_GETCEILZOFSLOPE TROR aware
-
add yax_getflorzofslope() and yax_getceilzofslope()