The code that adds a $type field for pointers where needed was still assuming that custom serializer were always for primitives, which isn't the case anymore. This changes updates the behavior to allow $type to be added to those as well as long as they use an object. This does now however rely more heavily on earlier checks that the data needs a $type because it otherwise can't tell the difference between a primitive getting a default value (an empty object). In the original code this situation would have resulted in failed serialization though, so it's unlikely to be a problem.
Change LOAD_LEGACY_RENDERER_FOR_EDITOR from true -> false, and added some null checks to protect against gEnv->pRenderer and gEnv->p3DEngine now being null in the editor as well as the launcher.
{LYN-2074} Add Animation data types Behavior for the scene graph (#253)
* https://jira.agscollab.com/browse/LYN-2074
* moved scene API color to centeralized location
BlendShapeDataFace
BlendShapeData
* Fixed all Tests.
* Fixed tests stdout redirection
* Changed return code for failed tests to be 0xF
* Small improvements on automated testing code
* Created Periodic test suite and moved tests
* Made physics main to only have one test for now
* Renamed all tests to have leading AutomatedTesting::
- Reexport cloth assets with AssImp ON. These was necessary because AssImp collects a different name for the color streams than FbxSDK and therefore they needed to be reassigned in the cloth rule.
- Adding '_optimized' string to a global variable and using StringFunc RChop to remove it for a string.
* removing unused function and moving ctest_scripts to scripts/ctest
* Re-adding ebp-test
* Fixing typo that is making this test run in parallel with other tests
* Fixing hang when parameters are passed
* passing absolute path as a project
* small tweak to not print out during Python execution
* Moving the timeout to be in the build step
* Disable ebo_sanity_smoke_no_gpu
Co-authored-by: jackalbe <23512001+jackalbe@users.noreply.github.com>
If Atom isn't initialized and able to produce a ViewportContext, the Editor would crash. This attempts to make the initialization fail a bit more gracefully and fixes the crash in the cases I've tested.
* AssImp set to be the default FBX processor (#78)
If you encounter issues, reach out to the Helios team with details, and then switch back to FBX SDK locally by changing FBXImporter.h
* Merge pull request #219 from aws-lumberyard-dev/sceneapi_scripting
LYN-3030: Fix to export_chunks_builder.py to match the AssImp node paths
* Hide some automated test folders from the asset processor for automatedtesting. This is necessary because these assets should only be processed when running the test, and not any time AP is launched for this project.
* Putting these test assets back to visible to Asset Processor. These tests need to be updated at some point to handle that, but they won't work with this change for now. Note that until this is addressed, these tests may randomly time out if they're the first tests run on a clean asset processor, and these tests launch AP without using a unique port, so the test can also fail if an Asset Processor executable is hanging open.
Grabbed the change I missed from the 1.0 branch merge, no idea how this got lost.
* Moved from main to periodic. Allen and Fuzzy were already on board, and I think with the potential flakiness in this test, we don't want this in main.
Co-authored-by: jackalbe <23512001+jackalbe@users.noreply.github.com>
Launch AssetProcessor from prebuilt SDK
- Look for AssetProcessor in a known SDK layout location if one in executable directory is not found.
- Adds more files to the CMake install to help fix some errors launching AP from SDK.
* Asset<T>::QueueLoad didn't trigger any loads in the case where an asset was in a Queued state, it simply returned the reference. This caused problems in the case where an asset was in the process of being cancelled and garbage collected, as it could be in a queued state with nothing actively loading it. The method now detects this case and calls GetAsset(), which triggers a new load.
* AssetContainer::IsValid() was returning true for canceled containers that no longer had a root asset. Now it returns false, to help ensure the container doesn't try to get reused.
* AssetContainer would add entries to the preloadList even if any potential preloads were filtered out from the load. They are no longer added, since they shouldn't be waiting for any dependent assets to load. (This could cause incorrect warnings to print in some situations)
* AssetContainer was erroneously warning about removing assets from a missing waiting list. The warning was removed, as the condition could occur when the same asset was being loading by two different containers - once with dependencies and once without.
* AssetDataStream::RequestCancel has been added, as it was missing, but nothing currently needs to use it.
* AssetManager::GetAssetContainer() now verifies that the container is valid before attempting to reuse it. This prevents asset containers that are in the middle of cancellation from getting reused.
* Added error reporting for data integrity issues for non-uniform motion data.
* The actual issue was a mismatch between the end times of the morph and the skeletal animations. They need to match in EMotionFX.
* The morph target animation exported a keyframe too much.
* Move Draw2d.h to Include folder
* Initial phase of UI Canvas Editor rendering with Atom
* Simplify Draw2d by removing BeginDraw2d/EndDraw2d which is no longer needed
* Fix compile errors for non-unity builds
* renaming and organizing files
* removed unused files
* Removing unnecessary file
* moved file
* reverting movement of 3rdparty associations from gems to global
* removing unnecessary calls to ly_add_external_target_path
* fixing install prefix of ci_build
* Fixes to get 3rdparties declared in gems to be installed
* Allowing to install just one configuration
* Adding empty line at the end
* removing commented code
* setting IMPORETD_LOCATION_<CONFIG> and defaulting IMPORTED_LOCATION to the profile config in case other configs are not installed
LYN-2998
added protections around physx AZ::Events handlers that are connected/disconnected on selection events.
fixed entities not being deselected when entering game mode in editor.
* Remove Level Inspector from Prefab mode, and integrate the same behavior in the Entity Inspector
* Show prefab name in level entity row of the Outliner. Allow Ui Handlers to prevent renaming.
* Separate setting the prefab's template path and the container entity name.
* Disable reparenting to root level
* Disable the ability to rename the level entity.
* Fixes as per Ram's review
-Implements ResetInputChannels for ViewportController API and SetEnabled for ViewportControllerList
-Disables all viewport controllers while in game mode
An optimization introduced in Prefab mode currently changes the relative ordering of children, causing stale QModelIndex variables to still be referenced and crash the Editor sporadically. This change is theoretically a bit slower, but still much faster than the pre-optimization times.
Co-authored-by: Shirang Jia <shiranj@amazon.com>
Co-authored-by: Shirang Jia <shiranj@amazon.com>
Specifically this:
-Ensures key/mouse up event propagation works across multiple viewports
-Ensures that mouse up events for manipulators only get delivered if there's a corresponding mouse down event
-Also tidies up the "are we done processing events this tick?" logic in ViewportManipulatorController
Removed AssetProcessor Settings from the bootstrap.cfg file as they get overridden by the Engine/Registry/bootstrap.setreg file and is therefore a "trap" to set them.
Users will not see any functionality change from modifiying those values.
grabKeyboard was used by CRenderViewport to ensure it received some events, but that logic is no longer needed and the corresponding release was removed. This just removes grabKeyboard entirely - eventually all input event logic will be removed as well.
the project root and engine root to fix issues with running the Editor
or AssetProcessor from within the project folder overriding the
project_path with the engine root bootstrap.cfg project_path entry
The order in which the project path is overridden as follows
1. The <engine-root>/bootstrap.cfg is first merged into the Settings
Registry. Any '/Amazon/AzCore/Bootstrap/project_path' would be used
if the following steps don't override that key.
2. Followed by general *.setreg/*.setregpatch files being merged into
the Settings Registry which can override the
'/Amazon/AzCore/Bootstrap/project_path' key
3. Next a project.json file searched upwards from the current executable
directory to determine the project path
4. Finally if a command line parameter that overrides the project path
is supplied it is used instead
I wasn't able to reproduce the deadlock, but from the reported callstack, the following lock inversion happens:
* EditorSurfaceDataSystemComponent::OnCatalogLoaded locked the AssetCatalogRequestBus mutex by calling EnumerateAssets, and then locked m_assetMutex inside GetAsset->FindOrCreateAsset inside the enumerate callback.
* Loading threads would lock m_assetMutex in AssetManager::ValidateAndRegisterAssetLoading, then lock the AssetCatalogRequestBus inside the Asset<T> copy constructor when calling UpdateDebugStatus when the constructor calls SetData->UpgradeAssetInfo->UpdateAssetInfo->AssetCatalogRequestBus::GetAssetInfoById
This should solve the lock inversion on both sides of the problem:
* UpdateDebugStatus now takes in a const ref instead of a copy, so the copy constructor isn't called.
* EditorSurfaceDataSystemComponent::OnCatalogLoaded is rewritten to call GetAsset outside of the enumeration call.
As a bonus, this also removes the blocking load call. The rest of the code already supports asynchronous refreshes as the list assets are added / modified / removed, so this code was changed to leverage the asynchronous refreshes as well.
* removed the script rule from the Editor, now will only be supported via a script or JSON manual edits
* Mesh Serialization - scriptProcessorRule doesn't save with field empty, but produces no error
* added a test to make sure Script Processor Rule operates with an empty filename
Jira: https://jira.agscollab.com/browse/ATOM-14889
Tests: Launched the Editor to removed the script rule from the Editor