Due to both the AI code and the ship movement code calling warp departure logic, enabling `Framerate_independent_turning` caused ships with the no-departure-warp flag to depart twice. Removing the call to `shipfx_actually_warpout` fixes this.
More fundamentally, this untangles and organizes the arrival and departure logic as it pertains to effects. The actual arrival and departure code is moved to the `shipfx_actually_warpin` and `shipfx_actually_warpout functions`. This simplifies `WarpEffect::warpEnd()` and allows `WarpEffect` and its subclasses to only concern themselves with the visual effects.
This also fixes a logging statement that could never actually be printed due to `delta_ms` being the wrong sign in the if() check.
Same arrival warp when docked, same departure warp when docked, and associated changes to FRED, set-arrival-info, and set-departure-info.
Also fixes the nav-carry flag to properly save when a mission is saved. Previously that flag would always be cleared.
Implements feature from #4095.
1) Don't knock the player out of the warp if the sequence has already moved to stage two. It breaks the sequence and the game will still end the mission anyway.
2) Remove the Volition code for calculating player speed. It did not actually affect the speed, but it *did* affect the calculation of warp distance which often caused the player's ship to miss the portal.
Consolidated these functions and replaced the `find_submodel_point_*` functions with their closest `world_find_` counterparts. (One of those functions may not have actually worked correctly.) Also use the correct coordinate logic when returning normals from collision info in scripting.
Related to #3985 although not yet a fix for it.
Mostly renaming of fields and functions, and moving some modelread sections into functions. This reorganization will put the code on a better footing for the model translation feature. No model translation code is included yet, and there should be no change in functionality.
1) Changes the submodel flags to use a flagset instead of several booleans
2) Adds `rotate_accel` to allow submodel rotation acceleration to be specified
Submodel acceleration can now be instant; dumb-rotating submodels always instantly accelerate (and have always done so)
It appears that live debris is not supposed to have a parent submodel; see the retail NTF Boadicea. This removes the parent from any live debris that might have it.
This should fix#3078.
Previously if a ship's glowmaps were deactivated via sexp, then the glowmaps would reaactivie at the ship's final explosinos. This PR fixes that by carrying that flag into the ship explosion FX code.
This moves towards defining the hooks in the code module that executes
them. Also provides the API necessary for better documentation of hooks.
This only covers a few hooks as a test and demonstration of the new API.
If no issues are found with this it can be extended in the future.
Previously, Engine Wash Intensity didn't actually do anything in the code. This adds a game table setting that let's modders specify to the game to actually take the intensity value into account when calculating engine wash effects.