* Convert axes in ControlInfo struct from int32_t to float as what's received from the backend.
* Remove all the scale up/down math since we don't need that with floats and replace with float constants that match old behaviour.
* Store q16mlook scaling as a constant for use with mouse and upcoming controller code.
* Add required controller code to Blood as the only game not to have working controllers.
* Fix typos in (gInput.forward > input.forward) for `ctrlGetInput()` in Blood.
* Remove use of `scaleAdjustmentToInterval()` on Exhumed and Shadow Warrior as they only process forward/side velocities within the game's ticrate.
* Repair angvel/aimvel scaling mistakes from d79a5d256d.
* Scale dyaw and dpitch by 25% for Shadow Warrior as the game runs 25% faster than the other games, leading to faster input.
(e.g., beginning to jump, or landing on ground);
Reproduced with the input being tied to framerate
while SO interpolation is toggled on.
This involves the following modifications:
- PF2_INPUT_CAN_TURN and PF2_INPUT_CAN_AIM are now additionally set
from various DoPlayerBegin* functions, allowing the player to continue
turning/aiming as usual (right before the next call to domovethings),
even in specific instances of player action changes.
- If PF2_INPUT_CAN_TURN/PF2_INPUT_CAN_AIM was set before and
after calling pp->DoPlayerAction from domovethings altogether,
ensure that the player's oq16ang/oq16horiz is updated by
making an appropriate call to DoPlayerTurn/DoPlayerHorizon. This
is done in case a call to DoPlayerTurn/DoPlayerHorizon is missed.
This change is not applied for a dead player, though.
interpolation of player turning/aiming/movement, while being carried
by a sector object, without SO interpolation. This is a continuation of
73a0aa394e906a65633d61f3c749c9b9b7e66aaa and bf31bc2987a3eccd31d343622327bd4ee0f9c5a1,
aiming to fix a jitter in case the player is continuously
getting pushed by a wall (e.g., on the boat in level 5).
Basically, this moves the relevant assignments from track.cpp:MovePlayer
and MovePoints to player.cpp:DoPlayerMove. Unless a call to one of these
functions has been missed, pushwall and clipmove can be called from
player.cpp in the following instances, which should be covered:
- Via DoPlayerMove, which is the function getting the fix now.
- Via DoPlayerSlide, which is called in the beginning of DoPlayerMove.
- Via DoPlayerCurrent when called from DoPlayerCrawl/DoPlayerWade,
followed by DoPlayerMove.
- Via DoPlayerCurrent when called from DoPlayerDive,
followed by DoPlayerMove if the player doesn't stop diving.
# Conflicts:
# source/sw/src/track.cpp
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.
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).
While it is understandable that avel and horz came from Duke3D,
having both q16horiz and q16horz in the updated SW_PACKET struct
can be confusing, and the alternative notation is more consistent
with the original struct field names of angvel and aimvel, as well
as the differing uses of the name angvel still present in player.cpp.
for them to modify the player's camq16ang/camq16horiz field
instead of q16ang/q16horiz. Additionally, pass to them the
change in angle/horiz via a parameter, as an alternative
to direct access to the corresponding player input field.
Add the camq16ang and camq16horiz fields to the player struct.
With the exception of DoPlayerTurn and DoPlayerHorizon, whenever
code in player.cpp updates player's q16ang/q16horiz, also write
the updated values to camq16ang/camq16horiz. These variables'
preceding values are never used in these functions.
This reverts commit e878c5bab8.
Revert "SW: Use Q16.16 for horiz."
This reverts commit f07a0ae01e.
Revert "SW: Use Q16.16 for angle."
This reverts commit 1ecc74c2ec.
Revert "SW: Minor repairs for Q16.16 implementation."
This reverts commit d78d046bad.
Revert "SW: Process input at frame rate."
This reverts commit c162014dab.
Revert "SW: Amendments to accommodate changes in master."
This reverts commit eaa51138ad.
Revert "SW: Fix incorrectly declared function input type."
This reverts commit 1cdd5b08d8.
Revert "SW: Amend scaleAdjustmentToInterval() with correct value for SW."
This reverts commit d4dd737cd5.
Revert "SW: Refinements to new input code."
This reverts commit 5ebc65a1fb.
Revert "SW: Adjust look and snap up/down keys and slightly tune PLAYER_TURN_AMOUNT."
This reverts commit 2852536dbf.
Revert "SW: Get PLAYER_TURN_SCALE to be just right."
This reverts commit 4630c8a0b7.
Revert "SW: Make map follow mode work better."
This reverts commit 8e94c48eff.
Revert "SW: Remove line accidentally left from 'MoveScrollMode2D()'."
This reverts commit 5db8047b41.
Revert "Fix multiplayer desync after the change to q16 angle and horiz."
This reverts commit 3bc46078b8.
Revert "SW: Revert commented out horiz->q16horiz renames in DSPRINTF strings"
This reverts commit 537313f620.
Revert "sw/src/draw.cpp:drawscreen: We can set the pp->si* fields just once,"
This reverts commit d2e9595980.
Revert "sw/src/game.cpp:LoadLevel: Rename q16ang -> ang"
This reverts commit a178961a3e.
Revert "SW: Minor tweaks."
This reverts commit 377ba68344.
Revert "SW: Further refine turning and optimise horizon adjustment."
This reverts commit 039022d9ac.
Revert "SW: Don't process input at frame rate if ScrollMode2D is true."
This reverts commit 1aa1e62c4d.
Revert "SW: Use a bit more Q16.16 in places."
This reverts commit 40ca656f38.
Revert "SW: Use the old interpolation path in drawscreen if player is dead"
This reverts commit 2d73466425.
Revert "SW: Smooth out 180 degree turn landing and replace some fix16_min/max with fix16_clamp."
This reverts commit 0996e87f79.
Revert "Change Next/Previous Weapon button handling for Shadow Warrior."
This reverts commit f6b8ca6a22.
Revert "SW: Make "Center_View" key return smoothly."
This reverts commit 23c401fbc2.
Revert "SW: Use the old interpolation path in drawscreen if player is dead"
This reverts commit 43ec16eb55.
Revert "Interpolation fixes for SW:"
This reverts commit ac8a7ecfbd.
Revert "SW: Reset the number of interpolations on level load"
This reverts commit 04bf8499e7.
Revert "Another change modifying saved game format in SW:"
This reverts commit e80888523e.
Revert "SW: Interpolate sector objects in non-demo, single player games."
This reverts commit 996ab77cf4.
Revert "- fixed merge errors in SW."
This reverts commit b8cfa94568.
Revert "- fix interpolation stutters when opening console for SW."
This reverts commit 99fdbfb6cb.
Revert "- reset buttonMap button states after returning from pause for SW (stops keys acting stuck down if down prior to pausing)."
This reverts commit 693b6955da.
Revert "SW: fix stupid input scaling bug"
This reverts commit 1c79e6e17c.
Revert "SW: Make vehicle input better."
This reverts commit 670a53c402.
Revert "SW: Change fix16_from_float() to fix16_from_int() that was changed in 4630c8a0b7 but should have been reverted in 377ba68344e34495638c6fa7685ff78c9a0ed6f8."
This reverts commit 423c9da071.
Revert "SW: Remove ScrollMode2D extern boolean and move into PLAYERp struct."
This reverts commit 31eb55c1fa.
- Define new boolean 'on_vehicle' in PLAYERp struct for use with interpolating while on vehicle and other checks.
- Move horizon code back into separate DoPlayerHorizon() function. Adjusting horizon while in vehicle must come at the end of the DoPlayerOperate*() function.
- Make DoPlayerHorizon() accessible in game.cpp.
- Change code in DoPlayerHorizon() to process according how 'pp->on_vehicle' is set.
- Make scaleAdjustmentToInterval available outside of getinput().
- Don't process input at frame-rate while on a vehicle. Vehicle code is too difficult to process outside of the game's clock.
Partially based on NY00123's upstream implementation of tying player input to frame-rate.
- Move DoPlayerTurn() into getinput(). Vehicle code remains external for now.
- Remove horizAdjust boolean and always do horizon code in getinput(). Eliminates single off frame at start of a new level until DoPlayerMove() is called at least once.
- Input was too fast following input code changes.
- Speed of input can now be changed with toggling the run key.
- Remove function 'MoveScrollMode2D()' and incorporate into 'getinput()' to reduce code duplication.
- Store map follow coordinates in PLAYERp struct and remove old globals.
- Original value was 12 and was far, far too high following the Q16.16 implementation.
- Value of 3 is too fast.
- Value of 2 is too slow.
- Value of 2.4 (12 / 5) feels just right.
- videoNextPage() moved to after restoring interpolations.
- Properly use Q16.16 in as many places as possible. This fixes the angle/X-axis issues.
- Remove unnecessary call to timerUpdate() in main loop, only needs calling once and is called by eventhandlers().
with (possible) side-effects is written to an unused var.
git-svn-id: https://svn.eduke32.com/eduke32@8688 1a8010ca-5511-0410-912e-c29ae57300e0
# Conflicts:
# source/sw/src/console.cpp
# source/sw/src/jnstub.cpp
# source/sw/src/save.cpp
# source/sw/src/sounds.cpp
# source/sw/src/swconfig.cpp
This should complete the transition and allow storing the render state in an array so that Polymost can be rewritten to create draw lists instead of actually doing the rendering itself.
This is handled by the function itself now.
Fixes the distance issue with the ceiling fan.
git-svn-id: https://svn.eduke32.com/eduke32@8525 1a8010ca-5511-0410-912e-c29ae57300e0
* removed all cases of getting a sound handle and checking it later.
* In particular, refactor the cases where the handle is stored in a static local variable. These are fundamentally unsafe because nothing maintains these local variables.
* finished rewriting the PlaySound function. Let's hope this is what was intended, the entire coding here was not particularly good, mixing high and low level sound handling all on the same level.
* call the update routine each tic and not merely every 4th or 8th one, this kind of granularity was ok in 1997 but not with a modern sound engine.
* removed old sound loading code, which was the last bit to use cacheAllocateBlock which is also gone now.
* cleanup of player sound code. All game side tracking of the sound resources has been removed.
does not compile yet.
Reverted this to a sane setting, as it was in the original games and in all other games I have ever seen, i.e. there is a global setting to enable mouse view, and a button to manually trigger it. The toggle can be easily handled by flipping the CVAR directly.
The main problem here was that it triggered a few cases for mouse-less gameplay in the default case with a mouse present, because the mouseaim CVAR was no longer what the game expected.
This misguided change seems to have originated in JFDuke but by now had propagated to all the other games as well, the code was in all 4 frontends.
This removes all unused parts of the implementation and moves the rest to the InputState class for easier replacement later. All MACT is doing now here is to call the UpdateStatus function, the internal workings are no longer relevant.
Files moved but not modified. Changes to follow in a subsequent commit.
You down with CPP?
git-svn-id: https://svn.eduke32.com/eduke32@6055 1a8010ca-5511-0410-912e-c29ae57300e0