Commit Graph

825 Commits

Author SHA1 Message Date
AMZN-koppersr 6b08ab6e03 Merge branch 'stabilization/2106' into JsonSerialization/ArrayDefaultsFix 2021-06-17 09:32:43 -07:00
AMZN-koppersr 1b1a5a28f4 Using zero-initializer for defaults in the Json Serializer instead of explicit values 2021-06-16 17:26:14 -07:00
AMZN-koppersr c482c17c9e Fixed an issue with the new Json Serializer Conformity tests and Atom's materials 2021-06-16 17:14:44 -07:00
AMZN-koppersr ddc60041d3 Addressing PR feedback 2021-06-16 16:40:46 -07:00
AMZN-koppersr c360e29fbf Fixed compile errors from Clang. 2021-06-16 13:57:17 -07:00
srikappa-amzn 604dca1c3e Merge pull request #1349 from aws-lumberyard-dev/BenchMarksReset
Change create-spawnable benchmarks to not destroy created spawnables immediately
2021-06-15 16:18:02 -07:00
AMZN-koppersr 98ff91d854 Removed unused test structure. 2021-06-15 16:12:36 -07:00
AMZN-koppersr 8af45d28be Additional unit tests for the Json Serialization
To cover the recent changes to the return code from containers and the initialization fixes additional unit tests were added. Almost all new tests are part of the conformity test suite so that they test any custom json serializers outside of AzCore that might need to be updated due to the fixes.
2021-06-15 14:14:31 -07:00
AMZN-koppersr 780dd0df9f Container fixes for the Json Serialization
These changes fix the following:
- Containers treat new values as new objects and make sure they're initialized.
- Fixed sized containers behave slightly different and will initialize all values when a new fixed sized container is created.
- Loading any values to a container will now return PartialDefaults instead of defaults used as adding any value to a container no longer makes the container a default as the default is always an empty container.
- The previous doesn't apply to fixed sized containers as those containers are always considered to have the exact number of values they can hold.
2021-06-15 14:14:27 -07:00
AMZN-koppersr f00fa26e12 Separated initializing new and all objects in the Json Serialization
Introduced OperationFlags::InitializeNewInstance to the Json Serialization which allows custom json serializers to indicate that they need to set defaults only to new instances. Objects created to fill in a pointer are considered new objects and serializer can use the new ContinuationFlags::LoadAsNewInstance to also inform that the load is happening on a new object. Serializer that use the InitializeNewInstance flag know that a new object is begin initialized if they're called with an explicit default object.
2021-06-15 14:14:24 -07:00
AMZN-koppersr fcd989c295 Removed unit tests from bool, int and double Json Serialization
A future commit will include a generic test conformity test suite to replace these.
2021-06-15 14:14:20 -07:00
AMZN-koppersr 08abc497f3 Fixed initialization of math types for Json Serialization
Several math types in AzCore deliberately don't initialize through a constructor. This set of changes make sure that they still get properly initialized in the Json Serialization instead having random values.
2021-06-15 14:14:16 -07:00
AMZN-koppersr bc5fc9a191 Added missing reflection to NameJsonSerializerTests 2021-06-15 14:14:12 -07:00
AMZN-koppersr 716e99a8a7 Reverted string change because it cause incorrect string sizes. 2021-06-15 14:14:08 -07:00
AMZN-koppersr a98355e000 Fix PODs not initializing in Json Serialization
When pointers are used new instances are created for pod types, which will have random values at that point. The Json Serialization did not set a value for these if they were explicitly set to defaults. This change adds initialization for explicit defaults in the bool, integer and double serializer plus unit tests to verify.
2021-06-15 14:14:04 -07:00
AMZN-koppersr 6f50207b06 Updated the unit tests for the Json Serialization array fix 2021-06-15 14:14:00 -07:00
Yuriy Toporovskyy 3c46a72672 Bug fix: handle the case where a container has only default elements 2021-06-15 14:13:56 -07:00
srikappa-amzn bd8b6aea8e Moved vector declartion inside state for loop 2021-06-15 14:12:08 -07:00
chcurran 9f7f6e84a4 Merge branch 'stabilization/2106' of https://github.com/aws-lumberyard/o3de into carlito/stabilization/2106 2021-06-15 12:10:10 -07:00
Mike Balfour ab3aa904f0 Fixed misc slice conversion bugs
* Fixed crash caused by nesting the same slice twice
If the same slice is nested at multiple levels in the same slice hierarchy, the second conversion would reregister the prefab and crash.  Now that case is detected and the slice isn't reconverted.

* Fixed json array patches where multiple elements are removed.
The patches now generate removals from back to front, instead of front to back, so that the indices remain valid as each patch is applied.
2021-06-15 14:00:47 -05:00
srikappa-amzn 9f9c01e781 Used reserve instead of resize 2021-06-15 11:10:45 -07:00
srikappa-amzn 5b4333e4b1 Added a comment and gave a variable better name 2021-06-15 11:07:43 -07:00
srikappa-amzn c8ba42d04f Merge branch 'stabilization/2106' into BenchMarksReset 2021-06-15 10:59:36 -07:00
sconel bd2a2ebcf5 Merge pull request #1293 from aws-lumberyard-dev/Prefabs/RemoveEditorInfoFromNestedContainerEntities
Fix nested container entities not getting editor info removed during prefab processing
2021-06-15 10:36:13 -07:00
Alex Peterson ecded991b5 Display error when unable to start Python
Added AzFramework Application, logging, unit tests
2021-06-14 17:02:22 -07:00
greerdv d72d988195 Merge pull request #1280 from aws-lumberyard-dev/simd-division-by-zero
avoid some divisions by zero in simd math types
2021-06-14 11:48:32 +01:00
SJ 6fdbce01eb Fix build and link errors in monolithic builds
Merge pull request #1288 from aws-lumberyard-dev/SPEC-7273
2021-06-11 18:40:52 -07:00
sconel e4921c8d0a Fix nested container entities not getting editor info removed during prefab processing 2021-06-11 17:45:46 -07:00
Danilo Aimini f32590d241 LYN-4042 | No UI Indication that Level is Modified (#1277)
* Restore the code that display the dirty marker on the Level container. Ensure the dirty marker is cleared on level save.

* Moving call one level up to allow usage of the SaveTemplateToString function without clearing the dirty flag.
2021-06-11 16:43:53 -07:00
chcurran 10081fefb9 Remove unwanted entries from node palette 2021-06-11 16:28:34 -07:00
srikappa-amzn e6ec9e48b4 Changed spawnables benchmark test to create multiple spawnables at once 2021-06-11 16:17:26 -07:00
cgalvan b08245a7f5 Merge pull request #1276 from aws-lumberyard-dev/cgalvan/FixInstantiatePrefabPopup
[LYN-4160] Fixed intermittent crash by changing instantiate prefab dialog to use the AzToolsFramework::GetActiveWindow() helper which always gives a valid active window.
2021-06-11 16:52:58 -05:00
amzn-sj e6b8dc2ce1 Disable AzTest and AzTestRunner in monolithic builds 2021-06-11 14:37:12 -07:00
greerdv 3895c93e04 avoid some divisions by zero in simd math types 2021-06-11 22:05:37 +01:00
carlitosan 43e157035e Merge pull request #1272 from aws-lumberyard-dev/carlito/stabilization/2106
Carlito/stabilization/2106  Fix for AP errors on graph, and Lua properties table fix
2021-06-11 13:51:08 -07:00
Chris Galvan 015f85db20 [LYN-4160] Fixed intermittent crash by changing instantiate prefab dialog to use the AzToolsFramework::GetActiveWindow() helper which always gives a valid active window. 2021-06-11 15:15:45 -05:00
srikappa-amzn 1582cb5257 Enabled instantiate benchmarks 2021-06-11 12:43:35 -07:00
srikappa-amzn 4c6bd5fcb7 Disabled instantiate and spawnable benchmarks 2021-06-11 11:38:49 -07:00
chcurran 168042dee4 Merge branch 'stabilization/2106' of https://github.com/aws-lumberyard/o3de into carlito/stabilization/2106 2021-06-11 10:50:51 -07:00
jackalbe 4818d1ce80 {LYN-4224} Fix for the file scan slowdown (#1252)
* {LYN-4224} Fix for the file scan slowdown (#1183)

* {LYN-4224} Fix for the file scan slowdown

* Fixed a slowdown in the file scanning logic
* Improved the file scanning logic from previous code by 40%

Tests:
Using Testing\Pytest\AutomatedTesting_BlastTest

old code:
=== 7 passed in 96.13s (0:01:36) ===

current code:
=== 7 passed in 160.45s (0:02:40) ====

newest code:
=== 7 passed in 52.91s ===

* fixing a unit test compile error

* unit test fixes

* another file improvement

* fix for legacy level loading taking too long

* making an enum for the search types

* switched the enum to "allow" types to make the input more clear

* got rid of orphaned const variables
2021-06-11 12:25:45 -05:00
srikappa-amzn 2722ed46c3 Reset prefab system in all prefab benchmarks 2021-06-11 10:03:20 -07:00
Eric Phister 0c7605c9b6 Update minimum required CMake version to 3.20 (#1253)
* Update the minimum CMake version to 3.20

Sets the cmake_minimum_required calls to version 3.20 and updates the
README.md to point at the general CMake download page instead of a stale
link.

* Remove unnecessary cmake minimum version

It was using an old 3.0 version and can be removed.

* Additional updates to CMake 3.20, build scripts

Updates the version and remove logic to find a CMake in 3rdParty.

* Removing backup path to ninja path in the build_ninja_windows.cmd

The backup path for finding ninja was coming from the Perforce depot which isn't available for o3de builds.

* Removing reference to 3rdParty Android SDK 29 from the build and run unit test script

The Android SDK is not part of the new 3rdParty system and users are expected to install the Android SDK on their own in order to build the engine for Android.

* Update the get_python scripts and README

No longer try to append a CMake path to LY_3RDPARTY_PATH, but do still
support LY_CMAKE_PATH because there are still uses of it.  Remove
mention of an LY_3RDPARTY_PATH-relative CMake path from the README.md.

* Removing LY_NINJA_PATH from the build_ninja_windows.cmd

Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
2021-06-11 12:00:55 -05:00
chcurran a995aee35a Properties__Index and Properties__NewIndex upvalue counts no reflect removal of net binding component 2021-06-11 09:47:44 -07:00
sconel 38b1a89631 Merge pull request #1233 from aws-lumberyard-dev/Prefabs/NestedContainerExport
Fix issue involving missing parent container entities in spawnables
2021-06-10 16:28:56 -07:00
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)
2021-06-10 16:16:03 -05:00
sconel 40fa0a3a46 Remove optimization pragma 2021-06-10 13:53:25 -07:00
sconel 9efcc3a6b5 Fix compilation error and failing unit test 2021-06-10 13:15:53 -07:00
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.
2021-06-10 12:30:17 -07:00
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>
2021-06-10 11:04:18 -07:00
sconel 856daf1485 Addressed PR feedback 2021-06-10 10:46:36 -07:00