1262 Commits
Author SHA1 Message Date
Mike Nelson b9b64fe49d Show team colors with Lua rendering methods (#6802)
* get set team colors with lua's rendering methods

* fix for checks

* tweak

* add includes
2025-07-11 22:01:33 -04:00
BMagnu 82dfdbc962 Cleanup of Level 0 Particles (#6808)
* Make scripting use the full-blown particle system

* Add reverse option

* Add animation reversal as an option to modern particles

* Start implementation of beam particles

* Add multi-emission particle source API for legacy particles

* Attach beam muzzle particles to the correct host

* Reorder code in order to facilitate apparent visual size as modular curve input for particles

* fix lua api

* Typo

* Fix scripting and beam muzzle particles

* Remove muzzleflash code, prepare to replace with particles

* Begin mflash effect conversion

* Pass final parameters to mflashes and fix curve

* Remove deprecated particle function

* Add debris flame particles

* remove weapon_explosion table

* Convert shield explosion particles

* Fix modular curve full inputs and convert particle curve inputs accordingly

* Allow particle volume offset and rotation with curve-based rot around fvec

* Add Ring and Point Volumes

* Convert PSPEW to new system

* Make particle curve timing aware of interp

* Update todos

* get rid of performance waste

* Add last parameter for converted pspews

* Fix pspew bugs

* Fix direction for default pspew

* Fix order for voluem rotation

* particle vel interp

* particle vel interp 2

* Make beam muzzle stay parented to the firing ship, as it's likely the more commonly intended variamnt

* fix scripting particle lifetime

* Allow beam muzzle particle override

* Skip invalid pspews

* remove pspew dcf code

* Fix sparkler stretch

* Correct sparkler bia

* General sparkler weirdness

* Tune distribution of sparklers

* Convert Asteroid particles

* Fix conversion warning

* Fix conversion warning again

* Fix conversion warning again again

* Really clang?
2025-07-09 16:47:14 +09:00
Goober5000 8dc03b0fff additional submodel scripting enhancements
4. `__eq` functions for models and submodels
5. Store model and submodel IDs, not pointers
2025-07-05 16:05:19 -04:00
Goober5000 1b75fea06c subsystem scripting enhancements
Add several API features to improve scripting support for subsystems.

1. A `CanonicalName` virtvar to provide a clear way to get subsystem names for indexing and referencing
2. `Submodel` and `SubmodelInstance` virtvars to get the submodel information associated with the subsystem, if it exists
3. A `getSubsystemList()` function to provide a subsystem iterator
2025-07-05 16:05:19 -04:00
Goober5000 11a33fe42e Merge pull request #6347 from Goober5000/electrical_arc_enhancements
Enhancements to the FSO electrical arc system
2025-06-29 23:38:24 -04:00
Goober5000 2a62f04d72 clean up Target virtvar in order.cpp
Several refinements:
1. Make the case labels consistent between the setting and getting of the virtvar, for ease of comparison and troubleshooting.
2. Consolidate CHASE_WING and GUARD_WING for setting, like they already are for getting.
3. Consolidate STAY_STILL for getting, using one simple trick.
4. Remove the KEEP_SAFE_DISTANCE goal, since it has no target. Fixes #6761
5. Fix CHASE_SHIP_CLASS which put the getting case in the setting section, and consequently did not handle setting.
2025-06-24 02:14:20 -04:00
Goober5000 f0ee1e2f7c electrical arc upgrade, stage 4: add a new ModifyElectricArcPoints function with a handy valueToVec3d utility function 2025-06-22 00:46:14 -04:00
Goober5000 47025a79d7 electrical arc upgrade, stage 3: add support for customizing segment depth and using persistent arc points 2025-06-22 00:46:14 -04:00
Goober5000 305af2a1ce electrical arc upgrade, stage 2: make arrays dynamic 2025-06-22 00:46:14 -04:00
Goober5000 8270a38505 electrical arc upgrade, stage 1: refactor data structures 2025-06-22 00:46:14 -04:00
Goober5000 73e82d9440 Merge pull request #6786 from Goober5000/schroedinger_goals
schroedinger AI goals
2025-06-22 00:43:33 -04:00
Mike Nelson 6a1ae81bcb Add method to get a font's font family (#6782)
* Add method to get a font's font family

* nullptr

* add more safety checks

* pass font data instead of font data members

* return an empty string instead of unknown
2025-06-20 14:27:34 -04:00
Goober5000 035334878b schroedinger AI goals
The new enum class collection of AI goal modes did not handle the superposition of states that could occur when multiple ships were selected in FRED.  Add a special FRED-only state for this purpose.
2025-06-20 03:40:30 -04:00
Mike Nelson 78d6a4b881 Ensure lua context is used for image drawing and string sizes (#6765) 2025-06-10 19:04:06 -04:00
Mike Nelson cc7f067e0f Use RAII guard to ensure lua context is always closed (#6757) 2025-06-09 17:06:18 -04:00
Mike Nelson 4d39287de1 LuaLS meta file generation (scripting.lua) (#6516) 2025-06-08 11:29:30 -04:00
Goober5000 546d0af38b Merge pull request #6751 from Goober5000/scripted_movie_audio
enable audio in movie files with this one simple trick
2025-06-07 00:45:56 -04:00
Goober5000 0bf5714dd5 Merge pull request #6725 from Goober5000/time_lib_stuff
enhance scripted time library a bit
2025-06-05 23:15:55 -04:00
Taylor Richards 552f9990d9 remove support for memory mapped files (#6748)
FSO doesn't appear to use this any longer. And even when it was enabled the
requirements made it largely useless anyway. Removing to clean up cfile a
bit and so we don't have to keep maintaining it.
2025-06-05 17:53:13 -04:00
Goober5000 a3aea10889 enable audio in movie files with this one simple trick
Turns out, audio works in scripted movies just fine.  So, add a parameter to the Lua API to allow movies to play audio.
2025-06-04 23:58:58 -04:00
Mike Nelson 829edaaa3e Fix Lua API polluting the game context (#6739)
* split rendering values into lua and fso contexts

* address feedback
2025-06-04 09:43:33 -04:00
Kestrellius 3cf3aa9ecd Launch curves followup (#6742)
* this went very badly

* fix burst mult bug

* increment multi

* fix uninitialized variable

* fixes

* further fixes

* concision
2025-06-04 07:07:14 -04:00
Kestrellius 66d9335dab Weapon launch curves (#6732)
* it's broken and i don't like it

* it's fixed and i approve

* add multi support maybe

* appease clang

* appease clang ii: electric boogaloo

* const refs

* increment multi version
2025-05-27 00:48:40 +02:00
Goober5000 778e2a5cb9 enhance scripted time library a bit
1. Add __tostring functions for both the `l_Timestamp` and `l_TimeSpan` types
2. Add a `getSeconds` function for the `l_Timestamp` type
2025-05-21 23:37:04 -04:00
Mike Nelson f1f95717d1 Support Custom Gauges in HUD Config UI (#6670)
* Support coloring custom gauges

* remove NULL
2025-05-14 13:18:03 -04:00
Goober5000 42dd1eb3c2 Merge pull request #6713 from Goober5000/various_small_issues
Various Coverity issues
2025-05-13 23:18:43 -04:00
Goober5000 a294559ee2 improve scripting support for waypoint lists
1. Add an explicit `mn.createWaypointList` function
2. Allow `mn.createWaypoint` to be used with an empty waypoint list
3. Update documentation of `mn.createWaypoint` to clarify optional arguments
2025-05-10 23:36:22 -04:00
Goober5000 04a671c836 simplify list index 2025-05-10 21:43:17 -04:00
Goober5000 ceee045b35 coverity: move instead of copy 2025-05-10 01:15:46 -04:00
Goober5000 067c65773a coverity: possible use of invalid iterator (especially with jump nodes) 2025-05-10 01:15:46 -04:00
Goober5000 d7796b3767 coverity: use references to avoid unnecessary copies 2025-05-10 01:15:46 -04:00
Goober5000 56d8c48927 Merge pull request #6712 from Goober5000/a_few_fixes
A few fixes
2025-05-09 20:35:03 -04:00
Mike Nelson 1f7903fb23 add a few hud lua methods (#6692) 2025-05-08 09:33:21 -04:00
Goober5000 e0c4c3033f fix bounds check 2025-05-08 02:37:33 -04:00
Goober5000 6c42d9cc82 prevent negative array index when AI has no target 2025-05-08 02:37:24 -04:00
Goober5000 dcd1c97b42 also getMagnitudeSquared 2025-04-23 21:25:07 -04:00
Goober5000 6aa449c8e1 add a few eye virtvars
For displaying things in a scene, because the eye position is not necessarily the ship position.
2025-04-23 21:25:07 -04:00
Goober5000 354c57cd5c add setSpeed for animations
Most of the functions in ship.cpp that operate on submodel animations are mirrored in animation_handle.cpp, but `setAnimationSpeed` was overlooked.  Add this function so it can be called from a submodel animation handle.
2025-04-20 00:13:49 -04:00
wookieejedi eb60a87b28 Allow mods to hide main Rearm/Repair items in Message Gauge (#6684)
* Allow mods to hide main Rearm/Repair items in Message Gauge

Adds a game_settings option to hide/disable the Rearm/Repair commands in the Squad Message Gauge. FotG does not use repair ships, so it is somewhat confusing to players to always see the `Rearm/Repair` order options (IE 5. Rearm/Repair Subsys and 6. Abort Rearm) and never be able to use them.

I wanted to make this PR as surgical as possible, while still giving some degree of generality, thus I went with the solution to use `active` as a true integer instead of simply an old int in the bool style. Now -1 is hidden, 0 is greyed out, and 1 is bright.

Tested and works as expected.

* update comment

* update with better name

* add another clarifying comment
2025-04-14 07:22:10 -04:00
Mike Nelson cacf1fb002 match get/set colors for gauges to graphics (#6563) 2025-04-06 11:10:16 -04:00
Mike Nelson 1a503faa6b Better color preset handling (#6655) 2025-04-06 11:09:43 -04:00
Mike Nelson 7c38273f5b Lua hooks for the comm board (#6450)
* lua access to the comm board menu

* On Order Issued Lua Hook

* Some cleanup and safety checks

* Add mn.sendBuiltinMessage and perform more cleanup

* Send the correct ship to the hook for Sender

* clang cleanup

* address feedback

* fix build errors introduced from upstream

* basic hook conditions

* properly link the condition and the oswpt struct

* some requested cleanup

* allow for sending custom built-in messages

* address more feedback

* more prefix
2025-04-03 00:55:20 +02:00
wookieejediandBirk Magnussen 46e7df7941 Make VR mode more seamless (#6636)
* Make VR mode more seamless

Works to make the `-vr` command flag more seamlessly work (which means the new KNet button, `Play in VR` will also now actually work). Fixes #6430.

First, creates a new in-game option called VR Resolution and have the default be 2500x2500, with a range that goes from 1000x1000 to 6000x6000.

Second, if `-vr` flag is used, then it auto sets flags of `-capture_mouse` `-stretch_menu` and `-window_res 1000x1000` (or anything that's for sure smaller than the screen but not too small, to maintain mouse precision).

It also overrides settings of `-vysnc` and `-window` to off, by ignoring the in-game values (and does not show these options in menu while in VR mode).

Finally, it reads the in-game value of `VR Resolution` instead of `Resolution`. It also shows the `VR Resolution` in-game option in the menu, while hiding the options of `Resolution`, `Windowed Mode` and `Vsync`.

If the game is run in standard mode then FSO does what it current does, including using the `Resolution` value for screen resolution. It also does not display the new in-game option for `VR Resolution`.

* actually use the vr_enumerator

* use emplace_back instead

* update res vr importance

* Fixes for VR one-button mode

* try reordering removes for clang

* fix string ids

* test to see if clang is being weird

* revert clang test

* strings index update

* cleanup options manager

---------

Co-authored-by: Birk Magnussen <[email protected]>
2025-04-01 14:18:19 +02:00
Goober5000 44ff94a72f Merge pull request #6622 from Goober5000/move_semantics
audit move semantics in the codebase
2025-03-30 18:40:05 -04:00
Goober5000 86f75c5d17 fix normalized vector handling (#6650)
Although normalized vectors in FSO are supposed to stay normalized, occasionally small floating point errors can pop up.  In most cases these do not cause a problem, but in certain cases these errors can rapidly accumulate and corrupt an otherwise well-behaved matrix.  This can most easily be seen with daisy-chained dock sequences or docked ships with angled dockpoints.

This PR audits the usage of `vm_vector_2_matrix_norm` to re-normalize vectors in cases where floating point errors could accumulate.  There are also a few new Assertions for extra vigilance.

Follow-up to #6596.  Fixes #6634.
2025-03-28 23:54:51 +01:00
Goober5000 8613ccde76 skipmemymissionyo fixes
Improve skipmemymissionyo in several ways, based on RedMageJoe's recent experience:
1. Allow spaces to be accepted in the mission prompt
2. If the requested mission can't be found, just abort rather than restarting the entire campaign
3. Clarify that the prompt needs a filename and add a message if the mission can't be found
4. Improve handling of the .fs2 extension
5. Fix a bounds check in `popup_input`
2025-03-26 22:56:21 -04:00
Mike Nelson 60777154be Hud config upgrades (#6581)
* base working version

* localization and minor tweaks

* add retail UI controls

* Add way to hide gauges from Config view

* convert hud config from index matching to id matching

* clang
2025-03-22 22:47:38 -04:00
BMagnu 95d1cd5d47 Actually return the correct field (#6639) 2025-03-18 20:18:01 +00:00
Goober5000 4b3894c0a5 audit move semantics in the codebase
For every move and move-assignment constructor, do the following:
1. Make it default if possible
2. Add or delete where appropriate
3. Check for move-onto-self
4. Apply `std::move` where needed

Also fix problematic moves in `player_h`
2025-03-17 00:31:59 -04:00
Goober5000 a92368da96 Merge pull request #6624 from Goober5000/shield_tweaks
some refinement of shield quadrants
2025-03-11 00:58:50 -04:00