Commit Graph

782 Commits (f2db30c5d04cd52d8d196fad47cae2010d40ec1b)

Author SHA1 Message Date
sconel 38b1a89631
Merge pull request #1233 from aws-lumberyard-dev/Prefabs/NestedContainerExport
Fix issue involving missing parent container entities in spawnables
5 years ago
Mike Balfour ffe913a2d6
Added ability to convert multiply-nested slices (#1239) (#1245)
* Addressed feedback from previous PR
* Change missing entity aliases to be deterministic.
When converting slices, this helps produce the same results on multiple reconversions of the same data.
* Exposed the asset filter callback.
This allows the slice converter to specifically load nested slices as opposed to not loading *any* referenced assets.
* Added support for multiply-nested slice instance conversion.

(cherry picked from commit 86136ddfa6)
5 years ago
sconel 40fa0a3a46 Remove optimization pragma 5 years ago
sconel 9efcc3a6b5 Fix compilation error and failing unit test 5 years ago
Danilo Aimini d3be5600c3
Increase rotation step for Transform (#1244)
Using the spinbox on the Transform Component is made very cumbersome by the low rotation step. Increased it to make it more usable.
5 years ago
Steve Pham b2bafc44ab
LYN-2705: Remove 'AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS' trait for Linux (#1235)
* Fix Delete_Real_Readonly_Fails to mark parent directory as read-only as well

Read-only files in Windows cannot be deleted. The previous version of this
code relied on that fact, and would attempt to delete a file even when
`skipReadOnly = true`, relying on the OS to refuse to delete the file if it
is read only. On Linux, it is the writable state of the *directory* that
determines if a file can be deleted or not. This fixes the test to set up
the correct situation where a file deletion would fail.

* Remove excluded items from a vector before iterating over it

Removing items from the `pathMatches` `QStringList` while iterating over it
was causing a segfault on Linux. This change separates out the item removal
from the item iteration, which allows the item iteration loop to use a
range-for loop instead of directly manipulating iterators.

* Remove invalid test that asserts a file's metadata file can have differing file casing

This test is asserting that a given source file and its accompanying
metadata file can have the the same name but differing case. This is really
testing whether or not the underlying filesystem that those files live on
is case sensitive or not. The 99% chance is that users are using the
default filesystem that their host OS gives them, NTFS on Windows, EXT* on
Linux, and APFS on Mac. Even though NTFS is case-insensitive by default,
it [can be configured per-directory](https://devblogs.microsoft.com/commandline/improved-per-directory-case-sensitivity-support-in-wsl/).
APFS as well can be configured to be case-sensitive. For users with case
sensitive filesystems, this test makes no sense. We could extend this test
to inspect the case-sensitivity of the underlying filesystem, but then it
is just testing the filesystem's behavior, which seems out of scope of this
test.

* Use a non-priviliged port for the Asset Processor tests

From https://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html:

> The TCP/IP port numbers below 1024 are special in that normal users are not
> allowed to run servers on them. This is a security feaure, in that if you
> connect to a service on one of these ports you can be fairly sure that you
> have the real thing, and not a fake which some hacker has put up for you.
>
> When you run a server as a test from a non-priviliged account, you will
> normally test it on other ports, such as 2784, 5000, 8001 or 8080.

* Fix for `QDir::rmdir(".")` not working in Linux

Qt uses `::rmdir` to remove directories on Linux. This comes from
[unistd.h](https://pubs.opengroup.org/onlinepubs/007904875/functions/rmdir.html)
The documentation for that function states:

> If the path argument refers to a path whose final component is either dot
> or dot-dot, rmdir() shall fail.

So calling `dir.rmdir(".")` will never work on Linux.

Instead, get the parent directory, and remove the child directory by name.

* Avoid lowercasing source asset paths when resolving dependencies

Source asset paths may be case sensitive, so their case must be preserved
when doing operations that hit the underlying filesystem. This method was
always lowercasing them, which would cause dependencies to not be found.

* Correct test to expect product filenames to be lowercase

The modtime tests were failing in Linux due to something unrelated to file
modtime checking. The Asset Processor Manager does this during AnalyzeJob:

```
if (foundInDatabase && jobs[0].m_fingerprint == jobDetails.m_jobEntry.m_computedFingerprint)
{
    // If the fingerprint hasn't changed, we won't process it.. unless...is it missing a product.
```

In this case, the test was setting up a product whose file case was the
same as the source asset, and would write it to the cache dir using mixed
case, but use the normal asset processor API to write the product file path
to the database, which recorded the path in lowercase. When the manager
then went to check if the source asset's products all exist, it checked the
lowercase path, which didn't exist.

This fixes that test failure, by updating the test to write the product
file to the cache using the proper lowercased path.

* Update test to define a "not current platform" for Linux

This test was failing because it was setting some "not current platform"
variable to be set to "pc" on Linux, when
`AssetSystem::GetHostAssetPlatform()` is defined to:

```cpp
inline const char* GetHostAssetPlatform()
{
    return "mac";
    return "pc";
    // set this to pc because that's what bootstrap.cfg currently defines the platform to "pc", even on Linux
    return "pc";
    #error Unimplemented Host Asset Platform
}
```

The test would go on to assert that "pc" was simultaneously in a list and
not in the same list.

This fixes the test by updating the code to set the "not the current
platform" variable appropriately on Linux.

The expectations were also updated to improve the output on test failure.
Instead of this:
```
Value of: recogs["rend"].m_platformSpecs.contains(platformWhichIsNotCurrentPlatform)
  Actual: true
Expected: false
```

You now get this:
```
Value of: recogs["rend"].m_platformSpecs.keys()
Expected: (has 3 elements and there exists some permutation of elements such that:
 - element #0 is equal to pc, and
 - element #1 is equal to es3, and
 - element #2 is equal to server) and (doesn't contain any element that is equal to pc)
  Actual: { pc, server, es3 } (of type QList<QString>), whose element #0 matches
```

* Prevent windows supported path separators to be included in the test paths for UpdateToCorrectCase_ExistingFile_ReturnsTrue_CorrectsCase

* Fix failing linux unit test "PlatformConfigurationUnitTests.TestFailReadConfigFile_RegularScanfolder"
caused by static variable not being reset from a different test run when using AssetUtilities::ComputeProjectPath

* Fix AZ_RTTI declaration for RequestEscalateAsset Message

* Implement FileWatcher for Linux to fix AssetProcessorMessages.All test (RequestAssetStatus)

* Split AssetProcessorMessages into 2 tests, one with RequestAssetStatus/ResponseAssetStatus and one without
Add The RequestAssetStatus/ResponseAssetStatus as a sandbox test because it relies on FileWatcher thread and seems to be timing related

* Remove FileWatcher_win.cpp from the Linux specific folder for FileWatcher

* - Fix build error related to non-unity builds
- Fixed failed linux test 'Test/LegacyTestAdapter.AllTests/UtilitiesUnitTest' caused by misplaced windows only EXPECT
- Remove test trait AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS for linux to expose remaining failed tests

* Fixed failed linux test 'Test/LegacyTestAdapter.AllTests/RCcontrollerUnitTests' caused by misplaced windows only EXPECT

* - Fix FileWatcher unit test, disable incompatible subtests for Linux
- Fix errors in FileWatcher_linux from results of the FileWatcher Unit Test

* Remove AZ::AssetProcessor.Tests.Sandbox tests from definition and restore the original AssetProcessorMessages.All tests now that Filewatcher_linux was fixed

* Fixes for failed unit tests: AssetProcessorManagerUnitTests and AssetProcessorManagerUnitTests_JobDependencies_Fingerprint
- Caused by differences between between case-sensitive files (Linux) and non-case-sensitive Filesystems (Windows)

* Update consts in FileWatcher_linux.cpp to constexpr

* Fixes related to PR comment suggestions

* - Removed std::bind and replaced with lambda in FileWatcher_linux
- Replaced String replace functions for path separators to use AZ::IO::Path::LexicallyNormal() instead

* Restoring string replace function in PathDependencyManager::ResolveDependencies due to unit test failure

Co-authored-by: Chris Burel <burelc@amazon.com>
5 years ago
sconel 856daf1485 Addressed PR feedback 5 years ago
Terry Michaels 91fb8be535
Added toolbar icons, updated viewport header UX (#1240) 5 years ago
Aaron Ruiz Mora 7a053d82e1
UX Workflow improvements for Physics Materials (#1237)
- Added button to PhysX Collider Component in PhysX Mesh's field to open FBX Settings.
- Added button Material Selection to open the physics material library in Asset Editor.
- Default Material in PhysX configuration is read only and consistent with the text in combo boxes.
- Material configuration field "Surface Type" renamed to "Name"
- Fixed bug in EditorColliderComponent where the material selection was not updated when changing the library.
- Fixed bug where the materials selection was not set to default when a physics material from the asset was not found in the library.
- Added attributes 'BrowseButtonEnabled' and 'BrowseButtonVisible' to PropertyAssetCtrl.
- Updated physx configuration setreg files of AutomatedTesting project.
5 years ago
Aaron Ruiz Mora 9d41954d0e
Added configurable physics materials per asset in PhysX group in FBX Settings. (#1186)
- Added back the' Physics Materials from Asset' tick in the collider components.
- Made physics materials names case insensitive.
- Refactored how to gather material information from fbx and used the same code for exporter and physx groups.
5 years ago
Terry Michaels adf6d93a06
Moved toggle pivot to lower in the context menu, converted all context menu additions to use a singular mechanism (#1209) 5 years ago
AMZN-koppersr c46c82079c Fixed string format bug in JsonRegistrationContext 5 years ago
sconel 2dee4d3ac9 Add support to export nested container entities. Resolves missing parents in spawnables 5 years ago
AMZN-koppersr 4f4cb4e220 Merge branch 'stabilization/2106' into JsonSerialization/UnsupportedWarnings 5 years ago
AMZN-koppersr 773dc42537
Merge pull request #1228 from aws-lumberyard-dev/Prefab/EntitySpawnNotificationRemoval
Removed AddOn(De)SpawnedHandler from Spawnable Entities Interface
5 years ago
Terry Michaels aa7bab1027
Make SimpleAssetPropertyHandler handle showing the edit button on component cards (#1221) 5 years ago
AMZN-koppersr 4ad0560d06 Removed AddOn(De)SpawnedHandler from Spawnable Entities Interface
The calls AddOnSpawnedHandler and AddOnDespawnedHandler were removed from the SpawnableEntitiesInterface. These functions will eventually be called from multiple threads and AZ::Event currently doesn't have a thread-safe version to support this. There's also a performance concern as these callbacks are called for each individual (de)spawn requests which can lead to multiple handlers being called without information that's relevant to the callback. It would be better to batch up all (de)spawn requests per ProcessQueue call and only have a single event do a single signal. Since both events are currently not being used they have been removed for now, but can be introduced -with the previously mentioned concerns in mind- when needed.
5 years ago
AMZN-koppersr e3fe4705f6 Post merge and Linux fixes. 5 years ago
AMZN-koppersr ccbb0f45f5 Merge branch 'stabilization/2106' into JsonSerialization/UnsupportedWarnings 5 years ago
AMZN-koppersr 6063e3a391 Simplified Json Serializer registration code
Updated the Json Serializer registeration code in the RegistrationContext.cpp to use try_emplace instead of find + end check + insert.
5 years ago
srikappa-amzn 20dc47e6d0
Merge pull request #1198 from aws-lumberyard-dev/Prefab/RemoveFileSizeLimits
Remove file size limits when loading prefabs and prefab-based-levels
5 years ago
carlitosan 52425d0949
Merge pull request #1194 from aws-lumberyard-dev/carlito/stabilization/2106
Fixes for internal if-branch node parser bug  (LYN-4347) and exposing…
5 years ago
rhongAMZ 3fd2f1305f
Selecting and deleting the level prefab root entity crashes editor (#1179)
Early remove the level instance from the entity id list in the delete function and duplicate function.
5 years ago
srikappa b23c95cab3 Removed the new added flavor of ReadFile and reused existing one 5 years ago
AMZN-koppersr dba1832821 Improved reporting on unsupported types by the Json Serialization
The Json Serialization currently doesn't support AZStd::any, AZStd::variant and AZStd::optional due to various JSON formatting concerns. This wasn't properly reported resulting in confusion about whether the missing functionality is intentional or a bug. This change makes this explicit with an error message.
As this solution uses a custom json serializer to report the issue, an option was added so it's possible to overwrite a serializer for a specific type.
This doesn't mean that the three listed types will never be supported. If/when a suitable format is found an implementation will be added.
5 years ago
srikappa 9dec723e33 Remove file size limits when loading prefabs and prefab-based-levels 5 years ago
chcurran 8cb6ef0721 Fix tmeplate arg names 5 years ago
chcurran 8d35a4255e Merge branch 'stabilization/2106' of https://github.com/aws-lumberyard/o3de into carlito/stabilization/2106 5 years ago
Esteban Papp 4b3d0d1054
LYN-4327 [SDK] External Gem's aren't added to the project solution when using SDK (#1191)
* should pickup the external directories registered by the project

* Add support for AzTest and AzTestRunner in the SDK

* missing IMPORT_LIB

* Moved where .Assets targets get generated so they are visible in the SDK

* generate the Directory.Build.props in the right path

* excluding target on platforms that dont support it
5 years ago
chcurran a766e3af5c Fixes for internal if-branch node parser bug (LYN-4347) and exposing properties for AZStd::tuple (LYN-3910) 5 years ago
Danilo Aimini 80f62d0523
LYN-3708 | Optimize Prefab instance propagation to stabilize UX (#700)
* Add instanceToIgnore to calls leading to instances being added to the queue for propagation.

* Change PrefabUndoEntityUpdate to make it so that the instance triggering the prefab template change is not reloaded on propagation, since it will already be up to date due to the way we generated the patch to begin with.

* Add FindPrefabDomValue utility function for paths

* Expose the level root prefab template id in the Prefab EOS Interface

* Fix Instance Alias Path generation to work with the new FindValueInPrefabDom function

* Stop reloading ancestors on propagation, and fix instance reloading so that the level dom is used (and overrides are preserved)

* Remove commented out code, refactor FindPrefabDomValue for paths (was handling an edge case incorrectly, and it's not even triggered)

* Fix issue with PathView reference - with PathView already being a reference, this resulted in a copy and triggered a warning during automated review builds.

* Additional fix to the build warning, remove redundant error message

* Revert changes to Instance::GetAbsoluteInstanceAliasPath(), as they were impacting serialization.

* Remove the dependency to the level root prefab template in the propagation code, climb up the hierarchy instead. This allows tests to work despite not using the EOS properly.
Also use PrefabDomPaths to retrieve the instance dom from the root dom instead of iterating.

* Remove now unused PrefabDomUtils function, extend optimization to link updates.

* Trigger a full instance propagation to correctly refresh alias references.
This is an issue in the test because some operations are called from the backend API and will not trigger propagation properly. Tests will soon be rewritten to more properly represent frontend workflows.

* Fixes lingering issues with propagation:
- Restores code that fixes the selection if entityIds have changed;
- Fixes Do() function on link update. Prefab containers will propagate correctly while still being stable during editing.

* Remove GetRootPrefabInstanceTemplateId (no longer necessary after the code has been rewritten)

* Fix optimization code to account for instances being removed and propagation being run out of order in Create Prefab undo.

* Renamed variable, added comments for clarity.

* Restore asserts on instance not being found; Rename Do to Redo for clarity; Add comments.

* Fixed incomplete comment.
5 years ago
amzn-sean 47e5c72f2e
fixed missing methods in SC from Trigger and Collision events (#1185) 5 years ago
Danilo Aimini 2d1e47793d
Move Duplicate menu items and shortcuts out of the Prefab Wip flag
Make duplicate prefab workflows available by default in Prefab mode.
5 years ago
Terry Michaels 0fcd6e84ec
Added mechanism for viewpanes to request buttons on the main toolbar (#1189) 5 years ago
Terry Michaels 593b679fa3
Main toolbar consolidation and cleanup (#1167)
* Moving menu options around

* Consolidation and moving of toolbar functioanlity

* Fixed non-unity build missing header

* Updated camera icon to the correct one

* Addressed review feedback

* Addressed review feedback

* Moved icons to new folder structure/naming
5 years ago
Esteban Papp 36cb0f6d40
SPEC-7178 Removal of precompiled cpp files (#1171)
* SPEC-7178  Removal of precompiled cpp files

* Missing files...
5 years ago
Nicholas Van Sickle 9e3d472700
Switch EditorContextMenu back to using popup instead of exec (#1158)
Switch EditorContextMenu back to using popup instead of exec

The switch to exec was a deliberate change, but upon further testing with the latest version of our camera input controllers (both the Legacy and Modern variants) it is no longer necessary to call exec, and doing so can cause a bug in which the cursor is still hidden when the context menu appears.
5 years ago
jackalbe 1a6b6d5bc0
{LYN-4230} Fixed loading *.pak files in Release builds (#1127)
* {LYN-4230} Fixed loading *.pak files in Release builds

* Helios - Release mode should load all *.pak files
* Tests: made a separate installation folder with a reduced "engine.pak" and a full "game.pak" which loads in release

* added unit test to regress the bug fix
5 years ago
Tom Hulton-Harrop cf8a6761bf
Formatting-only change - Update Manipulator and Viewport AzToolsFramework files (#1143)
* formatting changes to AzToolsFramework viewport related types + API comment style updates

* minor format change - include ordering

* improve formatting by moving comment

* fix compile error and switch to use AZ_Printf

* small polish changes after review feedback
5 years ago
Hasareej 5b940e8ed6
Viewport Ui Cluster Locked State Overlay (#1139)
* Viewport Ui Cluster Locked State Overlay

* PR feedback changes.
5 years ago
lumberyard-employee-dm 77f0d983c8
Mac SystemFile_Apple.h build fix (#1159) 5 years ago
rgba16f 74f474aae2
Add unit tests for the ViewportScreen ndc <-> worldspace utility functions (#1149)
Add ScreenNdcToWorld function to enable round trip testing.
5 years ago
AMZN-koppersr 7613797810
Merge pull request #1126 from aws-lumberyard-dev/SpawnableEntityIdMapping
Spawnable entity id mapping
5 years ago
AMZN-koppersr 4eb5b3554e Merge branch 'main' into SpawnableEntityIdMapping 5 years ago
AMZN-koppersr 40d90c49a3 Disabled writing UserSettings.xml in Spawnable tests. 5 years ago
AMZN-koppersr febf53671e Addressed PR feedback. 5 years ago
Esteban Papp 76a6df341b
SPEC-2513 Fixes to enable w4457 5 years ago
AMZN-koppersr ce7b81e2e7 Merge branch 'main' into SpawnableEntityIdMapping 5 years ago
Tom Hulton-Harrop 05e20803a8
First pass for getting things ready for grid snap button (#1118)
* first pass of change to simplify snapping for snap-to-grid button and fix snapping bug caused by non-uniform scale
5 years ago
lumberyard-employee-dm 4a1d713227
Fix recursive attempts to open the log file in the GameLauncher (#1114)
* Fix recursive attempts to open the log file in the GameLauncher

The AzFramework Application has been updated to default the @user@ and
@log@ aliases to the <engine-root>/user and <engine-root>/user/log
folder respectively if a project isn't set.

Fixed the SystemFile class to support negative offsets if Seek() as per
standard seek function such as fseek

Updated the CrySystem CLog class to use SystemFile instead of FileIOBase
to avoid any asserts that would cause CLog::OpenFile to be recursively
called infinitely

* Removing unused Force Closed variable

* AZ::IO::SystemFile build fixes for Unix platforms. Added a copy constructor for LUAEditorContextInterface.h to fix the LuaEditor build

* Adding missing includes to the WindowsAPI and Android SystemFile headers
5 years ago