The launcher will crash on exit due to an access violation when clearing the BudgetTracker after CrySystem is unloaded. This is from a recent change to how the budget pointers are tracked making the BudgetTracker responsible for clearing them so the system can be re-entrant. Unfortunately, an assumption was made that all modules that use Budgets are managed by the ComponentApplication so they can be cleared prior to being unloaded. This is a patch to manually reset the BudgetTracker prior to unloading CrySystem until the legacy system can be removed (or converted to an AZ-like module).
Signed-off-by: AMZN-ScottR 24445312+AMZN-ScottR@users.noreply.github.com
* Fix lock inversion.
This method was calling AssetCatalog->AssetManager at the same time that loading threads are calling AssetManager->AssetCatalog, causing a deadlock due to lock inversion. The fix is to make this method call AssetManager *outside* of the AssetCatalog call.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
* Fixing the root cause in EnumerateAssets.
Also added a unit test that failed with the previous EnumerateAssets logic, and succeeds with the new logic.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
* Make sure not to hold the secondary mutex lock either.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
* Remove unused alias.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
* Add Dom::Path class for representing positions in a Dom
This also adds Value support for doing a path-based lookup.
The serialized representation is presently compliant with the JSON-pointer spec but the implementation supports Node types and may be later expanded if we require additional functionality (e.g. XPath style conditional querying).
Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
* A bit of Generic DOM tidying/fixup
- Refactor out a test fixture for all DOM tests / benchmarks
- Optimize `GetType` implementation to not use `AZStd::variant::visit` (benchmark included to A/B the implementations)
- Tag a few more mutating Value functions with "Mutable" to avoid astonishing copy-on-writes
Benchmark results for GetType implementation:
```
DomValueBenchmark/AzDomValueGetType_UsingVariantIndex 18.2 ns 18.0 ns 40727273 items_per_second=443.667M/s
DomValueBenchmark/AzDomValueGetType_UsingVariantVisit 32.2 ns 32.2 ns 21333333 items_per_second=248.242M/s
```
Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
Consolidated duplicate asset browser code from multiple tools into single class in atom tools framework
Moved creation of asset browser and Python terminal windows into base main window class
Fixed docked window orientations
Added checks to asset browser to prevent crashes if tree state saver was null
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
* Templates/Restricted upgrade/fixes:
Fixed template storage format: templates now only store true relative paths and no longer save "origin" paths and "optional" has been removed, it was never used.
Upgraded all templates to new standard
Template system now correctly handles child objects: Child objects no longer have to specify restricted they inherit from parent
Restricted now operates at the object level and makes no assumptions about parent
Restricted templates can now be combined and seperated on creation
ly_get_list_relative_filename has been deprecated for o3de_pal_dir
All Gems/Projects/Templates updated to use new code
Signed-off-by: byrcolin <byrcolin@amazon.com>
* Updated the Maestro MovieSystem and LyShine AnimationSystem to register
Anim Nodes and Anim Params into a member variable map
Previously the registration was occuring in a global variable map inside
of Movie.cpp and UiAnimationSystem.cpp
Rolled back the changes to update the CUiAnimNode and CAnimParamType to
use the stateless allocator in their m_name string member.
This was only needed because those types were used in global memory.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updated the AZStd::hash specializations for basic_string and
basic_fixed_string to be transparent.
This allows hashing of types that aren't basic_string or
basic_fixed_string using the hash specializations for those types
without needing to create an instance of those types.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding call to disable saving of the UserSettings.xml in the DisplaySettingsPythonBindingsFixture to avoid race condition running the test in parallel
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
PrefabCatchmentProcessor::ProcessPrefab was no longer updating the ProcessedObjectStore's referenced object list, this change exposes the referenced asset list in the new PrefabDocument API and uses them to update the referenced asset list.
Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
* [Terrain] First pass of the ProcessList and ProcessRegion APIs for retrieving surface data
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add a couple of more tests. The expected values were plugged in based on the values generated by the brute force approach.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Move some declarations out of loops since they can be reused.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update all the per position callbacks to pass SurfacePoint refs. Construct only one SurfacePoint object outside the loop which can be reused.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update tests to use the new per position callbacks
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add ProcessRegion functions to the terrain benchmark.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Change C style static casts to aznumeric_cast. Add maybe_unused to unused params in benchmarks.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update the ProcessList API functions to use array_view instead of a vector. This includes some additional changes to satisfy build dependencies.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add ProcessList API functions to benchmarks
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update the ProcessList API functions to take Vector2 as input positions
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Revert changes to AtomCore library split. Add partial implementation of span(mostly just copied over from array_view) to AzCore std containers.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Adding some const/non-const overloads that were missing in span
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Move input position list generation to a function
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Bring back Vector3 version of ProcessList functions. Rename Vector2 version to follow similar pattern as the Get functions.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Split span.h into .h/.inl files
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add [mayby_unused] for unused parameters to fix build errors
Signed-off-by: amzn-sj <srikkant@amazon.com>