* proof of concept
* Account for shadows
* Option to tie individual HUD gauges to the cockpit option
* Do this in a more user-friendly way
* Address feedback
* Add maximum self repair percentages for health and subsystems
Adds two new options to help with the automatic self repairs for hull and subsystems: `$Hull Self Repair Maximum:` and `$Subsystem Self Repair Maximum:`. These values allow mods to specify how much a ship's hull or subsystem can self repair to, which is very useful to have some auto repair but not enough to make the hull or subsystem 100%.
Also cleans up the `ship_auto_repair_frame` function with removing un-used define values, improving comments, and making formatting consistent. Also updates the parse sections of repair rate for hull and subsystems to print to the log if values are being clamped.
Probably easiest to review with hiding whitespace changes.
* update local names to be easier matches to surrounding code
* incorporate feedback
Add back in define, fix == 0 checks, and fix edge case logic bugs
* Fix subsystem change handling code
Make sure that subsystem help actually gets updated.
* change from pointer to literal
I had decided to use `new` in the past when I was less experienced. So this changes it back to regular angle variables.
(And White space fix requested by Wookie)
1) Add the "no-thrusters" ship flag to the list of flag that can be used by alter-ship-flag or the ship's setFlag function
2) Add a `FireRateMultiplier` virtvar to control the firing rate of turrets (fulfills #4300)
3) Add a `setGlowPointBankActive` function to do the same thing as `activate-glow-point-bank`/`deactivate-glow-point-bank`
* Fix VS Warning
If this is trivial and not needed feel free to dismiss, but this one-line PR simply fixes a warning that keeps showing up when building with VS.
* individually cast
* cleaner fix
* Add deferred cockpit lighting
* Put deferred Cockpits behind a flag
* (hopefully) fix bad in-case initializer
* clear non base color buffer in subsequent deferred passes
* Proper deferred Cockpit rendering
* undo whitespace changes
According to EatThePath's frame profiling, this one ship name lookup takes 2% of the frame time. It can be easily optimized by making use of the ship registry.
* Auto Truncate default ship names
Previously, placing a ship that had a long class name might create a default name that was too long and thus trigger a buffer overflow assert.
Such behavior was confusing if someone was just placing things in FRED and not sure at all what happened or how to fix it.
This PR replaces the assert with code to auto truncate the ship class part of the name to ensure that the default name will fit into the designated size.
* change var name
Supercaps have a special physics flag applied when they warp in so that they slow down quickly. However, if a supercap immediately warps out again - as in Deus Ex Machina and DEM: Interlude - this physics flag will interfere with the process so that the ship doesn't accelerate immediately even though the warpout portal is opening. This will cause the ship to miss the portal and clip off a section. The solution is to clear the flag once the warpout process starts.
Floating-point comparisons are tricky beasts. See this article for a good summary of the issues involved:
https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
This PR improves support somewhat, although there are obviously situations in the code (such as comparisons to 0) that should still be addressed. This PR makes the following improvements:
1) Tightens the threshold on `IS_VEC_NULL` and `IS_VEC_NULL_SQ_SAFE` from 1e-16 and 1e-36 to FLT_EPSILON
2) Tightens the threshold for parsing `turn_time` in POFs
3) Restores the previous implementation of `fl_equal`
4) Adds a dedicated `IS_MOI_VEC_NULL` for moment of inertia values
5) Improves documentation
Follow-up to #4535 and #4443.
Splits the existing On Death hook into independent hooks for each relevant type. Adds On Ship Death, On Missile Death, etc. Also adds On Missile Death Started to complement On Ship Death Started.
* Add Animation Instance Flags
* Add SEXP barebones
* Unify and simplify animation parsing
* Clean up animation calling and use new animationlist api
* Add missing break
`Ai_flag_names[]`, `Object_flag_names[]`, and `Ship_flag_names[]` all had an associated `#define` containing their length that had to manually be incremented whenever new flag names were added to the list. This commit instead makes the number of flags in the list be computed by simple `sizeof` division, so now adding a new entry just requires adding the entry, rather than remembering to bump a `#define`. Tested in FRED to make sure populating `OPF_SHIP_FLAG` entries still works.
* more cleanup in preparation for model translation
1) Clean up stepped rotation, fixing some logic, adding safeguards for invalid values, and allowing rotations to go in the opposite direction
2) Add more specific SEXP error checking for AWACS and rotating subsystems
3) Assorted refactoring and polishing
* address feedback, plus a bit of extra cleanup
Previously the persistent object sound management code would attenuate all script-assigned sounds by engine strength, and would not play them at all if the engine was off. This fixes the code to only apply that logic if the sound is in fact and engine sound.
* Fix AI Goal Display Strings
Okay so previously, if a target goal was not valid the code was
`strcpy(outbuf, XSTR("no orders", 495)); `
but then it was changed to
`outbuf += XSTR("no orders", 495);`
So it would instead append the "no orders" instead of properly replace the whole string. Looks just like a copy and paster oversight, since all the other text appends the name of the target with the order.
This PR correctly replaces, rather than appends that text. Fixes#4345
* appease clang
* use more simple =