Commit Graph

85 Commits

Author SHA1 Message Date
Esteban Papp 76a6df341b SPEC-2513 Fixes to enable w4457 2021-06-04 10:51:47 -07:00
rhongAMZ fe98c34f50 EMFX - Refactor the emfx actor asset loading. (#1101)
Refactor emfx asset loading. The mesh asset, skinMetaAsset and morphTargetMeta asset are part of the dependency.
2021-06-03 19:59:29 -07:00
Esteban Papp 29c71b4e53 SPEC-2513 Fixes to enable w4701 (#1105)
* Some fixes

* more fixes

* fixes for debug
2021-06-03 09:30:33 -07:00
Benjamin Jillich 0f699cfd47 [LYN-4157] EMotionFX: Adding/removing colliders to/from ragdoll and saving the actor crashes the Editor (#1055)
The actor dirty flag was set to true even after saving the asset info which resulted in the save dirty files dialog to appear providing the user to save the actor another time, just after saving it which is confusing. This might have led to rendering an already deleted actor and the crash. Though, I was not able to stably reproduce the issue and can't reproduce it anymore after this fix.
2021-06-02 08:35:59 +02:00
Chris Burel 71013c3835 Rename tests that reference issue numbers to have descriptive names (#913)
This also enables one such test that was named after an issue tracker
id, that was disabled because of an already resolved issue.
2021-06-01 10:51:06 -07:00
Aaron Ruiz Mora 00e860f326 Physics material system for spectra launch
- Invalidate 'Physics Materials From Mesh' boolean from collider component
- Removed material library from material selector. Default material library will always be used instead.
- Marking failing automated test as xfail
- Added default material to physics configuration.
- Moved material library asset from physx configuration to physics configuration, as it doesn't need to be physx specific.
- Refactor physics material system having into account that there is only one material library in the project.
- Renaming code from DefaultMaterialLibrary to MaterialLibrary.
- All queries about physics materials unified under PhysicsMaterialRequests bus.
- PhysXSystem only manages the material library asset.
- Saving and reloading the same physics material asset with different content didn't trigger a events that the material library has changed.
- Changing Physics Material Request interface to use shared_ptr instead of weak_ptr to be simpler to handle the returned materials and having a more consistent code.
- Refactored Material Manager to improve its implementation. Still following the same approach of "creating materials on the fly as they are requested", but now it's doing it consistently across the interface, with private helpers functions FindOrCreateMaterial that simplify vastly the implementation.
- Material Manager now listens to change event of material library asset and default material configuration so it updates its materials accordingly.
- Complete Material move constructor and operator.
2021-05-28 20:16:25 +01:00
pappeste 01933f45b1 Merge branch 'main' into ly-as-sdk/LYN-2948
# Conflicts:
#	Gems/AtomLyIntegration/TechnicalArt/DccScriptingInterface/gem.json
2021-05-27 10:39:37 -07:00
pappeste 0dd8fce2b0 Pass on fixing LmbrCentral.Static dependencies 2021-05-27 10:30:11 -07:00
pappeste f1b688f435 Merge branch 'main' into ly-as-sdk/LYN-2948
# Conflicts:
#	CMakeLists.txt
#	Code/Tools/ProjectManager/Source/GemCatalog/GemInfo.h
#	Gems/AtomLyIntegration/AtomViewportDisplayInfo/gem.json
#	cmake/LYWrappers.cmake
#	cmake/SettingsRegistry.cmake
#	scripts/o3de/tests/unit_test_current_project.py
2021-05-27 10:29:19 -07:00
greerdv f4c017e813 Merge pull request #968 from aws-lumberyard-dev/animation-transform-scale
update usages of vector scale on Transform to use uniform scale
2021-05-27 16:44:26 +01:00
amzn-sean 529e29071c update Ragdoll component to only uses Handles (#981) 2021-05-27 16:42:17 +01:00
greerdv e0ed535771 remove unused render cube function 2021-05-27 14:29:54 +01:00
greerdv 4b16d34af8 update usages of vector scale on Transform to use uniform scale 2021-05-26 23:00:01 +01:00
SJ 8ca3b078a2 Remove bootstrap.cfg and some references to it.
Merge pull request #836 from aws-lumberyard-dev/LYN-2461
2021-05-26 09:32:57 -07:00
lumberyard-employee-dm 4652d47fb3 Merge remote-tracking branch 'origin/lawsonamzn_prototype_gem_naming_conventions' into ly-as-sdk/LYN-2948-phistere 2021-05-26 00:38:51 -05:00
lumberyard-employee-dm 76fe7f3666 Merge branch 'main' of https://github.com/aws-lumberyard/o3de into ly-as-sdk/LYN-2948-phistere 2021-05-25 23:48:55 -05:00
lumberyard-employee-dm 58bd72c429 Setting project path to AutomatedTesting to fix the EMotionFX CanUseFileMenu and CanOpenWorkspace test from failing when resolving a relative path 2021-05-25 22:53:56 -05:00
Chris Burel dacffc8f07 Remove the "(PREVIEW)" label from the Animation Editor (#926) 2021-05-25 16:05:09 -07:00
pappeste db0db5c1c0 Proper dependencies to LmbrCentral/LmbrCentral.Editor, mixing those two can cause Editor modules to load non-Editor modules 2021-05-24 18:57:48 -07:00
Nicholas Lawson c9d5d7fb77 The new gem registration and usage system
Merge from mainline (Rebase)
2021-05-20 10:47:03 -07:00
greerdv 7def4741cd merge from main 2021-05-19 12:14:25 +01:00
amzn-sean 672dad7fea combined the 2 physics shape collider config pair types into 1(#778) 2021-05-18 12:39:07 +01:00
amzn-sean 7f79cc8796 RemoveSimulatedBody automatically updates the requested handle to be invalid once removed. (#740) 2021-05-13 15:04:00 +01:00
greerdv ce3842ac84 Merge branch 'main' into non-uniform-scale-compatibility 2021-05-12 22:19:33 +01:00
greerdv 059f69e5e6 tidy up NonUniformScaleService compatibility 2021-05-12 21:20:23 +01:00
karlberg 74385a575f Merge remote-tracking branch 'origin' into MultiplayerComponents 2021-05-11 13:43:17 -07:00
karlberg 5440d0926d Fixing some dependencies in script canvas and emfx 2021-05-11 13:42:44 -07:00
Terry Michaels 8ddfcabae7 Removed unneeded comments (#673) 2021-05-10 22:02:30 -05:00
kberg-amzn bdaa7eb3c1 Merge pull request #544 from aws-lumberyard-dev/MultiplayerComponents
Multiplayer components, visibility fixes for gameplay runtime and localprediction player controller component.
2021-05-10 10:23:15 -07:00
bosnichd 440c40e490 Remove (almost) all references to pRenderer (#651)
Remove all references to pRenderer, except from the DebugDraw and LyShine Gems that are still being updated.
2021-05-10 10:05:15 -06:00
karlberg 751d13dd7b Merge remote-tracking branch 'origin' into MultiplayerComponents 2021-05-05 20:07:49 -07:00
bosnichd d7b796fd73 Remove I3DEngine CryCommon Interface (#567)
Delete:

- I3DEngine
- Missions
- Time of day
- GameEffectsSystem Gem
- ImageProcessing Gem
- SVOGI Gem
- Various other things that don't do anything now that the legacy renderer has been removed.
2021-05-05 09:07:28 -06:00
Aristo7 4c47d7b587 Merged main in 2021-05-04 10:13:50 -05:00
karlberg d0a561fa01 merging latest origin 2021-05-03 21:27:27 -07:00
Gene Walters 0c3e0f18cc Merge pull request #187 from aws-lumberyard-dev/LY123349_Emfx_MotionInstancePoolReduceFragmentation
Change reservation strategy in MotionInstancePool to reduce fragmentation.
2021-05-03 16:27:55 -07:00
karlberg 822368ef01 Changes to get visibility system working again in-game 2021-05-03 16:26:11 -07:00
Terry Michaels 55f2b24302 Legacy Mesh component removal
* Removed legacy components

* More legacy render component removal

* Starting removal of legacy mesh component dependencies

* Removed old light components that were allowing Atom test to succeed

* Testing increasing the timeout to see if it lets it pass in Jenkins

* put original timeout back

* reordered components to test if it is component specific or not

* Testing disabiling the test to see if we get a green

* Fixed the removal of the test to sandbox

* Removed Legacy Mesh Component and associated tendrils

* Removed some missed references

* Fixed some issues with unity builds and ambiguous naming

* Addressed review feedback
2021-05-03 17:17:18 -05:00
Chris Burel 13c7b06308 Handle EMotionFX hotkeys with QActions instead of in keyPressEvent (#514)
EMotionFX has user-customizable hotkeys. These hotkeys are registered by
individual plugins, and then the user can set what they want the hotkey to
be. The way this was implemented was by reimplementing `keyPressEvent` and
`keyReleaseEvent` for each widget that used customizable hotkeys, and in
there call `KeyboardShortcutManager::Check` to see if key press matched any
existing hotkey mapping.

However, the main Editor has behavior that prevents events from reaching
EMotionFX's `keyPressEvent` method, if a keypress matches a hotkey that is
also used by the main Editor. This is due to the global event filter
defined in `ShortcutDispatcher::eventFilter`. This event filter takes a Qt
`Shortcut` event, and will re-dispatch that event to all parent widgets of
a given receiver. So if a parent widget, like the main Editor, *does* have
a QAction that matches a given key sequence, that widget will receive the
event, the event is marked as processed, and no `KeyPress` event is ever
sent to the original widget where the event occurred.

All this means that processing hotkeys in a `keyPressEvent` won't work
reliably. The main editor defines a hotkey for the `delete` key, so that
can never be received in a `keyPressEvent` by any child widget of the
Editor.

This change removes all the hotkey logic from the `keyPressEvent` methods,
and replaces them with `QAction` instances. Hotkeys are defined with
`QAction::setShortcut`, and added to each widget that they apply to.

In addition, the `KeyboardShortcutManager` class had to be adjusted to suit
this new way of defining the hotkeys. It now has a pointer to each
`QAction*` that can have a customizable hotkey. It has also been greatly
simplified, since it can use a `QKeySequence` instead of separate variables
for `int key; bool hasCtrlModifier; bool hasAltModifier`.

Applying user-defined hotkeys now has to be done after the hotkeys are
registered from a plugin. It is the plugin's responsibility to reload the
user-defined hotkeys after registering all of its actions.
2021-05-03 15:00:40 -07:00
Gene Walters 284c34a1af Merge branch 'main' into LY123349_Emfx_MotionInstancePoolReduceFragmentation 2021-05-03 14:06:26 -07:00
Aristo7 64d980bc03 Deleted AzFramework::AtomActiveInterface 2021-05-03 15:40:32 -05:00
Benjamin Jillich 893d4208c0 [LYN-3312] EMotionFX: Multi-threading dual quaternion software skinning / Moving the mouse while having many characters on screen makes the editor unusably slow (#506)
Multi-threaded software skinning by splitting the mesh up into batches of 10,000 vertices, which results in 27 jobs being spawned and executed using a character asset from a customer having 262,676 vertices and a speed improvement of 12x on a 32-core machine.

Single-threaded: 11,61 ms
Multi-threaded (27 jobs): 0,96 ms

* Created a SkinRange() function that can skin a part of the vertices.
* The actual skinning is now using the job system to split up the skinning into several pieces and executes them in parallel.
* Ported the bone info array to AzCore.
* Fixed some issues with the mesh based bounds update in the actor instance.
2021-05-03 18:48:30 +02:00
Benjamin Jillich 3c7ca72693 [LYN-3269] EMotionFX Editor save changed files prompts users to save files to the cache (#469)
* The asset source filename is now displayed instead of the product filename.
* Fixed a stylesheet issue with screen scaling on 4K monitors for the saved changed files window.
* Cleaned up surrounding code.
2021-05-03 18:45:35 +02:00
bosnichd 1d4c483e73 Red code legacy renderer (#383)
- Remove some references to gEnv->pRenderer/GetIEditor()->GetRenderer() that is now always null.
- Restore the debug console to existence.
- Stop building the following in preparation for their removal:

Code/CryEngine/Cry3DEngine/*
Code/CryEngine/RenderDll/*
Code/Tools/CryFXC/*
Code/Tools/HLSLCrossCompiler/*
Code/Tools/HLSLCrossCompilerMETAL/*
Code/Tools/RC/*
Code/Tools/ShaderCacheGen/*
Tools/CrySCompileServer/*
2021-04-30 07:31:42 -06:00
Benjamin Jillich aa5ddbf532 [LYN-3344] EMotionFX: Data integrity error, missing keyframe at the end of the animation (#418)
Animation tracks in the DCC tool formats are often stored individually, each having its own duration. For EMotion FX motion data, it is required to have tracks with the same duration and e.g. a position track has to match the duration of a morph track. This will be automatically fixed by adding missing keyframes at the end of the tracks to match the animation's global duration. The value of these are the same as the last one of the given track so that they freeze at that value.

* Added function that adds missing keyframes to match the individual tracks' duration for the non-uniform motion data in emfx.
* Added data integrity checks for various stages of the motion data builder / motion exporter.
* Checking for data integrity issues with an assert in the emfx importer. This is just a safety check and we don't need that for release builds as they should be captured at asset processing time already.
2021-04-30 07:21:52 +02:00
Gene Walters 53d710df94 Merge branch 'main' into LY123349_Emfx_MotionInstancePoolReduceFragmentation 2021-04-29 19:34:36 -07:00
Gene Walters 2b8981d72f Merge branch 'main' into LY123349_Emfx_MotionInstancePoolReduceFragmentation 2021-04-29 10:48:57 -07:00
Benjamin Jillich 0603fee04e [LYN-3072] TQO Animation: "Retarget Motion" on Simple Motion sends Asserts (#358)
* Added a check to only apply retargeting to animated joints. Joints that the motion does not animate won't have a valid motion data link and thus retargeting can't be applied.
* The check cannot be applied at a level above as we still need to adjust the translation for root nodes, even for the ones that the motion does not animate.
2021-04-29 12:20:20 +02:00
lumberyard-employee-dm 3dec5d3b71 LYN-2537 engine assets (#254)
* LYN-2537 Moved the Engine and Editor folder to be within the EngineAssets folder

* Fixed Documentation in bootstrap.cfg to correct the path to the user project specific registry file

* Adding a newline to the output of AssetCatalog 'Registering asset..., but type is not set' message

* Updating the AssetProcessorPlatformConfig.setreg Scan Folder to detect
the @ENGINEROOT@/EngineAssets/Engine path for engine runtime assets and
@ENGINEROOT@/EngineAssets/Editor path for engine tool assets

* Updating references to Icons and other assets to account for moving the
Engine and Editor folder under a single EngineAssets folder

* Moving the Engine Settings Registry folder from Engine/Registry -> Registry

* Removed the LY_PROJECT_CMAKE_PATH define as it is not portable to other locations. It is hard coded to the project location that was used for the CMake configuration. Furthermore it paths with backslashes within it are treated as escape characters and not a path separator

* Updated the LyTestTools asset_processor.py script to copy the exclude.filetag from the EngineAssets/Engine directory now

* Fixed Atom Shader Preprocessing when running using an External Project

* Updated the TSGenerateAction.cpp to fix the build error with using a renamed variable

* Updated the Install_Common.cmake ly_setup_others function to install the
EngineAssets directory and the each of the Gem's Assets directory while
maintaining the relative directory structure to the Engine Root
Also updated the install step to install the Registry folder at the
engine root

* Fixed the copying of the Registry folder to be in the install root, instead of under a second 'Registry' folder

* Moving the AssetProcessorPlatformConfig.setreg file over to the Registry folder

* Updated the LyTestTools and C++ code to point that the new location of
the AssetProcessorPlatformConfig.setreg file inside of the Registry
folder

* Renamed Test AssetProcessor*Config.ini files to have the .setreg extension

* Converted the AssetProcessor test setreg files from ini format to json
format using the SerializeContextTools convert-ini command

* Updated the AssetProcessor CMakeLists.txt to copy over the test setreg files to the build folder

* Updated the assetprocessor test file list to point at the renamed AsssetProcessor*Config setreg filenames

* Removed the Output Prefix code from the AssetProcessor. The complexity that it brought to the AP code is not needed, as users can replicate the behavior by just moving there assets underneath a another folder, underneath the scan folder

* Adding back support to read the AssetProcessorPlatformConfig.setreg file from the asset root. This is only needed for C++ UnitTests as they run in an environment where the accessing the Engine Settings Registry is not available

* Updating the Install_common.cmake logic to copy any "Assets" folder to
the install layout.
The Script has also been updated to copy over the "Assets" folder in the
Engine Root to the install layout instead of an "EngineAssets" folder

* Updating References to EngineAssets source asset folder in code to be the Assets source folder

* Moved the Engine Source Asset folder of 'EngineAssets' to a new folder name of 'Assets'. This is inline with the naming scheme we use for Gem asset folders

* Adding the EngineFinder.cmake to the AutomatedTesting project to allow it to work in a project centric manner

* Updating the LyTestTools copy_assets_to_project function to be able to copy assets with folders to the temporary project root
Fixed an issue in LyTestTools where the temporary log directory could have shutil.rmtree being called twice on it leading to an exception which fails an automated test

Updated the asset_procesor_gui_tests_2 AddScanFolder test to not use the
output prefix, but instead place the source asset root into a
subdirectory

* Correct the AssetProcessorPlatformConfig Scan Folders for the EngineAssets directory to point at the Assets directory

* Updated the asset procesor batch dependency test scan folder to point at the 'Assets' folder instead of 'EngineAssets'
2021-04-28 21:38:43 -05:00
greerdv b113f09a71 first pass of changing transform to use float for scale internally rather than Vector3 2021-04-27 18:12:46 +01:00
rhongAMZ fc3a48bb26 EMFX: Fix a crash when deleting blend tree node (#331) 2021-04-27 09:07:34 -07:00