Commit Graph
79 Commits
Author SHA1 Message Date
Mike Nelson 4d39287de1 LuaLS meta file generation (scripting.lua) (#6516) 2025-06-08 11:29:30 -04:00
BMagnu e1810ed522 Allow curves to be tabled inline (#6674)
* Add inline curve definitions

* Fix comma parsing

* Fix cast

* Incorporate feedback

* Fix parsing call
2025-06-02 01:41:06 +02:00
BMagnu 01b09aae1c Fix SoundDuring animation segments with the loop flag set (#6669)
* Properly stop sounds even with the non-interrupt flag

* Respect tabled flags
2025-04-08 10:00:04 +02: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 3b54488d3b Merge pull request #6565 from Goober5000/utility_functions
add some utility functions
2025-02-04 22:05:05 -05:00
BMagnu 23dc22e172 Unify Particle Attachment (#6571)
* Fix incorrect ship legacy particle curve assignment

* Setup trigger radius

* Properly attach particle sources to objects and subobjects

* Add trigger velocity for weapon impacts

* Onetime particle source timing fix

* Warnings

* Allow global_to_local to work with no submodel

* Allow global_to_local to work with no submodel, again
2025-02-03 22:14:19 +01:00
Goober5000 2ec344d826 add some utility functions
Useful functions for utility.h and string_utils.h.  Adapt existing code accordingly.
2025-02-01 23:16:33 -05:00
BMagnu b4905d111f Fix outputs being not passed along in input-only derive case (#6558) 2025-01-30 17:52:18 +00:00
BMagnu d9e859aac0 Remove Typo and fix volumetrics merge issue 2025-01-29 09:30:43 +01:00
BMagnu 5ce7881a27 Merge branch 'master' into particle_cleanup 2025-01-19 19:56:18 +09:00
Goober5000 7cf7f0ea4e Merge pull request #6512 from Goober5000/looping_sound_fixes
fix volume updates for looping sounds
2025-01-12 16:00:12 -05:00
Mike Nelson 4dfaa85b6f Default settings tbl (#6491)
* initial version of default_settings.tbl

* Add a way to change player detail level defaults and implement a couple more options to detail_settings.tbl

* support the rest of 2d.cpp options

* Allow enforcing options to a specific value

* modernize detail defaults, levels, and values

* Fix parsing issue and remove lambda capture by reference

* fix print

* clang

* More efficient +Enforce parsing

* cleanup

* typo

* don't negate this

* error_display

* clarify language between presets, levels, and values

* add default case

* small fix

* use a map to minimize string lookups
2025-01-12 11:29:11 -05:00
Goober5000 b40fab6739 update looping sound data structures
Change `currentlyLoopingSoundInfos` and `currentlyLooping3dSoundInfos` from lists to maps.  The data structure should keep track of the volumes currently, as opposed to historically, associated with each sound handle.

Since the map requires `util::ID` and its derivatives to be hashable, add `util::ID_Hash`.
2025-01-11 15:23:57 -05:00
BMagnu a0e9f0d450 Merge branch 'master' into particle_cleanup 2025-01-03 05:50:23 +09:00
Goober5000 5c737a5bf9 improve campaign file extension handling (#6443)
As discovered by WouterSmits, campaigns with periods in their filenames caused issues with FSO's campaign handling.  Specifically, in The Babylon Project, the EA-Minbari war v1.0.fc2 campaign would not save progress because FSO expected EA-Minbari war v1.fc2 in certain places.  This is because the `_splitpath()` function attempted to remove an extension from a filename that already had it removed.  For most campaigns this did not matter, but WouterSmits found a campaign where it did.

To solve this, there is now a new `util::get_file_part()` function to remove the path without removing the extension.  This replaces `_splitpath()` for campaign files, as well as the similar `clean_filename()` and `GetFilePart()` functions in other places.  All code paths were inspected for any chance of inadvertent extension adding, and Assertions were added to verify future code.  The only potential problem area was `player:loadCampaignSavefile()` which now pre-removes the campaign extension if needed.
2024-12-22 22:31:58 +01:00
Birk Magnussen 05259a5b6c Make sure that clang does accept implicit random range copy constructors 2024-12-16 15:06:26 +01:00
Birk Magnussen 6ab3d5310a Fix template deduction for GCC pre 14 2024-12-16 15:01:01 +01:00
Birk Magnussen 55bb2095bb Clang tends to have weird behaviour for is_convertible apparently 2024-12-16 14:45:37 +01:00
Birk Magnussen d19f36a58d Remove incorrect forward 2024-12-16 14:24:01 +01:00
Birk Magnussen ec0e55d077 De-movify random ranges 2024-12-16 14:22:29 +01:00
Birk Magnussen 40312e7419 Add modular curve sets to volumes 2024-12-12 16:44:34 +01:00
Birk Magnussen 5272604c83 Integrate type_traits
# Conflicts:
#	code/globalincs/type_traits.h
2024-12-11 22:14:46 +01:00
BMagnu 2aac63e0a9 Allow particle volumes to have access to the source for modular curves 2024-12-11 16:01:07 +01:00
BMagnu 6050821343 make modular_curves work with member funcs and smart pointers 2024-12-11 11:00:27 +01:00
Birk Magnussen e955a7f1be Merge branch 'master' into particle_cleanup 2024-12-10 23:41:07 +01:00
KestrelliusandBMagnu 228fd17ff1 Modular curves for weapon attributes during lifetime (#6319)
* Partially builds weapon curves.

* Further curve implementation

* Implementation of more output types.

* Cleanup

* Adjusts warning.

* Appeases clang.

* further appeasement

* Appeasement and time-traveling review changes

* change the enum branch too that'd be good

* More requested changes

* Basic abstraction for generic modular curves

* Make curve list by output statically sized

* Make instance-randomization consistent and mapless

* Add parsing

* Add derived modular curve sets

* Fix incorrect unpack

* Split modular curve set and definition, properly comment struct usage

* Split off specific type-traits into own file

* Fix modular curves for multi-derive case

* Implement some basic weapon curves, as well as the damage multiplier hit curve

* Merges in generified system built by Lafiel.

* Fills out beam curvesets.

* Renames curvesets.

* Removes launch curves for now.

* Testing, bugfixing.

* Various cleanup

* Returns extern do_subobj_hit_stuff

* Fixes compile errors

* Beam flag checking

* Rearranges beam flag checking.

---------

Co-authored-by: BMagnu <[email protected]>
2024-12-10 23:32:46 +01:00
BMagnu 12ad35e10a restore shield_impact_explosion_radius 2024-12-09 13:28:16 +01:00
Birk Magnussen 92473780d5 Fix correct random range constructor overlaod 2024-09-24 17:54:16 +02:00
Kestrellius 91a673ac58 Generic random distributions, including curve-based (#6314)
* Adds PDF to CDF function.

* Further implementation; not complete

* Implements curve integration.

* Implements binary search.

* Finalizes random-range reorganization

* Extends generic range support to various things.

* Removes infinities.

* Fixes bugs.

* Adds handling of invalid prob curves.

* Adjusts warning.

* Exception handling

* Addresses issues raised during review.

* Cleanup

* Appeases clang

* Further appeasement

* even further appeasement

* appeasement^3

* appeasement^4
2024-08-27 00:27:33 +02:00
Goober5000andJohnAFernandez b20efdec80 Update code/utils/HeapAllocator.cpp
Co-authored-by: JohnAFernandez <[email protected]>
2023-11-08 20:08:37 -05:00
Goober5000 37c344a127 a few build fixes
1. use `SIZE_T_ARG` instead of `"%lu"`; should fix format warning in #5780
2. since `HeapAllocator::checkRangesMerged()` has no effect unless running in debug, `#ifdef` out the function; should fix CI warning in #5778
2023-11-07 17:51:55 -05:00
BMagnu 979d305afe Add screenToBlob scripting function (#4738)
* extract base64 routines

* Add screenToBlob scripting method

* Fix variable shadow

* Fix variable shadow again

* Fix usused variable
2022-10-03 07:33:46 +09:00
kiloku b7e99089d7 Fix line endings in the core codebase 2022-06-03 13:31:09 -03:00
Goober5000 0c8cfd160b improve the UI_TIMESTAMP type a bit 2022-02-12 19:34:01 -05:00
Taylor Richards 8bbf2814fb silence clang compiler warnings 2021-12-29 07:07:26 -05:00
asarium b6fe676072 Remove usage of deprecated CMake module
Also removed all checks for C++11 support since we only support
compilers that have this already.
2021-06-20 12:56:20 +02:00
Joshua Glatt 144d484c85 Replace rand() calls with a Random class (#3332) 2021-05-04 18:26:06 -07:00
Birk Magnussen 0b2ee5f76b Modify other file reading method for new encoding conversion 2021-03-13 07:50:41 +09:00
Birk Magnussen 3003d0589d Change validation to own function 2021-03-12 06:34:27 +09:00
Birk Magnussen 4bd15d43da Fix Warning due to enum class 2021-03-12 06:04:10 +09:00
Birk Magnussen 8df62e99f5 Change Enum to Enum Class 2021-03-12 05:54:25 +09:00
Birk Magnussen 1b5fd3c5fd Move Conversion functions to util/unicode 2021-03-12 05:42:44 +09:00
asarium 02b1e38cd7 Add variables concept to expressions
This also includes the necessary setup work for using "position" and
"direction" in action expressions.
2021-02-22 18:39:06 +01:00
asarium 851a7663a8 Rework actions to use definitions
This introduces action definitions which can then be instantiated to
form actual actions with expressions as their parameters.
2021-02-22 18:02:22 +01:00
asarium 8f88801646 Add dynamic action programming system
This system adds the code necessary for letting content creators specify
complex events by specifying a simple, program-like sequence of
operations that will be executed by the engine when a certain event is
triggered.
2021-02-21 21:29:02 +01:00
Goober5000 f3bca4384f additional case functions and checks
This refactors the tolower/toupper code to use standards-conformant logic, and also adds some helpful utility functions.  Regular tolower/toupper must be supplied a value that can be represented as `unsigned char`, but the std:: functions are a bit more robust.
2021-02-18 04:23:08 -05:00
asarium b4350a1d1e Fix GCC-10 warnings
This fixes some warnings reported by GCC 10 and enables that compiler to
be used by our CI pipelines.

This fixes #2773.
2020-10-02 18:49:01 +02:00
thfrwn 55a388f96b try_lock -> try_to_lock to fix clang 10 build 2020-08-20 11:37:44 -06:00
asarium 614a636ed5 Fix clang-tidy issues
Not sure why travis saw these since I didn't change anything there but
fixing these is also good.
2020-06-06 23:24:08 +02:00
asarium 016c07dc3a Add feature to execute Lua coroutines at specific points
This adds a mechanism for running generic operations at specific points
of the frame execution. This can be used by any part of the code an not
just Lua since it simply executes std::functions. It also adds an
"execution context" concept that specifies in which situation an
operation should be executed.

This is then used by the Lua Coroutines code for resuming coroutines at
specific points instead of always when the awaited promise resolves.
2020-06-06 21:29:48 +02:00