From 16f9eece76872be37b236367b93dafd5927eb9d0 Mon Sep 17 00:00:00 2001 From: pconroy Date: Thu, 1 Jul 2021 14:12:12 -0700 Subject: [PATCH 01/15] Set correct display text for the default and minimal projects. Signed-off-by: pconroy --- Templates/DefaultProject/template.json | 4 ++-- Templates/MinimalProject/template.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Templates/DefaultProject/template.json b/Templates/DefaultProject/template.json index 98cf0fc815..fabfb0cf18 100644 --- a/Templates/DefaultProject/template.json +++ b/Templates/DefaultProject/template.json @@ -4,8 +4,8 @@ "restricted_platform_relative_path": "Templates", "origin": "The primary repo for DefaultProject goes here: i.e. http://www.mydomain.com", "license": "What license DefaultProject uses goes here: i.e. https://opensource.org/licenses/MIT", - "display_name": "Default", - "summary": "A short description of DefaultProject.", + "display_name": "Standard", + "summary": "This template has everything you need to build a full online 3D game or application.", "included_gems": ["Atom","Camera","EMotionFX","UI","Maestro","Input","ImGui"], "canonical_tags": [], "user_tags": [ diff --git a/Templates/MinimalProject/template.json b/Templates/MinimalProject/template.json index 18b10e8cae..a244904578 100644 --- a/Templates/MinimalProject/template.json +++ b/Templates/MinimalProject/template.json @@ -2,8 +2,8 @@ "template_name": "MinimalProject", "origin": "The primary repo for MinimalProject goes here: i.e. http://www.mydomain.com", "license": "What license MinimalProject uses goes here: i.e. https://opensource.org/licenses/MIT", - "display_name": "MinimalProject", - "summary": "A short description of MinimalProject.", + "display_name": "Minimal", + "summary": "This will be a good starting point for developers who are looking for building the game with the bare minimum of gems in O3DE, and adding more when needed. ", "canonical_tags": [], "user_tags": [ "MinimalProject" From adb3b9366c9a4d9a6cbc83a4ec3069bccfdfb5e1 Mon Sep 17 00:00:00 2001 From: pconroy Date: Thu, 1 Jul 2021 12:28:21 -0700 Subject: [PATCH 02/15] Update icons and launcher images to the O3DE logo Signed-off-by: pconroy --- Code/Editor/res/LegacyLogo.bmp | 3 --- Templates/DefaultProject/Template/Resources/GameSDK.ico | 4 ++-- .../DefaultProject/Template/Resources/LegacyLogoLauncher.bmp | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage1024x768.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage1536x2048.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage2048x1536.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage768x1024.png | 4 ++-- .../LaunchImage.launchimage/iPhoneLaunchImage640x1136.png | 4 ++-- .../LaunchImage.launchimage/iPhoneLaunchImage640x960.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadAppIcon152x152.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadAppIcon76x76.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadProAppIcon167x167.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png | 4 ++-- Templates/MinimalProject/Template/Resources/GameSDK.ico | 4 ++-- .../MinimalProject/Template/Resources/LegacyLogoLauncher.bmp | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png | 4 ++-- .../Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png | 4 ++-- .../Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage1024x768.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage1536x2048.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage2048x1536.png | 4 ++-- .../LaunchImage.launchimage/iPadLaunchImage768x1024.png | 4 ++-- .../LaunchImage.launchimage/iPhoneLaunchImage640x1136.png | 4 ++-- .../LaunchImage.launchimage/iPhoneLaunchImage640x960.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadAppIcon152x152.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadAppIcon76x76.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadProAppIcon167x167.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png | 4 ++-- .../TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png | 4 ++-- .../TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png | 4 ++-- 63 files changed, 124 insertions(+), 127 deletions(-) delete mode 100644 Code/Editor/res/LegacyLogo.bmp diff --git a/Code/Editor/res/LegacyLogo.bmp b/Code/Editor/res/LegacyLogo.bmp deleted file mode 100644 index dd2ea18ecc..0000000000 --- a/Code/Editor/res/LegacyLogo.bmp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:97f4004da6ec1bf07d522d6675f814e53e36923a45084ff5d7e4113e293d4fec -size 117656 diff --git a/Templates/DefaultProject/Template/Resources/GameSDK.ico b/Templates/DefaultProject/Template/Resources/GameSDK.ico index cb935cd926..0be1f28b6c 100644 --- a/Templates/DefaultProject/Template/Resources/GameSDK.ico +++ b/Templates/DefaultProject/Template/Resources/GameSDK.ico @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61efd8df621780af995fc1250918df5e00364ff00f849bef67702cd4b0a152e1 -size 65537 +oid sha256:41239f8345fa91fe546442208461ad3cd17c7a7a7047af45018b97363bfea204 +size 109783 diff --git a/Templates/DefaultProject/Template/Resources/LegacyLogoLauncher.bmp b/Templates/DefaultProject/Template/Resources/LegacyLogoLauncher.bmp index fe0adc54a4..7a35cddd49 100644 --- a/Templates/DefaultProject/Template/Resources/LegacyLogoLauncher.bmp +++ b/Templates/DefaultProject/Template/Resources/LegacyLogoLauncher.bmp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf6d56fe4c367d39bd78500dd34332fcad57ad41241768b52781dbdb60ddd972 -size 347568 +oid sha256:7c8433178baebafe984ca23d9325d3c71b5a177fc3b3b869afbb01a583542fbe +size 462842 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png index 5970ea34ba..d30f2d3686 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e38257b6917cdf5d73e90e6009f10c8736d62b20c4e785085305075c7e6320e2 -size 32037 +oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92 +size 9679 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png index 9e30e09547..5a73a4a54d 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f41a37d2347a617e93bd97adaf6d4c161c471ca3ef7e04b98c65ddda52396dc -size 27833 +oid sha256:f3c651ca45a83d0f68bdaa466826a29b2ca6f674e225d90e68b7dbadc2ba582d +size 6620 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png index aeb29abd0a..a7ec66841f 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b07984494059bf827bc485cbea06d12e0283811face1a18799495f9ba7ae8af1 -size 20779 +oid sha256:f7d5b15add5104d91a03df7d86898f4bc415d095d11c23555b24440497371948 +size 1061 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png index 445a389d61..474378c926 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e645142d284de40aafb7a4a858f3df92b6a5ba9b03fa5f1a2d3cb25211597926 -size 21857 +oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec +size 1910 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png index 0904cf7ce8..f9ff1c15e3 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07631f41b8dea80713d2463f81a713a9a93798975b6fb50afbeeb13d26c57fa2 -size 48899 +oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e +size 18716 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png index 5970ea34ba..d30f2d3686 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e38257b6917cdf5d73e90e6009f10c8736d62b20c4e785085305075c7e6320e2 -size 32037 +oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92 +size 9679 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png index 445a389d61..474378c926 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e645142d284de40aafb7a4a858f3df92b6a5ba9b03fa5f1a2d3cb25211597926 -size 21857 +oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec +size 1910 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png index 1fad9bda96..3359e99cd4 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad83faf98b49f4e37112baedeae726f4f8d71bcdd1961d9cdad31f043f8ca666 -size 24003 +oid sha256:749bcd29d73e5ef2d1ef8b2d878626d0bca09c6b0d5f1c9dc6cefe7b9082c8cc +size 3758 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png index e1517dddb6..f9ff1c15e3 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68529a6c11d5ffa7ecd9d5bbb11ceea28e6852bd45946b525af09602c9a1e1bf -size 48899 +oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e +size 18716 diff --git a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png index b425cb685f..a736c7f6b8 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png +++ b/Templates/DefaultProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a70003840b418848b2ce6c18ed7cbbfcd6fcf76598a6601dca8b98d9b6c1a2f -size 114706 +oid sha256:5719043940db268dccd2e20bd9d6aa13131890d43edf002a173714ae33890422 +size 29510 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png index 1249ef3703..9f586d6af3 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31afa7ed44c5d9844c8d6ce08beccac482c3f43590869a3d190d06e2df377ccc -size 137472 +oid sha256:a4018d9df45b4a04d4cf24a40fe01aa7e30e44a9fdd8ad9a41b0d87791786c12 +size 30442 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png index cdb6d5a82a..c978631c22 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0aac8ef9899442820bec0df8bf6434a46cc787d57c5d6d38a04727b8dc310048 -size 338281 +oid sha256:2eea06cb8ad05acefe9664551af5645d52d9763b82473b1fd4a2b2b6f62e96d3 +size 53550 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png index 954d3084c8..a52e832a42 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c07495891f15b138ba09f142777b0f43217bf8be05cbb74ba938319f3425980c -size 321125 +oid sha256:90991aca91ab7222fdb85c03947cff38f549a6492551e7447e0c8f55022aae48 +size 52467 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png index 021319fbc3..3e441fab3b 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6bf6acb92421a453a36fc143ab6cefda14d631ea5e6dbf95c6e252a445fcbac -size 144797 +oid sha256:6c8439a64d18dbff17dd67f6405bf49f99695e9b22fc2cc541dc72c6e3167307 +size 30564 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png index a15fd777fa..e662e9675c 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9ad650fda925b1c076a67d1ef70315fe4f14db888c9fd36ee4eba1d18c1e7d1 -size 166749 +oid sha256:f752615184160d7a78f28d9eef354c86e544f11eb1dde9f651d7acd315b3f2e6 +size 35934 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png index 2855f4069d..2753529fc2 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16f6e9d7bd15fc528d934c252213de8792812e708b1810191c5f1767f7165852 -size 142331 +oid sha256:1a43f1d893e85aa99d335a657ec0f6c13a741db976c033451ab9a2328b8a5970 +size 35559 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png index b0dd493c11..ad18894411 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4901093fa6190bf37291b0fb6de23fba1be8ebbd742775a8565a4106722fbb6 -size 31942 +oid sha256:ebfc95bd4c0cbcc53d0ef9d314d26e09a347a22dabbf210597f405d9ed8646bf +size 7729 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png index 21aa62e96b..888d8cf785 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4ae97c4f44910121a61686862c8342ce598db4cdf9d46b29e96d3cb9e43bd06 -size 22158 +oid sha256:99cb7da9282cfcfa64598455827f27ca6791d45ca0d2c3c2dc090d82468dac03 +size 4447 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png index 6b696a84b2..86aa72016a 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:061e2d0ce8dc852dd298c80f2aed5fee8ea4b87511c00662aa2d00922c0ba3c2 -size 30162 +oid sha256:101568e946f1d4cea86d666187bbf71116bbf62e6eaf6d80bc3c5e2e184bdb15 +size 7938 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png index f3dfa05839..79331c29b1 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fb4b4b77620d99dae7473b7bd8affe14630419835bd5719167ed200e657fa4f -size 17504 +oid sha256:cf930ffd4efb0b7b627e05aac6e0f56252ea206623e8b5d097d803aa315cdfb8 +size 1812 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png index 5325b805fd..27c4aaef2e 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8aa9b1194f3244025578225a6a87cbc2dd12c70955ff615c8af640ea7f1334f1 -size 19619 +oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb +size 3424 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png index 98d8455838..df1630a95a 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c25ffb1af8160b3202977de8c32aaa235e22c643ffd8004e4546c96868ef3b9 -size 18317 +oid sha256:cf087f357cd439d14651073ac079542c60f0648a30dced2a8d19912124b3f8b6 +size 2310 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png index 7482f6c892..4b7f5d6318 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2db961b8f922a552d8ad374fdb56029efd4049a6cde10399b3d961242c82ce53 -size 22571 +oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06 +size 4437 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png index da987b86f9..674c6da124 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f39d897a57d4da0a70ede7c91339660b28e9d8c57b3e7d749807b13baa4b85f3 -size 28559 +oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec +size 6546 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png index 205e025c36..c0c10c2390 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:263b75d58328499eef1f8fa2e64c30706f546badcc0c4464a043b231da93cd0d -size 34969 +oid sha256:3b8717c5f2109dfce1bf7b017278059d4915b524a6eb7e83cfb1926e54ed6869 +size 7383 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png index 0deb4f4f35..27c4aaef2e 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33522ad8a8e826b22dd9ad214f56e63e24bf55c00bd8c845925d848b855dfb48 -size 19619 +oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb +size 3424 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png index 78591751d7..9093e13867 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f405c9f3d908d038aea26049e533b0d10955adfac370c7b3b80209997ea706d0 -size 24407 +oid sha256:a32908a839a6cb0ca2a76d6aa60376ba8a14b4428f06c13149ec277514eb5676 +size 4533 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png index 034dcb9fed..674c6da124 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d110f6e151799a2327bcdf5ef94d6fc82b114783a8cc973a8915896679ba4a80 -size 28559 +oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec +size 6546 diff --git a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png index f0fa89149c..4b7f5d6318 100644 --- a/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png +++ b/Templates/DefaultProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db8f00568fad4e49b05249aaa7a48c9fbf85c8b7a78489c83dc9b8161778bcef -size 22571 +oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06 +size 4437 diff --git a/Templates/MinimalProject/Template/Resources/GameSDK.ico b/Templates/MinimalProject/Template/Resources/GameSDK.ico index cb935cd926..0be1f28b6c 100644 --- a/Templates/MinimalProject/Template/Resources/GameSDK.ico +++ b/Templates/MinimalProject/Template/Resources/GameSDK.ico @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61efd8df621780af995fc1250918df5e00364ff00f849bef67702cd4b0a152e1 -size 65537 +oid sha256:41239f8345fa91fe546442208461ad3cd17c7a7a7047af45018b97363bfea204 +size 109783 diff --git a/Templates/MinimalProject/Template/Resources/LegacyLogoLauncher.bmp b/Templates/MinimalProject/Template/Resources/LegacyLogoLauncher.bmp index fe0adc54a4..7a35cddd49 100644 --- a/Templates/MinimalProject/Template/Resources/LegacyLogoLauncher.bmp +++ b/Templates/MinimalProject/Template/Resources/LegacyLogoLauncher.bmp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf6d56fe4c367d39bd78500dd34332fcad57ad41241768b52781dbdb60ddd972 -size 347568 +oid sha256:7c8433178baebafe984ca23d9325d3c71b5a177fc3b3b869afbb01a583542fbe +size 462842 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png index 5970ea34ba..d30f2d3686 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128 _2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e38257b6917cdf5d73e90e6009f10c8736d62b20c4e785085305075c7e6320e2 -size 32037 +oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92 +size 9679 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png index 9e30e09547..5a73a4a54d 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f41a37d2347a617e93bd97adaf6d4c161c471ca3ef7e04b98c65ddda52396dc -size 27833 +oid sha256:f3c651ca45a83d0f68bdaa466826a29b2ca6f674e225d90e68b7dbadc2ba582d +size 6620 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png index aeb29abd0a..a7ec66841f 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b07984494059bf827bc485cbea06d12e0283811face1a18799495f9ba7ae8af1 -size 20779 +oid sha256:f7d5b15add5104d91a03df7d86898f4bc415d095d11c23555b24440497371948 +size 1061 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png index 445a389d61..474378c926 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e645142d284de40aafb7a4a858f3df92b6a5ba9b03fa5f1a2d3cb25211597926 -size 21857 +oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec +size 1910 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png index 0904cf7ce8..f9ff1c15e3 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256 _2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07631f41b8dea80713d2463f81a713a9a93798975b6fb50afbeeb13d26c57fa2 -size 48899 +oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e +size 18716 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png index 5970ea34ba..d30f2d3686 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e38257b6917cdf5d73e90e6009f10c8736d62b20c4e785085305075c7e6320e2 -size 32037 +oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92 +size 9679 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png index 445a389d61..474378c926 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e645142d284de40aafb7a4a858f3df92b6a5ba9b03fa5f1a2d3cb25211597926 -size 21857 +oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec +size 1910 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png index 1fad9bda96..3359e99cd4 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad83faf98b49f4e37112baedeae726f4f8d71bcdd1961d9cdad31f043f8ca666 -size 24003 +oid sha256:749bcd29d73e5ef2d1ef8b2d878626d0bca09c6b0d5f1c9dc6cefe7b9082c8cc +size 3758 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png index e1517dddb6..f9ff1c15e3 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68529a6c11d5ffa7ecd9d5bbb11ceea28e6852bd45946b525af09602c9a1e1bf -size 48899 +oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e +size 18716 diff --git a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png index b425cb685f..a736c7f6b8 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png +++ b/Templates/MinimalProject/Template/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a70003840b418848b2ce6c18ed7cbbfcd6fcf76598a6601dca8b98d9b6c1a2f -size 114706 +oid sha256:5719043940db268dccd2e20bd9d6aa13131890d43edf002a173714ae33890422 +size 29510 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png index 1249ef3703..9f586d6af3 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31afa7ed44c5d9844c8d6ce08beccac482c3f43590869a3d190d06e2df377ccc -size 137472 +oid sha256:a4018d9df45b4a04d4cf24a40fe01aa7e30e44a9fdd8ad9a41b0d87791786c12 +size 30442 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png index cdb6d5a82a..c978631c22 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0aac8ef9899442820bec0df8bf6434a46cc787d57c5d6d38a04727b8dc310048 -size 338281 +oid sha256:2eea06cb8ad05acefe9664551af5645d52d9763b82473b1fd4a2b2b6f62e96d3 +size 53550 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png index 954d3084c8..a52e832a42 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c07495891f15b138ba09f142777b0f43217bf8be05cbb74ba938319f3425980c -size 321125 +oid sha256:90991aca91ab7222fdb85c03947cff38f549a6492551e7447e0c8f55022aae48 +size 52467 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png index 021319fbc3..3e441fab3b 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6bf6acb92421a453a36fc143ab6cefda14d631ea5e6dbf95c6e252a445fcbac -size 144797 +oid sha256:6c8439a64d18dbff17dd67f6405bf49f99695e9b22fc2cc541dc72c6e3167307 +size 30564 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png index a15fd777fa..e662e9675c 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9ad650fda925b1c076a67d1ef70315fe4f14db888c9fd36ee4eba1d18c1e7d1 -size 166749 +oid sha256:f752615184160d7a78f28d9eef354c86e544f11eb1dde9f651d7acd315b3f2e6 +size 35934 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png index 2855f4069d..2753529fc2 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16f6e9d7bd15fc528d934c252213de8792812e708b1810191c5f1767f7165852 -size 142331 +oid sha256:1a43f1d893e85aa99d335a657ec0f6c13a741db976c033451ab9a2328b8a5970 +size 35559 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png index b0dd493c11..ad18894411 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4901093fa6190bf37291b0fb6de23fba1be8ebbd742775a8565a4106722fbb6 -size 31942 +oid sha256:ebfc95bd4c0cbcc53d0ef9d314d26e09a347a22dabbf210597f405d9ed8646bf +size 7729 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png index 21aa62e96b..888d8cf785 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4ae97c4f44910121a61686862c8342ce598db4cdf9d46b29e96d3cb9e43bd06 -size 22158 +oid sha256:99cb7da9282cfcfa64598455827f27ca6791d45ca0d2c3c2dc090d82468dac03 +size 4447 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png index 6b696a84b2..86aa72016a 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:061e2d0ce8dc852dd298c80f2aed5fee8ea4b87511c00662aa2d00922c0ba3c2 -size 30162 +oid sha256:101568e946f1d4cea86d666187bbf71116bbf62e6eaf6d80bc3c5e2e184bdb15 +size 7938 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png index f3dfa05839..79331c29b1 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fb4b4b77620d99dae7473b7bd8affe14630419835bd5719167ed200e657fa4f -size 17504 +oid sha256:cf930ffd4efb0b7b627e05aac6e0f56252ea206623e8b5d097d803aa315cdfb8 +size 1812 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png index 5325b805fd..27c4aaef2e 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8aa9b1194f3244025578225a6a87cbc2dd12c70955ff615c8af640ea7f1334f1 -size 19619 +oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb +size 3424 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png index 98d8455838..df1630a95a 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c25ffb1af8160b3202977de8c32aaa235e22c643ffd8004e4546c96868ef3b9 -size 18317 +oid sha256:cf087f357cd439d14651073ac079542c60f0648a30dced2a8d19912124b3f8b6 +size 2310 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png index 7482f6c892..4b7f5d6318 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2db961b8f922a552d8ad374fdb56029efd4049a6cde10399b3d961242c82ce53 -size 22571 +oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06 +size 4437 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png index da987b86f9..674c6da124 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f39d897a57d4da0a70ede7c91339660b28e9d8c57b3e7d749807b13baa4b85f3 -size 28559 +oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec +size 6546 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png index 205e025c36..c0c10c2390 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:263b75d58328499eef1f8fa2e64c30706f546badcc0c4464a043b231da93cd0d -size 34969 +oid sha256:3b8717c5f2109dfce1bf7b017278059d4915b524a6eb7e83cfb1926e54ed6869 +size 7383 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png index 0deb4f4f35..27c4aaef2e 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33522ad8a8e826b22dd9ad214f56e63e24bf55c00bd8c845925d848b855dfb48 -size 19619 +oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb +size 3424 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png index 78591751d7..9093e13867 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f405c9f3d908d038aea26049e533b0d10955adfac370c7b3b80209997ea706d0 -size 24407 +oid sha256:a32908a839a6cb0ca2a76d6aa60376ba8a14b4428f06c13149ec277514eb5676 +size 4533 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png index 034dcb9fed..674c6da124 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d110f6e151799a2327bcdf5ef94d6fc82b114783a8cc973a8915896679ba4a80 -size 28559 +oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec +size 6546 diff --git a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png index f0fa89149c..4b7f5d6318 100644 --- a/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png +++ b/Templates/MinimalProject/Template/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db8f00568fad4e49b05249aaa7a48c9fbf85c8b7a78489c83dc9b8161778bcef -size 22571 +oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06 +size 4437 From 622139b3d51100827517e842b402c8763c0e075f Mon Sep 17 00:00:00 2001 From: pconroy Date: Thu, 1 Jul 2021 14:26:08 -0700 Subject: [PATCH 03/15] Removed missed reference to deleted file. Signed-off-by: pconroy --- Code/Editor/editor_lib_files.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/Code/Editor/editor_lib_files.cmake b/Code/Editor/editor_lib_files.cmake index dcb169f783..5988d9385b 100644 --- a/Code/Editor/editor_lib_files.cmake +++ b/Code/Editor/editor_lib_files.cmake @@ -229,7 +229,6 @@ set(FILES res/warning16x16.ico res/water.bmp res/work_in_progress_icon.ico - res/LegacyLogo.bmp res/MannFileManagerImageList.bmp res/infobar/CameraCollision-default.svg res/infobar/GotoLocation-default.svg From a0a36b867fbd8cfac6c2a44f40be1d6fc541f0db Mon Sep 17 00:00:00 2001 From: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> Date: Thu, 1 Jul 2021 20:55:29 -0700 Subject: [PATCH 04/15] LYN-4920 | The project image on the welcome page is disconnected from the Project manager (#1738) * Display the correct project preview image in the Editor's Welcome Dialog. Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Minor fixes to variable naming for clarity. Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> --- .../Editor/WelcomeScreen/DefaultActiveProject.png | 3 --- Code/Editor/WelcomeScreen/DefaultProjectImage.png | 3 +++ Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp | 15 +++++++++++++++ Code/Editor/WelcomeScreen/WelcomeScreenDialog.qrc | 2 +- Code/Editor/WelcomeScreen/WelcomeScreenDialog.ui | 5 +---- 5 files changed, 20 insertions(+), 8 deletions(-) delete mode 100644 Code/Editor/WelcomeScreen/DefaultActiveProject.png create mode 100644 Code/Editor/WelcomeScreen/DefaultProjectImage.png diff --git a/Code/Editor/WelcomeScreen/DefaultActiveProject.png b/Code/Editor/WelcomeScreen/DefaultActiveProject.png deleted file mode 100644 index 89c3a7cd47..0000000000 --- a/Code/Editor/WelcomeScreen/DefaultActiveProject.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:263e95489560dac6e5944ef3caba13e598f83ddead324b943ad7735ba015e1a9 -size 70727 diff --git a/Code/Editor/WelcomeScreen/DefaultProjectImage.png b/Code/Editor/WelcomeScreen/DefaultProjectImage.png new file mode 100644 index 0000000000..82234dbf6b --- /dev/null +++ b/Code/Editor/WelcomeScreen/DefaultProjectImage.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cf8339fb51f82a68d2ab475c0476960e75a79d96d239c5b7cd272fbe4990ffe +size 2770 diff --git a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp index a444b95132..f9560aef55 100644 --- a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp +++ b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp @@ -75,6 +75,21 @@ WelcomeScreenDialog::WelcomeScreenDialog(QWidget* pParent) { ui->setupUi(this); + // Set the project preview image + QString projectPreviewPath = QDir(AZ::Utils::GetProjectPath().c_str()).filePath("preview.png"); + QFileInfo projectPreviewPathInfo(projectPreviewPath); + if (!projectPreviewPathInfo.exists() || !projectPreviewPathInfo.isFile()) + { + projectPreviewPath = ":/WelcomeScreenDialog/DefaultProjectImage.png"; + } + ui->activeProjectIcon->setPixmap( + QPixmap(projectPreviewPath).scaled( + ui->activeProjectIcon->size(), + Qt::KeepAspectRatioByExpanding, + Qt::SmoothTransformation + ) + ); + ui->recentLevelTable->setColumnCount(3); ui->recentLevelTable->setMouseTracking(true); ui->recentLevelTable->setContextMenuPolicy(Qt::CustomContextMenu); diff --git a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.qrc b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.qrc index 9e8ff62f48..131fde4e2b 100644 --- a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.qrc +++ b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.qrc @@ -1,5 +1,5 @@ - DefaultActiveProject.png + DefaultProjectImage.png diff --git a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.ui b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.ui index 680b411121..c8f5a4d67c 100644 --- a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.ui +++ b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.ui @@ -158,11 +158,8 @@ - - :/WelcomeScreenDialog/DefaultActiveProject.png - - Qt::AlignCenter + Qt::AlignHCenter | Qt::AlignVCenter From 097f99dcc6696747965860bfdb1df910bd812b6f Mon Sep 17 00:00:00 2001 From: antonmic Date: Thu, 1 Jul 2021 21:14:04 -0700 Subject: [PATCH 05/15] [ATOM-15864] Added diffuseResponse to lambertian diffuse calculation --- .../Atom/Features/PBR/Lighting/EnhancedLighting.azsli | 2 +- .../ShaderLib/Atom/Features/PBR/Lighting/SkinLighting.azsli | 2 +- .../Atom/Features/PBR/Lighting/StandardLighting.azsli | 2 +- .../Assets/ShaderLib/Atom/Features/PBR/Microfacet/Brdf.azsli | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/EnhancedLighting.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/EnhancedLighting.azsli index 1b8d2c3001..58e589e9d8 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/EnhancedLighting.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/EnhancedLighting.azsli @@ -28,7 +28,7 @@ float3 GetDiffuseLighting(Surface surface, LightingData lightingData, float3 lig } else { - diffuse = DiffuseLambertian(surface.albedo, surface.normal, dirToLight); + diffuse = DiffuseLambertian(surface.albedo, surface.normal, dirToLight, lightingData.diffuseResponse); } if(o_clearCoat_feature_enabled) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/SkinLighting.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/SkinLighting.azsli index a3c13459f4..ef256139c0 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/SkinLighting.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/SkinLighting.azsli @@ -28,7 +28,7 @@ float3 GetDiffuseLighting(Surface surface, LightingData lightingData, float3 lig } else { - diffuse = DiffuseLambertian(surface.albedo, surface.normal, dirToLight); + diffuse = DiffuseLambertian(surface.albedo, surface.normal, dirToLight, lightingData.diffuseResponse); } if(o_clearCoat_feature_enabled) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/StandardLighting.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/StandardLighting.azsli index fa754479a0..201aeca321 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/StandardLighting.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lighting/StandardLighting.azsli @@ -20,7 +20,7 @@ // Then define the Diffuse and Specular lighting functions float3 GetDiffuseLighting(Surface surface, LightingData lightingData, float3 lightIntensity, float3 dirToLight) { - float3 diffuse = DiffuseLambertian(surface.albedo, surface.normal, dirToLight); + float3 diffuse = DiffuseLambertian(surface.albedo, surface.normal, dirToLight, lightingData.diffuseResponse); if(o_clearCoat_feature_enabled) { diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Microfacet/Brdf.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Microfacet/Brdf.azsli index 31626b60b3..81ab4de1d4 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Microfacet/Brdf.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Microfacet/Brdf.azsli @@ -21,10 +21,10 @@ // ------- Diffuse Lighting ------- //! Simple Lambertian BRDF. -float3 DiffuseLambertian(float3 albedo, float3 normal, float3 dirToLight) +float3 DiffuseLambertian(float3 albedo, float3 normal, float3 dirToLight, float diffuseResponse) { float NdotL = saturate(dot(normal, dirToLight)); - return albedo * NdotL * INV_PI; + return albedo * NdotL * INV_PI * diffuseResponse; } // Normalized Disney diffuse function taken from Frostbite's PBR course notes (page 10): From e6cb13f14f70633f698017b6c8fbdc160a056fa6 Mon Sep 17 00:00:00 2001 From: AMZN-nggieber <52797929+AMZN-nggieber@users.noreply.github.com> Date: Thu, 1 Jul 2021 21:41:39 -0700 Subject: [PATCH 06/15] Made intial startup screen text more exciting! (#1743) --- Code/Tools/ProjectManager/Source/ProjectsScreen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp index b1db77ea83..3639f786b4 100644 --- a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp @@ -86,7 +86,7 @@ namespace O3DE::ProjectManager layout->setAlignment(Qt::AlignTop); frame->setLayout(layout); - QLabel* titleLabel = new QLabel(tr("Ready. Set. Create."), this); + QLabel* titleLabel = new QLabel(tr("Ready? Set. Create!"), this); titleLabel->setObjectName("titleLabel"); layout->addWidget(titleLabel); From 9758aea3d60ae2a0e0afceff36adbe29f7d67fa8 Mon Sep 17 00:00:00 2001 From: AMZN-nggieber <52797929+AMZN-nggieber@users.noreply.github.com> Date: Thu, 1 Jul 2021 21:53:54 -0700 Subject: [PATCH 07/15] Project Manager Can Cancel Project Builds (#1694) * Fixed misc building and project screen bugs, added ability to cancel active builds and queued builds * Cancelling in-progress cmake build working Signed-off-by: nggieber --- .../Platform/Linux/PAL_linux_files.cmake | 1 + .../Linux/ProjectBuilderWorker_linux.cpp | 19 ++ .../Platform/Mac/PAL_mac_files.cmake | 1 + .../Platform/Mac/ProjectBuilderWorker_mac.cpp | 19 ++ .../Platform/Windows/PAL_windows_files.cmake | 1 + .../Windows/ProjectBuilderWorker_windows.cpp | 175 +++++++++++++ .../ProjectManager/Source/ProjectBuilder.cpp | 244 ------------------ .../Source/ProjectBuilderController.cpp | 113 ++++++++ ...ctBuilder.h => ProjectBuilderController.h} | 33 +-- .../Source/ProjectBuilderWorker.cpp | 71 +++++ .../Source/ProjectBuilderWorker.h | 52 ++++ .../Source/ProjectButtonWidget.cpp | 50 +++- .../Source/ProjectButtonWidget.h | 17 +- .../Source/ProjectManagerDefs.h | 3 +- .../ProjectManager/Source/ProjectsScreen.cpp | 117 +++++---- .../ProjectManager/Source/ProjectsScreen.h | 7 +- .../project_manager_files.cmake | 6 +- 17 files changed, 589 insertions(+), 340 deletions(-) create mode 100644 Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp create mode 100644 Code/Tools/ProjectManager/Platform/Mac/ProjectBuilderWorker_mac.cpp create mode 100644 Code/Tools/ProjectManager/Platform/Windows/ProjectBuilderWorker_windows.cpp delete mode 100644 Code/Tools/ProjectManager/Source/ProjectBuilder.cpp create mode 100644 Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp rename Code/Tools/ProjectManager/Source/{ProjectBuilder.h => ProjectBuilderController.h} (66%) create mode 100644 Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp create mode 100644 Code/Tools/ProjectManager/Source/ProjectBuilderWorker.h diff --git a/Code/Tools/ProjectManager/Platform/Linux/PAL_linux_files.cmake b/Code/Tools/ProjectManager/Platform/Linux/PAL_linux_files.cmake index 4c94567793..e8085de555 100644 --- a/Code/Tools/ProjectManager/Platform/Linux/PAL_linux_files.cmake +++ b/Code/Tools/ProjectManager/Platform/Linux/PAL_linux_files.cmake @@ -7,4 +7,5 @@ set(FILES Python_linux.cpp + ProjectBuilderWorker_linux.cpp ) diff --git a/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp b/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp new file mode 100644 index 0000000000..71ade6a009 --- /dev/null +++ b/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +namespace O3DE::ProjectManager +{ + AZ::Outcome ProjectBuilderWorker::BuildProjectForPlatform() + { + QString error = tr("Automatic building on Linux not currently supported!"); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Platform/Mac/PAL_mac_files.cmake b/Code/Tools/ProjectManager/Platform/Mac/PAL_mac_files.cmake index f3ecbd9678..01d6b5f112 100644 --- a/Code/Tools/ProjectManager/Platform/Mac/PAL_mac_files.cmake +++ b/Code/Tools/ProjectManager/Platform/Mac/PAL_mac_files.cmake @@ -7,4 +7,5 @@ set(FILES Python_mac.cpp + ProjectBuilderWorker_mac.cpp ) diff --git a/Code/Tools/ProjectManager/Platform/Mac/ProjectBuilderWorker_mac.cpp b/Code/Tools/ProjectManager/Platform/Mac/ProjectBuilderWorker_mac.cpp new file mode 100644 index 0000000000..bb14bfea6b --- /dev/null +++ b/Code/Tools/ProjectManager/Platform/Mac/ProjectBuilderWorker_mac.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +namespace O3DE::ProjectManager +{ + AZ::Outcome ProjectBuilderWorker::BuildProjectForPlatform() + { + QString error = tr("Automatic building on MacOS not currently supported!"); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Platform/Windows/PAL_windows_files.cmake b/Code/Tools/ProjectManager/Platform/Windows/PAL_windows_files.cmake index 44023b791b..eb45c61807 100644 --- a/Code/Tools/ProjectManager/Platform/Windows/PAL_windows_files.cmake +++ b/Code/Tools/ProjectManager/Platform/Windows/PAL_windows_files.cmake @@ -7,4 +7,5 @@ set(FILES Python_windows.cpp + ProjectBuilderWorker_windows.cpp ) diff --git a/Code/Tools/ProjectManager/Platform/Windows/ProjectBuilderWorker_windows.cpp b/Code/Tools/ProjectManager/Platform/Windows/ProjectBuilderWorker_windows.cpp new file mode 100644 index 0000000000..87a8a6c0ec --- /dev/null +++ b/Code/Tools/ProjectManager/Platform/Windows/ProjectBuilderWorker_windows.cpp @@ -0,0 +1,175 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace O3DE::ProjectManager +{ + AZ::Outcome ProjectBuilderWorker::BuildProjectForPlatform() + { + // Check if we are trying to cancel task + if (QThread::currentThread()->isInterruptionRequested()) + { + QStringToAZTracePrint(BuildCancelled); + return AZ::Failure(BuildCancelled); + } + + QFile logFile(GetLogFilePath()); + if (!logFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) + { + QString error = tr("Failed to open log file."); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + + EngineInfo engineInfo; + + AZ::Outcome engineInfoResult = PythonBindingsInterface::Get()->GetEngineInfo(); + if (engineInfoResult.IsSuccess()) + { + engineInfo = engineInfoResult.GetValue(); + } + else + { + QString error = tr("Failed to get engine info."); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + + QTextStream logStream(&logFile); + if (QThread::currentThread()->isInterruptionRequested()) + { + logFile.close(); + QStringToAZTracePrint(BuildCancelled); + return AZ::Failure(BuildCancelled); + } + + // Show some kind of progress with very approximate estimates + UpdateProgress(++m_progressEstimate); + + QProcessEnvironment currentEnvironment(QProcessEnvironment::systemEnvironment()); + // Append cmake path to PATH incase it is missing + QDir cmakePath(engineInfo.m_path); + cmakePath.cd("cmake/runtime/bin"); + QString pathValue = currentEnvironment.value("PATH"); + pathValue += ";" + cmakePath.path(); + currentEnvironment.insert("PATH", pathValue); + + m_configProjectProcess = new QProcess(this); + m_configProjectProcess->setProcessChannelMode(QProcess::MergedChannels); + m_configProjectProcess->setWorkingDirectory(m_projectInfo.m_path); + m_configProjectProcess->setProcessEnvironment(currentEnvironment); + + m_configProjectProcess->start( + "cmake", + QStringList{ "-B", QDir(m_projectInfo.m_path).filePath(ProjectBuildPathPostfix), "-S", m_projectInfo.m_path, "-G", + "Visual Studio 16", "-DLY_3RDPARTY_PATH=" + engineInfo.m_thirdPartyPath }); + + if (!m_configProjectProcess->waitForStarted()) + { + QString error = tr("Configuring project failed to start."); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + bool containsGeneratingDone = false; + while (m_configProjectProcess->waitForReadyRead(MaxBuildTimeMSecs)) + { + QString configOutput = m_configProjectProcess->readAllStandardOutput(); + + if (configOutput.contains("Generating done")) + { + containsGeneratingDone = true; + } + + logStream << configOutput; + logStream.flush(); + + UpdateProgress(qMin(++m_progressEstimate, 19)); + + if (QThread::currentThread()->isInterruptionRequested()) + { + logFile.close(); + m_configProjectProcess->close(); + QStringToAZTracePrint(BuildCancelled); + return AZ::Failure(BuildCancelled); + } + } + + if (m_configProjectProcess->exitCode() != 0 || !containsGeneratingDone) + { + QString error = tr("Configuring project failed. See log for details."); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + + UpdateProgress(++m_progressEstimate); + + m_buildProjectProcess = new QProcess(this); + m_buildProjectProcess->setProcessChannelMode(QProcess::MergedChannels); + m_buildProjectProcess->setWorkingDirectory(m_projectInfo.m_path); + m_buildProjectProcess->setProcessEnvironment(currentEnvironment); + + m_buildProjectProcess->start( + "cmake", + QStringList{ "--build", QDir(m_projectInfo.m_path).filePath(ProjectBuildPathPostfix), "--target", + m_projectInfo.m_projectName + ".GameLauncher", "Editor", "--config", "profile" }); + + if (!m_buildProjectProcess->waitForStarted()) + { + QString error = tr("Building project failed to start."); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + + // There are a lot of steps when building so estimate around 800 more steps ((100 - 20) * 10) remaining + m_progressEstimate = 200; + while (m_buildProjectProcess->waitForReadyRead(MaxBuildTimeMSecs)) + { + logStream << m_buildProjectProcess->readAllStandardOutput(); + logStream.flush(); + + // Show 1% progress for every 10 steps completed + UpdateProgress(qMin(++m_progressEstimate / 10, 99)); + + if (QThread::currentThread()->isInterruptionRequested()) + { + // QProcess is unable to kill its child processes so we need to ask the operating system to do that for us + QProcess killBuildProcess; + killBuildProcess.setProcessChannelMode(QProcess::MergedChannels); + killBuildProcess.start( + "cmd.exe", QStringList{ "/C", "taskkill", "/pid", QString::number(m_buildProjectProcess->processId()), "/f", "/t" }); + killBuildProcess.waitForFinished(); + + logStream << "Killing Project Build."; + logStream << killBuildProcess.readAllStandardOutput(); + m_buildProjectProcess->kill(); + logFile.close(); + QStringToAZTracePrint(BuildCancelled); + return AZ::Failure(BuildCancelled); + } + } + + if (m_configProjectProcess->exitCode() != 0) + { + QString error = tr("Building project failed. See log for details."); + QStringToAZTracePrint(error); + return AZ::Failure(error); + } + + return AZ::Success(); + } + +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp b/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp deleted file mode 100644 index a1dddf818c..0000000000 --- a/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - - -//#define MOCK_BUILD_PROJECT true - -namespace O3DE::ProjectManager -{ - // QProcess::waitForFinished uses -1 to indicate that the process should not timeout - constexpr int MaxBuildTimeMSecs = -1; - - ProjectBuilderWorker::ProjectBuilderWorker(const ProjectInfo& projectInfo) - : QObject() - , m_projectInfo(projectInfo) - { - } - - void ProjectBuilderWorker::BuildProject() - { -#ifdef MOCK_BUILD_PROJECT - for (int i = 0; i < 10; ++i) - { - QThread::sleep(1); - UpdateProgress(i * 10); - } - Done(m_projectPath); -#else - EngineInfo engineInfo; - - AZ::Outcome engineInfoResult = PythonBindingsInterface::Get()->GetEngineInfo(); - if (engineInfoResult.IsSuccess()) - { - engineInfo = engineInfoResult.GetValue(); - } - else - { - emit Done(tr("Failed to get engine info.")); - return; - } - - // Show some kind of progress with very approximate estimates - UpdateProgress(1); - - QProcessEnvironment currentEnvironment(QProcessEnvironment::systemEnvironment()); - // Append cmake path to PATH incase it is missing - QDir cmakePath(engineInfo.m_path); - cmakePath.cd("cmake/runtime/bin"); - QString pathValue = currentEnvironment.value("PATH"); - pathValue += ";" + cmakePath.path(); - currentEnvironment.insert("PATH", pathValue); - - QProcess configProjectProcess; - configProjectProcess.setProcessChannelMode(QProcess::MergedChannels); - configProjectProcess.setWorkingDirectory(m_projectInfo.m_path); - configProjectProcess.setProcessEnvironment(currentEnvironment); - - configProjectProcess.start( - "cmake", - QStringList - { - "-B", - QDir(m_projectInfo.m_path).filePath(ProjectBuildPathPostfix), - "-S", - m_projectInfo.m_path, - "-G", - "Visual Studio 16", - "-DLY_3RDPARTY_PATH=" + engineInfo.m_thirdPartyPath - }); - - if (!configProjectProcess.waitForStarted()) - { - emit Done(tr("Configuring project failed to start.")); - return; - } - if (!configProjectProcess.waitForFinished(MaxBuildTimeMSecs)) - { - WriteErrorLog(configProjectProcess.readAllStandardOutput()); - emit Done(tr("Configuring project timed out. See log for details")); - return; - } - - QString configProjectOutput(configProjectProcess.readAllStandardOutput()); - if (configProjectProcess.exitCode() != 0 || !configProjectOutput.contains("Generating done")) - { - WriteErrorLog(configProjectOutput); - emit Done(tr("Configuring project failed. See log for details.")); - return; - } - - UpdateProgress(20); - - QProcess buildProjectProcess; - buildProjectProcess.setProcessChannelMode(QProcess::MergedChannels); - buildProjectProcess.setWorkingDirectory(m_projectInfo.m_path); - buildProjectProcess.setProcessEnvironment(currentEnvironment); - - buildProjectProcess.start( - "cmake", - QStringList - { - "--build", - QDir(m_projectInfo.m_path).filePath(ProjectBuildPathPostfix), - "--target", - m_projectInfo.m_projectName + ".GameLauncher", - "Editor", - "--config", - "profile" - }); - - if (!buildProjectProcess.waitForStarted()) - { - emit Done(tr("Building project failed to start.")); - return; - } - if (!buildProjectProcess.waitForFinished(MaxBuildTimeMSecs)) - { - WriteErrorLog(configProjectProcess.readAllStandardOutput()); - emit Done(tr("Building project timed out. See log for details")); - return; - } - - QString buildProjectOutput(buildProjectProcess.readAllStandardOutput()); - if (configProjectProcess.exitCode() != 0) - { - WriteErrorLog(buildProjectOutput); - emit Done(tr("Building project failed. See log for details.")); - } - else - { - emit Done(""); - } -#endif - } - - QString ProjectBuilderWorker::LogFilePath() const - { - QDir logFilePath(m_projectInfo.m_path); - logFilePath.cd(ProjectBuildPathPostfix); - return logFilePath.filePath(ProjectBuildErrorLogPathPostfix); - } - - void ProjectBuilderWorker::WriteErrorLog(const QString& log) - { - QFile logFile(LogFilePath()); - // Overwrite file with truncate - if (logFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) - { - QTextStream output(&logFile); - output << log; - logFile.close(); - } - } - - ProjectBuilderController::ProjectBuilderController(const ProjectInfo& projectInfo, ProjectButton* projectButton, QWidget* parent) - : QObject() - , m_projectInfo(projectInfo) - , m_projectButton(projectButton) - , m_parent(parent) - { - m_worker = new ProjectBuilderWorker(m_projectInfo); - m_worker->moveToThread(&m_workerThread); - - connect(&m_workerThread, &QThread::finished, m_worker, &ProjectBuilderWorker::deleteLater); - connect(&m_workerThread, &QThread::started, m_worker, &ProjectBuilderWorker::BuildProject); - connect(m_worker, &ProjectBuilderWorker::Done, this, &ProjectBuilderController::HandleResults); - connect(m_worker, &ProjectBuilderWorker::UpdateProgress, this, &ProjectBuilderController::UpdateUIProgress); - } - - ProjectBuilderController::~ProjectBuilderController() - { - m_workerThread.quit(); - m_workerThread.wait(); - } - - void ProjectBuilderController::Start() - { - m_workerThread.start(); - UpdateUIProgress(0); - } - - void ProjectBuilderController::SetProjectButton(ProjectButton* projectButton) - { - m_projectButton = projectButton; - } - - QString ProjectBuilderController::GetProjectPath() const - { - return m_projectInfo.m_path; - } - - void ProjectBuilderController::UpdateUIProgress(int progress) - { - if (m_projectButton) - { - m_projectButton->SetButtonOverlayText(QString("%1 (%2%)\n\n").arg(tr("Building Project..."), QString::number(progress))); - m_projectButton->SetProgressBarValue(progress); - } - } - - void ProjectBuilderController::HandleResults(const QString& result) - { - if (!result.isEmpty()) - { - if (result.contains(tr("log"))) - { - QMessageBox::StandardButton openLog = QMessageBox::critical( - m_parent, - tr("Project Failed to Build!"), - result + tr("\n\nWould you like to view log?"), - QMessageBox::No | QMessageBox::Yes); - - if (openLog == QMessageBox::Yes) - { - // Open application assigned to this file type - QDesktopServices::openUrl(QUrl("file:///" + m_worker->LogFilePath())); - } - } - else - { - QMessageBox::critical(m_parent, tr("Project Failed to Build!"), result); - } - } - - emit Done(); - } -} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp b/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp new file mode 100644 index 0000000000..00e2e5d68d --- /dev/null +++ b/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include + +#include +#include +#include + + +namespace O3DE::ProjectManager +{ + ProjectBuilderController::ProjectBuilderController(const ProjectInfo& projectInfo, ProjectButton* projectButton, QWidget* parent) + : QObject() + , m_projectInfo(projectInfo) + , m_projectButton(projectButton) + , m_lastProgress(0) + , m_parent(parent) + { + m_worker = new ProjectBuilderWorker(m_projectInfo); + m_worker->moveToThread(&m_workerThread); + + connect(&m_workerThread, &QThread::finished, m_worker, &ProjectBuilderWorker::deleteLater); + connect(&m_workerThread, &QThread::started, m_worker, &ProjectBuilderWorker::BuildProject); + connect(m_worker, &ProjectBuilderWorker::Done, this, &ProjectBuilderController::HandleResults); + connect(m_worker, &ProjectBuilderWorker::UpdateProgress, this, &ProjectBuilderController::UpdateUIProgress); + } + + ProjectBuilderController::~ProjectBuilderController() + { + m_workerThread.requestInterruption(); + m_workerThread.quit(); + m_workerThread.wait(); + } + + void ProjectBuilderController::Start() + { + m_workerThread.start(); + UpdateUIProgress(0); + } + + void ProjectBuilderController::SetProjectButton(ProjectButton* projectButton) + { + m_projectButton = projectButton; + + if (projectButton) + { + projectButton->SetProjectButtonAction(tr("Cancel Build"), [this] { HandleCancel(); }); + + if (m_lastProgress != 0) + { + UpdateUIProgress(m_lastProgress); + } + } + } + + const ProjectInfo& ProjectBuilderController::GetProjectInfo() const + { + return m_projectInfo; + } + + void ProjectBuilderController::UpdateUIProgress(int progress) + { + m_lastProgress = progress; + if (m_projectButton) + { + m_projectButton->SetButtonOverlayText(QString("%1 (%2%)\n\n").arg(tr("Building Project..."), QString::number(progress))); + m_projectButton->SetProgressBarValue(progress); + } + } + + void ProjectBuilderController::HandleResults(const QString& result) + { + if (!result.isEmpty()) + { + if (result.contains(tr("log"))) + { + QMessageBox::StandardButton openLog = QMessageBox::critical( + m_parent, + tr("Project Failed to Build!"), + result + tr("\n\nWould you like to view log?"), + QMessageBox::No | QMessageBox::Yes); + + if (openLog == QMessageBox::Yes) + { + // Open application assigned to this file type + QDesktopServices::openUrl(QUrl("file:///" + m_worker->GetLogFilePath())); + } + } + else + { + QMessageBox::critical(m_parent, tr("Project Failed to Build!"), result); + } + + emit Done(false); + return; + } + + emit Done(true); + } + + void ProjectBuilderController::HandleCancel() + { + m_workerThread.quit(); + emit Done(false); + } +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilder.h b/Code/Tools/ProjectManager/Source/ProjectBuilderController.h similarity index 66% rename from Code/Tools/ProjectManager/Source/ProjectBuilder.h rename to Code/Tools/ProjectManager/Source/ProjectBuilderController.h index e6a539bb36..c3e3026b34 100644 --- a/Code/Tools/ProjectManager/Source/ProjectBuilder.h +++ b/Code/Tools/ProjectManager/Source/ProjectBuilderController.h @@ -12,32 +12,12 @@ #include #endif +QT_FORWARD_DECLARE_CLASS(QProcess) + namespace O3DE::ProjectManager { QT_FORWARD_DECLARE_CLASS(ProjectButton) - - class ProjectBuilderWorker : public QObject - { - Q_OBJECT - - public: - explicit ProjectBuilderWorker(const ProjectInfo& projectInfo); - ~ProjectBuilderWorker() = default; - - QString LogFilePath() const; - - public slots: - void BuildProject(); - - signals: - void UpdateProgress(int progress); - void Done(QString result); - - private: - void WriteErrorLog(const QString& log); - - ProjectInfo m_projectInfo; - }; + QT_FORWARD_DECLARE_CLASS(ProjectBuilderWorker) class ProjectBuilderController : public QObject { @@ -48,15 +28,16 @@ namespace O3DE::ProjectManager ~ProjectBuilderController(); void SetProjectButton(ProjectButton* projectButton); - QString GetProjectPath() const; + const ProjectInfo& GetProjectInfo() const; public slots: void Start(); void UpdateUIProgress(int progress); void HandleResults(const QString& result); + void HandleCancel(); signals: - void Done(); + void Done(bool success = true); private: ProjectInfo m_projectInfo; @@ -64,5 +45,7 @@ namespace O3DE::ProjectManager QThread m_workerThread; ProjectButton* m_projectButton; QWidget* m_parent; + + int m_lastProgress; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp b/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp new file mode 100644 index 0000000000..7b255e1f46 --- /dev/null +++ b/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include + +#include + +//#define MOCK_BUILD_PROJECT true + +namespace O3DE::ProjectManager +{ + const QString ProjectBuilderWorker::BuildCancelled = ProjectBuilderWorker::tr("Build Cancelled."); + + ProjectBuilderWorker::ProjectBuilderWorker(const ProjectInfo& projectInfo) + : QObject() + , m_projectInfo(projectInfo) + , m_progressEstimate(0) + { + } + + void ProjectBuilderWorker::BuildProject() + { +#ifdef MOCK_BUILD_PROJECT + for (int i = 0; i < 10; ++i) + { + QThread::sleep(1); + UpdateProgress(i * 10); + } + Done(""); +#else + auto result = BuildProjectForPlatform(); + + if (result.IsSuccess()) + { + emit Done(); + } + else + { + emit Done(result.GetError()); + } +#endif + } + + QString ProjectBuilderWorker::GetLogFilePath() const + { + QDir logFilePath(m_projectInfo.m_path); + // Make directories if they aren't on disk + if (!logFilePath.cd(ProjectBuildPathPostfix)) + { + logFilePath.mkpath(ProjectBuildPathPostfix); + logFilePath.cd(ProjectBuildPathPostfix); + + } + if (!logFilePath.cd(ProjectBuildPathCmakeFiles)) + { + logFilePath.mkpath(ProjectBuildPathCmakeFiles); + logFilePath.cd(ProjectBuildPathCmakeFiles); + } + return logFilePath.filePath(ProjectBuildErrorLogName); + } + + void ProjectBuilderWorker::QStringToAZTracePrint(const QString& error) + { + AZ_TracePrintf("Project Manager", error.toStdString().c_str()); + } +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.h b/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.h new file mode 100644 index 0000000000..0557b21831 --- /dev/null +++ b/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#pragma once + +#if !defined(Q_MOC_RUN) +#include +#include + +#include +#endif + +QT_FORWARD_DECLARE_CLASS(QProcess) + +namespace O3DE::ProjectManager +{ + class ProjectBuilderWorker : public QObject + { + // QProcess::waitForFinished uses -1 to indicate that the process should not timeout + static constexpr int MaxBuildTimeMSecs = -1; + // Build was cancelled + static const QString BuildCancelled; + + Q_OBJECT + + public: + explicit ProjectBuilderWorker(const ProjectInfo& projectInfo); + ~ProjectBuilderWorker() = default; + + QString GetLogFilePath() const; + + public slots: + void BuildProject(); + + signals: + void UpdateProgress(int progress); + void Done(QString result = ""); + + private: + AZ::Outcome BuildProjectForPlatform(); + void QStringToAZTracePrint(const QString& error); + + QProcess* m_configProjectProcess = nullptr; + QProcess* m_buildProjectProcess = nullptr; + ProjectInfo m_projectInfo; + + int m_progressEstimate; + }; +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp index fef2639498..68a43b3b52 100644 --- a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp @@ -40,8 +40,8 @@ namespace O3DE::ProjectManager m_overlayLabel->setVisible(false); vLayout->addWidget(m_overlayLabel); - m_buildButton = new QPushButton(tr("Build Project"), this); - m_buildButton->setVisible(false); + m_actionButton = new QPushButton(tr("Project Action"), this); + m_actionButton->setVisible(false); m_progressBar = new QProgressBar(this); m_progressBar->setObjectName("labelButtonProgressBar"); @@ -78,9 +78,9 @@ namespace O3DE::ProjectManager return m_progressBar; } - QPushButton* LabelButton::GetBuildButton() + QPushButton* LabelButton::GetActionButton() { - return m_buildButton; + return m_actionButton; } ProjectButton::ProjectButton(const ProjectInfo& projectInfo, QWidget* parent, bool processing) @@ -135,7 +135,6 @@ namespace O3DE::ProjectManager void ProjectButton::ProcessingSetup() { - m_projectImageLabel->GetOverlayLabel()->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); m_projectImageLabel->SetEnabled(false); m_projectImageLabel->SetOverlayText(tr("Processing...\n\n")); @@ -146,8 +145,6 @@ namespace O3DE::ProjectManager void ProjectButton::ReadySetup() { - connect(m_projectImageLabel->GetBuildButton(), &QPushButton::clicked, [this](){ emit BuildProject(m_projectInfo); }); - QMenu* menu = new QMenu(this); menu->addAction(tr("Edit Project Settings..."), this, [this]() { emit EditProject(m_projectInfo.m_path); }); menu->addAction(tr("Build"), this, [this]() { emit BuildProject(m_projectInfo); }); @@ -168,18 +165,38 @@ namespace O3DE::ProjectManager m_projectFooter->layout()->addWidget(projectMenuButton); } - void ProjectButton::SetLaunchButtonEnabled(bool enabled) + void ProjectButton::SetProjectButtonAction(const QString& text, AZStd::function lambda) { - m_projectImageLabel->SetEnabled(enabled); + QPushButton* projectActionButton = m_projectImageLabel->GetActionButton(); + if (!m_actionButtonConnection) + { + QSpacerItem* buttonSpacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + m_projectImageLabel->layout()->addItem(buttonSpacer); + m_projectImageLabel->layout()->addWidget(projectActionButton); + projectActionButton->setVisible(true); + } + else + { + disconnect(m_actionButtonConnection); + } + + projectActionButton->setText(text); + m_actionButtonConnection = connect(projectActionButton, &QPushButton::clicked, lambda); } - void ProjectButton::ShowBuildButton(bool show) + void ProjectButton::SetProjectBuildButtonAction() { - QSpacerItem* buttonSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding); + SetProjectButtonAction(tr("Build Project"), [this]() { emit BuildProject(m_projectInfo); }); + } - m_projectImageLabel->layout()->addItem(buttonSpacer); - m_projectImageLabel->layout()->addWidget(m_projectImageLabel->GetBuildButton()); - m_projectImageLabel->GetBuildButton()->setVisible(show); + void ProjectButton::BuildThisProject() + { + emit BuildProject(m_projectInfo); + } + + void ProjectButton::SetLaunchButtonEnabled(bool enabled) + { + m_projectImageLabel->SetEnabled(enabled); } void ProjectButton::SetButtonOverlayText(const QString& text) @@ -191,4 +208,9 @@ namespace O3DE::ProjectManager { m_projectImageLabel->GetProgressBar()->setValue(progress); } + + LabelButton* ProjectButton::GetLabelButton() + { + return m_projectImageLabel; + } } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h index fe2fd73324..b3b4b2bcf6 100644 --- a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h +++ b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h @@ -9,12 +9,15 @@ #if !defined(Q_MOC_RUN) #include +#include #include +#include +#include +#include #endif QT_FORWARD_DECLARE_CLASS(QPixmap) -QT_FORWARD_DECLARE_CLASS(QPushButton) QT_FORWARD_DECLARE_CLASS(QAction) QT_FORWARD_DECLARE_CLASS(QProgressBar) @@ -34,7 +37,7 @@ namespace O3DE::ProjectManager QLabel* GetOverlayLabel(); QProgressBar* GetProgressBar(); - QPushButton* GetBuildButton(); + QPushButton* GetActionButton(); signals: void triggered(); @@ -45,7 +48,7 @@ namespace O3DE::ProjectManager private: QLabel* m_overlayLabel; QProgressBar* m_progressBar; - QPushButton* m_buildButton; + QPushButton* m_actionButton; bool m_enabled = true; }; @@ -58,10 +61,13 @@ namespace O3DE::ProjectManager explicit ProjectButton(const ProjectInfo& m_projectInfo, QWidget* parent = nullptr, bool processing = false); ~ProjectButton() = default; + void SetProjectButtonAction(const QString& text, AZStd::function lambda); + void SetProjectBuildButtonAction(); + void SetLaunchButtonEnabled(bool enabled); - void ShowBuildButton(bool show); void SetButtonOverlayText(const QString& text); void SetProgressBarValue(int progress); + LabelButton* GetLabelButton(); signals: void OpenProject(const QString& projectName); @@ -75,9 +81,12 @@ namespace O3DE::ProjectManager void BaseSetup(); void ProcessingSetup(); void ReadySetup(); + void BuildThisProject(); ProjectInfo m_projectInfo; LabelButton* m_projectImageLabel; QFrame* m_projectFooter; + + QMetaObject::Connection m_actionButtonConnection; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h b/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h index 0b1b3fba4e..f74233db51 100644 --- a/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h +++ b/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h @@ -14,6 +14,7 @@ namespace O3DE::ProjectManager inline constexpr static int ProjectPreviewImageHeight = 280; static const QString ProjectBuildPathPostfix = "build/windows_vs2019"; - static const QString ProjectBuildErrorLogPathPostfix = "CMakeFiles/CMakeProjectBuildError.log"; + static const QString ProjectBuildPathCmakeFiles = "CMakeFiles"; + static const QString ProjectBuildErrorLogName = "CMakeProjectBuildError.log"; static const QString ProjectPreviewImagePath = "preview.png"; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp index 3639f786b4..cc3e386118 100644 --- a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -43,8 +43,6 @@ #include #include -//#define DISPLAY_PROJECT_DEV_DATA true - namespace O3DE::ProjectManager { ProjectsScreen::ProjectsScreen(QWidget* parent) @@ -164,43 +162,38 @@ namespace O3DE::ProjectManager projectsScrollArea->setWidget(scrollWidget); projectsScrollArea->setWidgetResizable(true); -#ifndef DISPLAY_PROJECT_DEV_DATA - // Iterate once to insert building project first - if (!buildProjectPath.isEmpty()) + QVector nonProcessingProjects; + buildProjectPath = QDir::fromNativeSeparators(buildProjectPath); + for (auto& project : projectsResult.GetValue()) { - buildProjectPath = QDir::fromNativeSeparators(buildProjectPath); - for (auto project : projectsResult.GetValue()) + if (projectButton && !*projectButton) { if (QDir::fromNativeSeparators(project.m_path) == buildProjectPath) { - ProjectButton* buildingProjectButton = CreateProjectButton(project, flowLayout, true); - - if (projectButton) - { - *projectButton = buildingProjectButton; - } - - break; + *projectButton = CreateProjectButton(project, flowLayout, true); + continue; } } + + nonProcessingProjects.append(project); } - for (auto project : projectsResult.GetValue()) -#else - ProjectInfo project = projectsResult.GetValue().at(0); - for (int i = 0; i < 15; i++) -#endif + for (auto& project : nonProcessingProjects) { - // Add all other projects skipping building project - // Safe if no building project because it is just an empty string - if (project.m_path != buildProjectPath) - { - ProjectButton* projectButtonWidget = CreateProjectButton(project, flowLayout); + ProjectButton* projectButtonWidget = CreateProjectButton(project, flowLayout); - if (RequiresBuildProjectIterator(project.m_path) != m_requiresBuild.end()) - { - projectButtonWidget->ShowBuildButton(true); - } + if (BuildQueueContainsProject(project.m_path)) + { + projectButtonWidget->SetProjectButtonAction(tr("Cancel Queued Build"), + [this, project] + { + UnqueueBuildProject(project); + SuggestBuildProjectMsg(project, false); + }); + } + else if (RequiresBuildProjectIterator(project.m_path) != m_requiresBuild.end()) + { + projectButtonWidget->SetProjectBuildButtonAction(); } } @@ -242,9 +235,9 @@ namespace O3DE::ProjectManager // Make sure to update builder with latest Project Button if (m_currentBuilder) { - ProjectButton* projectButtonPtr; + ProjectButton* projectButtonPtr = nullptr; - m_projectsContent = CreateProjectsContent(m_currentBuilder->GetProjectPath(), &projectButtonPtr); + m_projectsContent = CreateProjectsContent(m_currentBuilder->GetProjectInfo().m_path, &projectButtonPtr); m_currentBuilder->SetProjectButton(projectButtonPtr); } else @@ -412,17 +405,15 @@ namespace O3DE::ProjectManager } } - void ProjectsScreen::SuggestBuildProject(const ProjectInfo& projectInfo) + void ProjectsScreen::SuggestBuildProjectMsg(const ProjectInfo& projectInfo, bool showMessage) { - if (projectInfo.m_needsBuild) + if (RequiresBuildProjectIterator(projectInfo.m_path) == m_requiresBuild.end()) { - if (RequiresBuildProjectIterator(projectInfo.m_path) == m_requiresBuild.end()) - { - m_requiresBuild.append(projectInfo); - } - ResetProjectsContent(); + m_requiresBuild.append(projectInfo); } - else + ResetProjectsContent(); + + if (showMessage) { QMessageBox::information(this, tr("Project Should be rebuilt."), @@ -430,6 +421,11 @@ namespace O3DE::ProjectManager } } + void ProjectsScreen::SuggestBuildProject(const ProjectInfo& projectInfo) + { + SuggestBuildProjectMsg(projectInfo, true); + } + void ProjectsScreen::QueueBuildProject(const ProjectInfo& projectInfo) { auto requiredIter = RequiresBuildProjectIterator(projectInfo.m_path); @@ -443,14 +439,22 @@ namespace O3DE::ProjectManager if (m_buildQueue.empty() && !m_currentBuilder) { StartProjectBuild(projectInfo); + // Projects Content is already reset in fuction } else { m_buildQueue.append(projectInfo); + ResetProjectsContent(); } } } + void ProjectsScreen::UnqueueBuildProject(const ProjectInfo& projectInfo) + { + m_buildQueue.removeAll(projectInfo); + ResetProjectsContent(); + } + void ProjectsScreen::NotifyCurrentScreen() { if (ShouldDisplayFirstTimeContent()) @@ -481,7 +485,7 @@ namespace O3DE::ProjectManager return displayFirstTimeContent; } - void ProjectsScreen::StartProjectBuild(const ProjectInfo& projectInfo) + bool ProjectsScreen::StartProjectBuild(const ProjectInfo& projectInfo) { if (ProjectUtils::IsVS2019Installed()) { @@ -501,25 +505,42 @@ namespace O3DE::ProjectManager } else { - ProjectBuildDone(); + SuggestBuildProjectMsg(projectInfo, false); + return false; } + + return true; } + + return false; } - void ProjectsScreen::ProjectBuildDone() + void ProjectsScreen::ProjectBuildDone(bool success) { + ProjectInfo currentBuilderProject; + if (!success) + { + currentBuilderProject = m_currentBuilder->GetProjectInfo(); + } + delete m_currentBuilder; m_currentBuilder = nullptr; - if (!m_buildQueue.empty()) + if (!success) { - StartProjectBuild(m_buildQueue.front()); - m_buildQueue.pop_front(); + SuggestBuildProjectMsg(currentBuilderProject, false); } - else + + if (!m_buildQueue.empty()) { - ResetProjectsContent(); + while (!StartProjectBuild(m_buildQueue.front()) && m_buildQueue.size() > 1) + { + m_buildQueue.pop_front(); + } + m_buildQueue.pop_front(); } + + ResetProjectsContent(); } QList::iterator ProjectsScreen::RequiresBuildProjectIterator(const QString& projectPath) diff --git a/Code/Tools/ProjectManager/Source/ProjectsScreen.h b/Code/Tools/ProjectManager/Source/ProjectsScreen.h index 12152e908b..1ca8448134 100644 --- a/Code/Tools/ProjectManager/Source/ProjectsScreen.h +++ b/Code/Tools/ProjectManager/Source/ProjectsScreen.h @@ -37,7 +37,7 @@ namespace O3DE::ProjectManager protected: void NotifyCurrentScreen() override; - void ProjectBuildDone(); + void SuggestBuildProjectMsg(const ProjectInfo& projectInfo, bool showMessage); protected slots: void HandleNewProjectButton(); @@ -50,6 +50,9 @@ namespace O3DE::ProjectManager void SuggestBuildProject(const ProjectInfo& projectInfo); void QueueBuildProject(const ProjectInfo& projectInfo); + void UnqueueBuildProject(const ProjectInfo& projectInfo); + + void ProjectBuildDone(bool success = true); void paintEvent(QPaintEvent* event) override; @@ -60,7 +63,7 @@ namespace O3DE::ProjectManager void ResetProjectsContent(); bool ShouldDisplayFirstTimeContent(); - void StartProjectBuild(const ProjectInfo& projectInfo); + bool StartProjectBuild(const ProjectInfo& projectInfo); QList::iterator RequiresBuildProjectIterator(const QString& projectPath); bool BuildQueueContainsProject(const QString& projectPath); bool WarnIfInBuildQueue(const QString& projectPath); diff --git a/Code/Tools/ProjectManager/project_manager_files.cmake b/Code/Tools/ProjectManager/project_manager_files.cmake index 0aa7a6c86c..a5632f082c 100644 --- a/Code/Tools/ProjectManager/project_manager_files.cmake +++ b/Code/Tools/ProjectManager/project_manager_files.cmake @@ -39,8 +39,10 @@ set(FILES Source/ProjectInfo.cpp Source/ProjectUtils.h Source/ProjectUtils.cpp - Source/ProjectBuilder.h - Source/ProjectBuilder.cpp + Source/ProjectBuilderWorker.h + Source/ProjectBuilderWorker.cpp + Source/ProjectBuilderController.h + Source/ProjectBuilderController.cpp Source/UpdateProjectSettingsScreen.h Source/UpdateProjectSettingsScreen.cpp Source/NewProjectSettingsScreen.h From 2478c60793a09b170ea36d34b1f414e8069f945c Mon Sep 17 00:00:00 2001 From: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> Date: Fri, 2 Jul 2021 00:22:12 -0500 Subject: [PATCH 08/15] Fixed several o3de python package and install layout issues (#1714) * Updated the CrashLog directory path to save to the project user directory instead of the engine-root directory Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Removing the custom OUTPUT_NAME for the Multiplayer Gem Builder target Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Changed the default value for the LY_3RDPARTY_PATH cache variable to be ~/.o3de/3rdParty This simplifies the first time user experience when running cmake Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed Windows only issue where using creating a VS Solution for an O3DE project on a different drive resulted in an unloaded ":" entry appearing in the solution explorer Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Refactored install layout logic for External Subdirectories Instead of performing a regular expression over the Gems/* directory, now the each external subdirectory including the project (external) directory is recursied over and scanned for any folders that aren't excluded. By default those folders are the [Cc]ache, [Bb]uild and [Uu]ser directories Afterwards the list files to copy over are then split into a directory list and a file list that is filtered by an include regex Next the directory list is iterated over and the directories are copied to the install layout Finally the file list is iterated and the list of files are also copied to the install layout Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed the o3de.bat script changing the working directory before running the o3de.py script Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed exception in engine-template.py script when the create-gem command is invoked with the --template-name parameter that does not correspond to a registered Template Updated the create-project command to register the project with the o3de_manifest.json and the engine with the project as the final step Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed register.py over-registration of non-engine directories when then --this-engine parameter is supplied. All the projects, gems and templates inside of the default o3de_manifest folder locations were being registered with the engine that was being registered Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed register.py register_project_path() method to return 0 when the project path is successfully registered. This issue was that the save_o3de_manifest method "return" value was being checked and that method doesn't actually return a value Added question mark to the engine_template.py to correct text around notifying the user if the project was registered Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Added doc comment on the new cmke ly_get_vs_folder_directory function() Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Added clarifying comment to the ly_setup_others() command logic to copy over directories and files from any external subdirectories(Gems) that are registered with the engine at the time of install Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed infinite recursion when trying to create a template with the source directory used to seed the template Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> --- Code/Editor/IEditorImpl.cpp | 13 +++- Gems/Multiplayer/Code/CMakeLists.txt | 1 - cmake/3rdParty.cmake | 19 ++++- cmake/LYWrappers.cmake | 39 ++++++++-- cmake/Platform/Common/Install_common.cmake | 89 ++++++++++++++-------- scripts/o3de.bat | 4 +- scripts/o3de/o3de/engine_template.py | 47 +++++------- scripts/o3de/o3de/manifest.py | 6 +- scripts/o3de/o3de/register.py | 6 +- 9 files changed, 142 insertions(+), 82 deletions(-) diff --git a/Code/Editor/IEditorImpl.cpp b/Code/Editor/IEditorImpl.cpp index d9e07f0ec4..f472e12fc9 100644 --- a/Code/Editor/IEditorImpl.cpp +++ b/Code/Editor/IEditorImpl.cpp @@ -22,7 +22,9 @@ AZ_PUSH_DISABLE_WARNING(4251 4355 4996, "-Wunknown-warning-option") AZ_POP_DISABLE_WARNING // AzCore +#include #include +#include // AzFramework #include @@ -195,8 +197,15 @@ CEditorImpl::CEditorImpl() m_pAssetBrowserRequestHandler = nullptr; m_assetEditorRequestsHandler = nullptr; - AZ::IO::SystemFile::CreateDir("SessionStatus"); - QFile::setPermissions(m_crashLogFileName, QFileDevice::ReadOther | QFileDevice::WriteOther); + if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr) + { + if (AZ::IO::FixedMaxPath crashLogPath; settingsRegistry->Get(crashLogPath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_ProjectUserPath)) + { + crashLogPath /= m_crashLogFileName; + AZ::IO::SystemFile::CreateDir(crashLogPath.ParentPath().FixedMaxPathString().c_str()); + QFile::setPermissions(crashLogPath.c_str(), QFileDevice::ReadOther | QFileDevice::WriteOther); + } + } } void CEditorImpl::Initialize() diff --git a/Gems/Multiplayer/Code/CMakeLists.txt b/Gems/Multiplayer/Code/CMakeLists.txt index 89372025e3..ab6e22225b 100644 --- a/Gems/Multiplayer/Code/CMakeLists.txt +++ b/Gems/Multiplayer/Code/CMakeLists.txt @@ -107,7 +107,6 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS) ly_add_target( NAME Multiplayer.Builders GEM_MODULE NAMESPACE Gem - OUTPUT_NAME Gem.Multiplayer.Builders FILES_CMAKE multiplayer_tools_files.cmake INCLUDE_DIRECTORIES diff --git a/cmake/3rdParty.cmake b/cmake/3rdParty.cmake index 204aaedb79..15dde3c3f8 100644 --- a/cmake/3rdParty.cmake +++ b/cmake/3rdParty.cmake @@ -8,7 +8,24 @@ # Do not overcomplicate searching for the 3rdParty path, if it is not easy to find, # the user should define it. -set(LY_3RDPARTY_PATH "" CACHE PATH "Path to the 3rdParty folder") +#! get_default_third_party_folder: Stores the default 3rdParty directory into the supplied output variable +# +# \arg:output_third_party_path name of variable to set the default project directory into +# It defaults to the ~/.o3de/3rdParty directory +function(get_default_third_party_folder output_third_party_path) + cmake_path(SET home_directory "$ENV{USERPROFILE}") # Windows + if(NOT EXISTS ${home_directory}) + cmake_path(SET home_directory "$ENV{HOME}") # Unix + if (NOT EXISTS ${home_directory}) + return() + endif() + endif() + + set(${output_third_party_path} ${home_directory}/.o3de/3rdParty PARENT_SCOPE) +endfunction() + +get_default_third_party_folder(o3de_default_third_party_path) +set(LY_3RDPARTY_PATH "${o3de_default_third_party_path}" CACHE PATH "Path to the 3rdParty folder") if(LY_3RDPARTY_PATH) file(TO_CMAKE_PATH ${LY_3RDPARTY_PATH} LY_3RDPARTY_PATH) diff --git a/cmake/LYWrappers.cmake b/cmake/LYWrappers.cmake index 89a4ab29f0..b6daf8b6d7 100644 --- a/cmake/LYWrappers.cmake +++ b/cmake/LYWrappers.cmake @@ -257,14 +257,7 @@ function(ly_add_target) # IDE organization ly_source_groups_from_folders("${ALLFILES}") source_group("Generated Files" REGULAR_EXPRESSION "(${CMAKE_BINARY_DIR})") # Any file coming from the output folder - file(RELATIVE_PATH project_path ${LY_ROOT_FOLDER} ${CMAKE_CURRENT_SOURCE_DIR}) - # Visual Studio cannot load a project with a FOLDER that starts with a "../" relative path - # Strip away any leading ../ and then add a prefix of ExternalTargets/ as that in this scenario - # A relative directory with ../ would be outside of the Lumberyard Engine Root therefore it is external - set(ide_path ${project_path}) - if (${project_path} MATCHES [[^(\.\./)+(.*)]]) - set(ide_path "${CMAKE_MATCH_2}") - endif() + ly_get_vs_folder_directory(${CMAKE_CURRENT_SOURCE_DIR} ide_path) set_property(TARGET ${project_NAME} PROPERTY FOLDER ${ide_path}) @@ -639,3 +632,33 @@ function(ly_de_alias_target target_name output_variable_name) endif() set(${output_variable_name} ${de_aliased_target_name} PARENT_SCOPE) endfunction() + +#! ly_get_vs_folder_directory: Sets the Visual Studio folder name used for organizing vcxproj +# in the IDE +# +# Visual Studio cannot load projects that with a ".." relative path or contain a colon ":" as part of its FOLDER +# Therefore if the .vcxproj is absolute, the drive letter must be removed from the folder name +# +# What this method does is first check if the target being added to the Visual Studio solution is within +# the LY_ROOT_FOLDER(i.e is the LY_ROOT_FOLDER a prefix of the target source directory) +# If it is a relative path to the target is used as the folder name +# Otherwise the target directory would either +# 1. Be a path outside of the LY_ROOT_FOLDER on the same drive. +# In that case forming a relative path would cause it to start with ".." which will not work +# 2. Be an path outside of the LY_ROOT_FOLDER on a different drive +# Here a relative path cannot be formed and therefore the path would start with ":/Path/To/Project" +# Which shows up as unloaded due to containing a colon +# In this scenario the relative part of the path from the drive letter is used as the FOLDER name +# to make sure the projects show up in the loaded .sln +function(ly_get_vs_folder_directory absolute_target_source_dir output_source_dir) + # Get a relative directory to the LY_ROOT_FOLDER if possible for the Visual Studio solution hierarchy + # If a relative path cannot be formed, then retrieve a path with the drive letter stripped from it + cmake_path(IS_PREFIX LY_ROOT_FOLDER ${absolute_target_source_dir} is_target_prefix_of_engine_root) + if(is_target_prefix_of_engine_root) + cmake_path(RELATIVE_PATH absolute_target_source_dir BASE_DIRECTORY ${LY_ROOT_FOLDER} OUTPUT_VARIABLE relative_target_source_dir) + else() + cmake_path(GET absolute_target_source_dir RELATIVE_PART relative_target_source_dir) + endif() + + set(${output_source_dir} ${relative_target_source_dir} PARENT_SCOPE) +endfunction() diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index 4c94aa7fc5..7ab6006220 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -163,6 +163,7 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar unset(RUNTIME_DEPENDENCIES_PLACEHOLDER) endif() + get_target_property(inteface_build_dependencies_props ${TARGET_NAME} INTERFACE_LINK_LIBRARIES) unset(INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER) if(inteface_build_dependencies_props) @@ -522,47 +523,75 @@ function(ly_setup_others) DESTINATION . ) - # Gem Source Assets and Registry + # Gem Source Assets and configuration files # Find all gem directories relative to the CMake Source Dir - file(GLOB_RECURSE - gems_assets_path - LIST_DIRECTORIES TRUE - RELATIVE "${LY_ROOT_FOLDER}/" - "Gems/*" - ) - list(FILTER gems_assets_path INCLUDE REGEX "/(Assets|Registry)$") - foreach (gem_assets_path ${gems_assets_path}) - set(gem_abs_assets_path ${LY_ROOT_FOLDER}/${gem_assets_path}/) - if (EXISTS ${gem_abs_assets_path}) + # This first loop is to filter out transient and .gitignore'd folders that should be added to + # the install layout from the root directory. Such as /Cache. + # This is also done to avoid globbing thousands of files in subdirectories that shouldn't + # be processed. + foreach(gem_candidate_dir IN LISTS LY_EXTERNAL_SUBDIRS LY_PROJECTS) + file(REAL_PATH ${gem_candidate_dir} gem_candidate_dir BASE_DIRECTORY ${LY_ROOT_FOLDER}) + # Don't recurse immediately in order to exclude transient source artifacts + file(GLOB + external_subdir_files + LIST_DIRECTORIES TRUE + "${gem_candidate_dir}/*" + ) + # Exclude transient artifacts that shouldn't be copied to the install layout + list(FILTER external_subdir_files EXCLUDE REGEX "/([Bb]uild|[Cc]ache|[Uu]ser)$") + list(APPEND filtered_asset_paths ${external_subdir_files}) + endforeach() + + # At this point the filtered_assets_paths contains the list of all directories and files + # that are non-excluded candidates that can be scanned for target directories and files + # to copy over to the install layout + foreach(filtered_asset_path IN LISTS filtered_asset_paths) + if(IS_DIRECTORY ${filtered_asset_path}) + file(GLOB_RECURSE + recurse_assets_paths + LIST_DIRECTORIES TRUE + "${filtered_asset_path}/*" + ) + set(gem_file_paths ${recurse_assets_paths}) + # Make sure to prepend the current path iteration to the gem_dirs_path to filter + set(gem_dir_paths ${filtered_asset_path} ${recurse_assets_paths}) + + # Gather directories to copy over + # Currently only the Assets, Registry and Config directories are copied over + list(FILTER gem_dir_paths INCLUDE REGEX "/(Assets|Registry|Config)$") + list(APPEND gems_assets_dir_path ${gem_dir_paths}) + else() + set(gem_file_paths ${filtered_asset_path}) + endif() + + # Gather files to copy over + # Currently only the gem.json file is copied over + list(FILTER gem_file_paths INCLUDE REGEX "/(gem.json)$") + list(APPEND gems_assets_file_path "${gem_file_paths}") + endforeach() + + # gem directories to install + foreach(gem_absolute_dir_path ${gems_assets_dir_path}) + cmake_path(RELATIVE_PATH gem_absolute_dir_path BASE_DIRECTORY ${LY_ROOT_FOLDER} OUTPUT_VARIABLE gem_relative_dir_path) + if (EXISTS ${gem_absolute_dir_path}) # The trailing slash is IMPORTANT here as that is needed to prevent # the "Assets" folder from being copied underneath the /Assets folder - install(DIRECTORY ${gem_abs_assets_path} - DESTINATION ${gem_assets_path} + install(DIRECTORY "${gem_absolute_dir_path}/" + DESTINATION ${gem_relative_dir_path} ) endif() endforeach() - # gem.json files - file(GLOB_RECURSE - gems_json_path - LIST_DIRECTORIES FALSE - RELATIVE "${LY_ROOT_FOLDER}" - "Gems/*/gem.json" - ) - foreach(gem_json_path ${gems_json_path}) - get_filename_component(gem_relative_path ${gem_json_path} DIRECTORY) - install(FILES ${gem_json_path} - DESTINATION ${gem_relative_path} + # gem files to install + foreach(gem_absolute_file_path ${gems_assets_file_path}) + cmake_path(RELATIVE_PATH gem_absolute_file_path BASE_DIRECTORY ${LY_ROOT_FOLDER} OUTPUT_VARIABLE gem_relative_file_path) + cmake_path(GET gem_relative_file_path PARENT_PATH gem_relative_parent_dir) + install(FILES ${gem_absolute_file_path} + DESTINATION ${gem_relative_parent_dir} ) endforeach() - # Additional files needed by gems - install(DIRECTORY - ${LY_ROOT_FOLDER}/Gems/Atom/Asset/ImageProcessingAtom/Config - DESTINATION Gems/Atom/Asset/ImageProcessingAtom - ) - # Templates install(DIRECTORY ${LY_ROOT_FOLDER}/Templates diff --git a/scripts/o3de.bat b/scripts/o3de.bat index 98603bbeb2..b7e3a67261 100644 --- a/scripts/o3de.bat +++ b/scripts/o3de.bat @@ -9,7 +9,7 @@ REM pushd %~dp0% CD %~dp0.. SET "BASE_PATH=%CD%" -CD %~dp0 +popd SET "PYTHON_DIRECTORY=%BASE_PATH%\python" IF EXIST "%PYTHON_DIRECTORY%" GOTO pythonPathAvailable GOTO pythonDirNotFound @@ -25,10 +25,8 @@ GOTO fail ECHO Python executable not found: %PYTHON_EXECUTABLE% GOTO fail :fail -popd EXIT /b 1 :end -popd EXIT /b %ERRORLEVEL% diff --git a/scripts/o3de/o3de/engine_template.py b/scripts/o3de/o3de/engine_template.py index e424288eb5..1bc2cfc9fc 100755 --- a/scripts/o3de/o3de/engine_template.py +++ b/scripts/o3de/o3de/engine_template.py @@ -17,7 +17,7 @@ import uuid import re -from o3de import manifest, validation, utils +from o3de import manifest, register, validation, utils logger = logging.getLogger() logging.basicConfig() @@ -388,10 +388,11 @@ def create_template(source_path: pathlib.Path, if not source_path: logger.error('Src path cannot be empty.') return 1 - if not os.path.isdir(source_path): + if not source_path.is_dir(): logger.error(f'Src path {source_path} is not a folder.') return 1 + source_path = source_path.resolve() # source_name is now the last component of the source_path if not source_name: source_name = os.path.basename(source_path) @@ -401,11 +402,11 @@ def create_template(source_path: pathlib.Path, if not template_path: logger.info(f'Template path empty. Using source name {source_name}') template_path = source_name - if not os.path.isabs(template_path): + if not template_path.is_absolute(): default_templates_folder = manifest.get_registered(default_folder='templates') - template_path = default_templates_folder/ template_path + template_path = default_templates_folder / template_path logger.info(f'Template path not a full path. Using default templates folder {template_path}') - if not force and os.path.isdir(template_path): + if not force and template_path.is_dir(): logger.error(f'Template path {template_path} already exists.') return 1 @@ -415,8 +416,7 @@ def create_template(source_path: pathlib.Path, except ValueError: pass else: - logger.error(f'Template output path {template_path} cannot be a subdirectory of the source_path {source_path}:\n' - f'{err}') + logger.error(f'Template output path {template_path} cannot be a subdirectory of the source_path {source_path}\n') return 1 # template name is now the last component of the template_path @@ -1200,7 +1200,7 @@ def create_from_template(destination_path: pathlib.Path, if not destination_name: # destination name is now the last component of the destination_path - destination_name = os.path.basename(destination_path) + destination_name = destination_path.name # destination name cannot be the same as a restricted platform name if destination_name in restricted_platforms: @@ -1654,28 +1654,10 @@ def create_project(project_path: pathlib.Path, d.write('# SPDX-License-Identifier: Apache-2.0 OR MIT\n') d.write('# {END_LICENSE}\n') - # set the "engine" element of the project.json - engine_json_data = manifest.get_engine_json_data(engine_path=manifest.get_this_engine_path()) - try: - engine_name = engine_json_data['engine_name'] - except KeyError as e: - logger.error(f"engine_name for this engine not found in engine.json.") - return 1 - - project_json_data = manifest.get_project_json_data(project_path=project_path) - if not project_json_data: - # get_project_json_data already logs an error if the project.json is mising - return 1 - - project_json_data.update({"engine": engine_name}) - with open(project_json, 'w') as s: - try: - s.write(json.dumps(project_json_data, indent=4) + '\n') - except OSError as e: - logger.error(f'Failed to write project json at {project_path}.') - return 1 - return 0 + # Register the project with the global o3de_manifest.json and set the project.json "engine" field to match the + # engine.json "engine_name" field + return register.register(project_path=project_path) def create_gem(gem_path: pathlib.Path, @@ -1745,6 +1727,11 @@ def create_gem(gem_path: pathlib.Path, if template_name and not template_path: template_path = manifest.get_registered(template_name=template_name) + if not template_path: + logger.error(f'Could not find the template path using name {template_name}.\n' + 'Has the template been registered yet? It can be registered via the ' + '"o3de.py register --tp " command') + return 1 if not os.path.isdir(template_path): logger.error(f'Could not find the template {template_name}=>{template_path}') return 1 @@ -2068,7 +2055,7 @@ def _run_create_from_template(args: argparse) -> int: return create_from_template(args.destination_path, args.template_path, args.template_name, - args.destination_path, + args.destination_name, args.destination_restricted_path, args.destination_restricted_name, args.template_restricted_path, diff --git a/scripts/o3de/o3de/manifest.py b/scripts/o3de/o3de/manifest.py index 832987be3c..c4a7cf8f36 100644 --- a/scripts/o3de/o3de/manifest.py +++ b/scripts/o3de/o3de/manifest.py @@ -194,9 +194,9 @@ def load_o3de_manifest(manifest_path: pathlib.Path = None) -> dict: return json_data -def save_o3de_manifest(json_data: dict, manifest_path: pathlib.Path = None) -> None: +def save_o3de_manifest(json_data: dict, manifest_path: pathlib.Path = None) -> bool: """ - Save the json dictionary to the supplied manifest file or ~/.o3de/o3de_manifest.json if None + Save the json dictionary to the supplied manifest file or ~/.o3de/o3de_manifest.json if manifest_path is None :param json_data: dictionary to save in json format at the file path :param manifest_path: optional path to manifest file to save @@ -206,8 +206,10 @@ def save_o3de_manifest(json_data: dict, manifest_path: pathlib.Path = None) -> N with manifest_path.open('w') as s: try: s.write(json.dumps(json_data, indent=4) + '\n') + return True except OSError as e: logger.error(f'Manifest json failed to save: {str(e)}') + return False # Data query methods diff --git a/scripts/o3de/o3de/register.py b/scripts/o3de/o3de/register.py index 7ad341784e..40556205de 100644 --- a/scripts/o3de/o3de/register.py +++ b/scripts/o3de/o3de/register.py @@ -341,7 +341,7 @@ def register_o3de_object_path(json_data: dict, try: paths_to_remove.append(o3de_object_path.relative_to(save_path.parent)) except ValueError: - pass # It is OK relative path cannot be formed + pass # It is OK relative path cannot be formed manifest_data[o3de_object_key] = list(filter(lambda p: pathlib.Path(p) not in paths_to_remove, manifest_data.setdefault(o3de_object_key, []))) @@ -425,7 +425,6 @@ def register_project_path(json_data: dict, if not manifest.save_o3de_manifest(project_json_data, project_json_path): return 1 - return 0 @@ -754,9 +753,6 @@ def _run_register(args: argparse) -> int: return repo.refresh_repos() elif args.this_engine: ret_val = register(engine_path=manifest.get_this_engine_path(), force=args.force) - error_code = register_shipped_engine_o3de_objects(force=args.force) - if error_code: - ret_val = error_code return ret_val elif args.all_engines_path: return register_all_engines_in_folder(args.all_engines_path, args.remove, args.force) From f93c2f5b60ea70b87a77fb02850119f11a49bbe9 Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Fri, 2 Jul 2021 07:08:12 -0500 Subject: [PATCH 09/15] signoff (#1748) Signed-off-by: Terry Michaels --- Code/Framework/AzQtComponents/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Framework/AzQtComponents/CMakeLists.txt b/Code/Framework/AzQtComponents/CMakeLists.txt index 135781140e..d97ad4c59f 100644 --- a/Code/Framework/AzQtComponents/CMakeLists.txt +++ b/Code/Framework/AzQtComponents/CMakeLists.txt @@ -41,7 +41,7 @@ ly_add_target( ) ly_add_target( - NAME AmazonQtControlGallery APPLICATION + NAME O3DEQtControlGallery APPLICATION NAMESPACE AZ AUTOMOC AUTOUIC From 6459375b4e804bc77ee43151a1a8536b58e07988 Mon Sep 17 00:00:00 2001 From: Aaron Ruiz Mora Date: Fri, 2 Jul 2021 13:16:10 +0100 Subject: [PATCH 10/15] Fixed compilation error in release configuration (#1757) Signed-off-by: moraaar --- .../Tools/AssetProcessor/native/tests/AssetProcessorTest.cpp | 5 ++++- Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.cpp b/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.cpp index 8c39c37439..2b80a3acbf 100644 --- a/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.cpp +++ b/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.cpp @@ -84,7 +84,10 @@ namespace AssetProcessor AssetProcessorTest::TearDown(); } - void OnError([[maybe_unused]] const AZ::IO::SystemFile* file, const char* fileName, int errorCode) override + void OnError( + [[maybe_unused]] const AZ::IO::SystemFile* file, + [[maybe_unused]] const char* fileName, + [[maybe_unused]] int errorCode) override { AZ_Error("LegacyTestAdapter", false, "File error detected with %s with code %d", fileName, errorCode); } diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp b/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp index 7b255e1f46..45034686c3 100644 --- a/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectBuilderWorker.cpp @@ -64,7 +64,7 @@ namespace O3DE::ProjectManager return logFilePath.filePath(ProjectBuildErrorLogName); } - void ProjectBuilderWorker::QStringToAZTracePrint(const QString& error) + void ProjectBuilderWorker::QStringToAZTracePrint([[maybe_unused]] const QString& error) { AZ_TracePrintf("Project Manager", error.toStdString().c_str()); } From 0c43493e29187f16907b76d8c278d563941a3bd7 Mon Sep 17 00:00:00 2001 From: AMZN-stankowi <4838196+AMZN-stankowi@users.noreply.github.com> Date: Fri, 2 Jul 2021 07:56:54 -0700 Subject: [PATCH 11/15] FBX to Scene part 3, tangent generation rule FBX -> SourceScene (#1747) * Tangent space FromFBX -> FromSourceScene Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com> --- .../Importers/AssImpBitangentStreamImporter.cpp | 2 +- .../Importers/AssImpTangentStreamImporter.cpp | 2 +- .../DataTypes/GraphData/IMeshVertexTangentData.h | 6 +++--- .../SceneData/GraphData/MeshVertexBitangentData.cpp | 4 ++-- .../SceneData/GraphData/MeshVertexBitangentData.h | 2 +- .../SceneData/GraphData/MeshVertexTangentData.cpp | 4 ++-- .../SceneData/GraphData/MeshVertexTangentData.h | 2 +- Code/Tools/SceneAPI/SceneData/Rules/TangentsRule.cpp | 4 ++-- .../Tests/GraphData/GraphDataBehaviorTests.cpp | 4 ++-- .../SceneAPIExt/Rules/MotionSamplingRule.cpp | 6 +++--- .../Pipeline/SceneAPIExt/Rules/MotionSamplingRule.h | 4 ++-- .../TangentGenerator/TangentGenerateComponent.cpp | 12 ++++++------ 12 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpBitangentStreamImporter.cpp b/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpBitangentStreamImporter.cpp index d822ee148e..3acbaba9cc 100644 --- a/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpBitangentStreamImporter.cpp +++ b/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpBitangentStreamImporter.cpp @@ -86,7 +86,7 @@ namespace AZ // AssImp only has one bitangentStream per mesh. bitangentStream->SetBitangentSetIndex(0); - bitangentStream->SetTangentSpace(AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); + bitangentStream->SetTangentSpace(AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); bitangentStream->ReserveContainerSpace(vertexCount); for (int sdkMeshIndex = 0; sdkMeshIndex < currentNode->mNumMeshes; ++sdkMeshIndex) { diff --git a/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpTangentStreamImporter.cpp b/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpTangentStreamImporter.cpp index 97c9c6c004..074ca79281 100644 --- a/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpTangentStreamImporter.cpp +++ b/Code/Tools/SceneAPI/SceneBuilder/Importers/AssImpTangentStreamImporter.cpp @@ -88,7 +88,7 @@ namespace AZ // AssImp only has one tangentStream per mesh. tangentStream->SetTangentSetIndex(0); - tangentStream->SetTangentSpace(AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); + tangentStream->SetTangentSpace(AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); tangentStream->ReserveContainerSpace(vertexCount); for (int sdkMeshIndex = 0; sdkMeshIndex < currentNode->mNumMeshes; ++sdkMeshIndex) { diff --git a/Code/Tools/SceneAPI/SceneCore/DataTypes/GraphData/IMeshVertexTangentData.h b/Code/Tools/SceneAPI/SceneCore/DataTypes/GraphData/IMeshVertexTangentData.h index 908c1a2420..7f3895e5cb 100644 --- a/Code/Tools/SceneAPI/SceneCore/DataTypes/GraphData/IMeshVertexTangentData.h +++ b/Code/Tools/SceneAPI/SceneCore/DataTypes/GraphData/IMeshVertexTangentData.h @@ -23,9 +23,9 @@ namespace AZ { enum class TangentSpace { - FromFbx = 0, - MikkT = 1, - EMotionFX = 2 + FromSourceScene = 0, + MikkT = 1, + EMotionFX = 2 }; enum class BitangentMethod diff --git a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.cpp b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.cpp index 9ed9d41824..0dca36763e 100644 --- a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.cpp +++ b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.cpp @@ -20,7 +20,7 @@ namespace AZ SerializeContext* serializeContext = azrtti_cast(context); if (serializeContext) { - serializeContext->Class()->Version(1); + serializeContext->Class()->Version(2); } BehaviorContext* behaviorContext = azrtti_cast(context); @@ -34,7 +34,7 @@ namespace AZ ->Method("GetBitangentSetIndex", &MeshVertexBitangentData::GetBitangentSetIndex) ->Method("GetTangentSpace", &MeshVertexBitangentData::GetTangentSpace) ->Enum<(int)SceneAPI::DataTypes::TangentSpace::EMotionFX>("EMotionFX") - ->Enum<(int)SceneAPI::DataTypes::TangentSpace::FromFbx>("FromFbx") + ->Enum<(int)SceneAPI::DataTypes::TangentSpace::FromSourceScene>("FromSourceScene") ->Enum<(int)SceneAPI::DataTypes::TangentSpace::MikkT>("MikkT"); } } diff --git a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.h b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.h index 8ef10f3e2a..edf4184e94 100644 --- a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.h +++ b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexBitangentData.h @@ -50,7 +50,7 @@ namespace AZ SCENE_DATA_API void GetDebugOutput(AZ::SceneAPI::Utilities::DebugOutput& output) const override; protected: AZStd::vector m_bitangents; - AZ::SceneAPI::DataTypes::TangentSpace m_tangentSpace = AZ::SceneAPI::DataTypes::TangentSpace::FromFbx; + AZ::SceneAPI::DataTypes::TangentSpace m_tangentSpace = AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene; size_t m_setIndex = 0; }; diff --git a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.cpp b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.cpp index 58d59c04cb..cc9b9c8445 100644 --- a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.cpp +++ b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.cpp @@ -20,7 +20,7 @@ namespace AZ SerializeContext* serializeContext = azrtti_cast(context); if (serializeContext) { - serializeContext->Class()->Version(1); + serializeContext->Class()->Version(2); } BehaviorContext* behaviorContext = azrtti_cast(context); @@ -34,7 +34,7 @@ namespace AZ ->Method("GetTangentSetIndex", &MeshVertexTangentData::GetTangentSetIndex) ->Method("GetTangentSpace", &MeshVertexTangentData::GetTangentSpace) ->Enum<(int)SceneAPI::DataTypes::TangentSpace::EMotionFX>("EMotionFX") - ->Enum<(int)SceneAPI::DataTypes::TangentSpace::FromFbx>("FromFbx") + ->Enum<(int)SceneAPI::DataTypes::TangentSpace::FromSourceScene>("FromSourceScene") ->Enum<(int)SceneAPI::DataTypes::TangentSpace::MikkT>("MikkT"); } } diff --git a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.h b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.h index 333ab68f7e..7936a16307 100644 --- a/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.h +++ b/Code/Tools/SceneAPI/SceneData/GraphData/MeshVertexTangentData.h @@ -49,7 +49,7 @@ namespace AZ SCENE_DATA_API void GetDebugOutput(AZ::SceneAPI::Utilities::DebugOutput& output) const override; protected: AZStd::vector m_tangents; - AZ::SceneAPI::DataTypes::TangentSpace m_tangentSpace = AZ::SceneAPI::DataTypes::TangentSpace::FromFbx; + AZ::SceneAPI::DataTypes::TangentSpace m_tangentSpace = AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene; size_t m_setIndex = 0; }; diff --git a/Code/Tools/SceneAPI/SceneData/Rules/TangentsRule.cpp b/Code/Tools/SceneAPI/SceneData/Rules/TangentsRule.cpp index 9387d833cc..4b4fc04985 100644 --- a/Code/Tools/SceneAPI/SceneData/Rules/TangentsRule.cpp +++ b/Code/Tools/SceneAPI/SceneData/Rules/TangentsRule.cpp @@ -142,7 +142,7 @@ namespace AZ return; } - serializeContext->Class()->Version(1) + serializeContext->Class()->Version(2) ->Field("tangentSpace", &TangentsRule::m_tangentSpace) ->Field("bitangentMethod", &TangentsRule::m_bitangentMethod) ->Field("normalize", &TangentsRule::m_normalize) @@ -156,7 +156,7 @@ namespace AZ ->Attribute("AutoExpand", true) ->Attribute(AZ::Edit::Attributes::NameLabelOverride, "") ->DataElement(AZ::Edit::UIHandlers::ComboBox, &AZ::SceneAPI::SceneData::TangentsRule::m_tangentSpace, "Tangent space", "Specify the tangent space used for normal map baking. Choose 'From Fbx' to extract the tangents and bitangents directly from the Fbx file. When there is no tangents rule or the Fbx has no tangents stored inside it, the 'MikkT' option will be used with orthogonal tangents of unit length, so with the normalize option enabled, using the first UV set.") - ->EnumAttribute(AZ::SceneAPI::DataTypes::TangentSpace::FromFbx, "From Fbx") + ->EnumAttribute(AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene, "From Source Scene") ->EnumAttribute(AZ::SceneAPI::DataTypes::TangentSpace::MikkT, "MikkT") ->EnumAttribute(AZ::SceneAPI::DataTypes::TangentSpace::EMotionFX, "EMotion FX") ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) diff --git a/Code/Tools/SceneAPI/SceneData/Tests/GraphData/GraphDataBehaviorTests.cpp b/Code/Tools/SceneAPI/SceneData/Tests/GraphData/GraphDataBehaviorTests.cpp index d9827e738a..f5b296aa5f 100644 --- a/Code/Tools/SceneAPI/SceneData/Tests/GraphData/GraphDataBehaviorTests.cpp +++ b/Code/Tools/SceneAPI/SceneData/Tests/GraphData/GraphDataBehaviorTests.cpp @@ -83,7 +83,7 @@ namespace AZ auto* bitangentData = AZStd::any_cast(&data); bitangentData->AppendBitangent(AZ::Vector3{0.12f, 0.34f, 0.56f}); bitangentData->AppendBitangent(AZ::Vector3{0.77f, 0.88f, 0.99f}); - bitangentData->SetTangentSpace(AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); + bitangentData->SetTangentSpace(AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); bitangentData->SetBitangentSetIndex(1); return true; } @@ -317,7 +317,7 @@ namespace AZ ExpectExecute("TestExpectFloatEquals(bitangentData.y, 0.88)"); ExpectExecute("TestExpectFloatEquals(bitangentData.z, 0.99)"); ExpectExecute("TestExpectIntegerEquals(meshVertexBitangentData:GetBitangentSetIndex(), 1)"); - ExpectExecute("TestExpectTrue(meshVertexBitangentData:GetTangentSpace(), MeshVertexBitangentData.FromFbx)"); + ExpectExecute("TestExpectTrue(meshVertexBitangentData:GetTangentSpace(), MeshVertexBitangentData.FromSourceScene)"); } TEST_F(GrapDatahBehaviorScriptTest, SceneGraph_MeshVertexTangentData_AccessWorks) diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.cpp index 84a951eeed..d9f1a51ffb 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.cpp @@ -129,7 +129,7 @@ namespace EMotionFX return; } - serializeContext->Class()->Version(3) + serializeContext->Class()->Version(4) ->Field("motionDataType", &MotionSamplingRule::m_motionDataType) ->Field("sampleRateMethod", &MotionSamplingRule::m_sampleRateMethod) ->Field("customSampleRate", &MotionSamplingRule::m_customSampleRate) @@ -151,7 +151,7 @@ namespace EMotionFX ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) ->DataElement(AZ::Edit::UIHandlers::ComboBox, &MotionSamplingRule::m_sampleRateMethod, "Sample rate", "Either use the Fbx sample rate or use a custom sample rate. The sample rate is automatically limited to the rate from Fbx.") ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) - ->EnumAttribute(SampleRateMethod::FromFbx, "From Fbx") + ->EnumAttribute(SampleRateMethod::FromSourceScene, "From Source Scene") ->EnumAttribute(SampleRateMethod::Custom, "Custom sample rate") ->DataElement(AZ::Edit::UIHandlers::Default, &MotionSamplingRule::m_keepDuration, "Keep duration", "When enabled this keep the duration the same as the Fbx motion duration, even if no joints are animated. " "When this option is disabled and the motion doesn't animate any joints then the resulting motion will have a duration of zero seconds.") @@ -199,7 +199,7 @@ namespace EMotionFX AZ::Crc32 MotionSamplingRule::GetVisibilityCustomSampleRate() const { - return m_sampleRateMethod == SampleRateMethod::FromFbx ? AZ::Edit::PropertyVisibility::Hide : AZ::Edit::PropertyVisibility::Show; + return m_sampleRateMethod == SampleRateMethod::FromSourceScene ? AZ::Edit::PropertyVisibility::Hide : AZ::Edit::PropertyVisibility::Show; } AZ::Crc32 MotionSamplingRule::GetVisibilityAllowedSizePercentage() const diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.h b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.h index f7464bf80c..95cee690d8 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.h +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionSamplingRule.h @@ -30,7 +30,7 @@ namespace EMotionFX enum class SampleRateMethod : AZ::u8 { - FromFbx = 0, + FromSourceScene = 0, Custom = 1 }; @@ -71,7 +71,7 @@ namespace EMotionFX AZ::Crc32 GetVisibilityAllowedSizePercentage() const; float m_customSampleRate = 60.0f; - SampleRateMethod m_sampleRateMethod = SampleRateMethod::FromFbx; + SampleRateMethod m_sampleRateMethod = SampleRateMethod::FromSourceScene; AZ::TypeId m_motionDataType = AZ::TypeId::CreateNull(); bool m_keepDuration = true; diff --git a/Gems/SceneProcessing/Code/Source/Generation/Components/TangentGenerator/TangentGenerateComponent.cpp b/Gems/SceneProcessing/Code/Source/Generation/Components/TangentGenerator/TangentGenerateComponent.cpp index e8798de0b6..67a032f737 100644 --- a/Gems/SceneProcessing/Code/Source/Generation/Components/TangentGenerator/TangentGenerateComponent.cpp +++ b/Gems/SceneProcessing/Code/Source/Generation/Components/TangentGenerator/TangentGenerateComponent.cpp @@ -123,8 +123,8 @@ namespace AZ::SceneGenerationComponents while (uvData) { // Get the tangents and bitangents from the source scene. - AZ::SceneAPI::DataTypes::IMeshVertexTangentData* fbxTangentData = AZ::SceneAPI::SceneData::TangentsRule::FindTangentData(graph, nodeIndex, uvSetIndex, AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); - AZ::SceneAPI::DataTypes::IMeshVertexBitangentData* fbxBitangentData = AZ::SceneAPI::SceneData::TangentsRule::FindBitangentData(graph, nodeIndex, uvSetIndex, AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); + AZ::SceneAPI::DataTypes::IMeshVertexTangentData* fbxTangentData = AZ::SceneAPI::SceneData::TangentsRule::FindTangentData(graph, nodeIndex, uvSetIndex, AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); + AZ::SceneAPI::DataTypes::IMeshVertexBitangentData* fbxBitangentData = AZ::SceneAPI::SceneData::TangentsRule::FindBitangentData(graph, nodeIndex, uvSetIndex, AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); if (fbxTangentData && fbxBitangentData) { @@ -198,8 +198,8 @@ namespace AZ::SceneGenerationComponents } // Check if we had tangents inside the source scene file. - AZ::SceneAPI::DataTypes::IMeshVertexTangentData* fbxTangentData = AZ::SceneAPI::SceneData::TangentsRule::FindTangentData(graph, nodeIndex, 0, AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); - AZ::SceneAPI::DataTypes::IMeshVertexBitangentData* fbxBitangentData = AZ::SceneAPI::SceneData::TangentsRule::FindBitangentData(graph, nodeIndex, 0, AZ::SceneAPI::DataTypes::TangentSpace::FromFbx); + AZ::SceneAPI::DataTypes::IMeshVertexTangentData* fbxTangentData = AZ::SceneAPI::SceneData::TangentsRule::FindTangentData(graph, nodeIndex, 0, AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); + AZ::SceneAPI::DataTypes::IMeshVertexBitangentData* fbxBitangentData = AZ::SceneAPI::SceneData::TangentsRule::FindBitangentData(graph, nodeIndex, 0, AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene); // Check what tangent spaces we need. AZStd::vector requiredSpaces = CollectRequiredTangentSpaces(scene); @@ -212,7 +212,7 @@ namespace AZ::SceneGenerationComponents } // If all we need is import from the source scene, and we have tangent data from the source scene already, then skip generating. - if ((requiredSpaces.size() == 1 && requiredSpaces[0] == AZ::SceneAPI::DataTypes::TangentSpace::FromFbx) && fbxTangentData && fbxBitangentData) + if ((requiredSpaces.size() == 1 && requiredSpaces[0] == AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene) && fbxTangentData && fbxBitangentData) { return true; } @@ -232,7 +232,7 @@ namespace AZ::SceneGenerationComponents switch (space) { // If we want Fbx tangents, we don't need to do anything for that. - case AZ::SceneAPI::DataTypes::TangentSpace::FromFbx: + case AZ::SceneAPI::DataTypes::TangentSpace::FromSourceScene: { allSuccess &= true; } From d365ff51d68a69b3a4d39dc7c52a52f88fbf0e9c Mon Sep 17 00:00:00 2001 From: amzn-hdoke <61443753+hdoke@users.noreply.github.com> Date: Fri, 2 Jul 2021 08:24:42 -0700 Subject: [PATCH 12/15] [AWS][Gems] Fix for Linux Release Monolithic Builds (#1739) * Add missing 3rd party deps to Metrics gem Signed-off-by: dhrudesh * Set AWSNativeSDK-linux revision to 5 Signed-off-by: dhrudesh --- AutomatedTesting/Gem/Code/enabled_gems.cmake | 2 +- Gems/AWSMetrics/Code/CMakeLists.txt | 1 + cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/AutomatedTesting/Gem/Code/enabled_gems.cmake b/AutomatedTesting/Gem/Code/enabled_gems.cmake index fa421b8633..d4f23ede63 100644 --- a/AutomatedTesting/Gem/Code/enabled_gems.cmake +++ b/AutomatedTesting/Gem/Code/enabled_gems.cmake @@ -51,7 +51,7 @@ set(ENABLED_GEMS ) # TODO remove conditional add once AWSNativeSDK libs are fixed for Android and Linux Monolithic release. -set(aws_excluded_platforms Linux Android) +set(aws_excluded_platforms Android) if (NOT (LY_MONOLITHIC_GAME AND ${PAL_PLATFORM_NAME} IN_LIST aws_excluded_platforms)) list(APPEND ENABLED_GEMS AWSCore diff --git a/Gems/AWSMetrics/Code/CMakeLists.txt b/Gems/AWSMetrics/Code/CMakeLists.txt index 153c8bec1b..150e226d14 100644 --- a/Gems/AWSMetrics/Code/CMakeLists.txt +++ b/Gems/AWSMetrics/Code/CMakeLists.txt @@ -21,6 +21,7 @@ ly_add_target( AZ::AzFramework PUBLIC Gem::AWSCore + 3rdParty::AWSNativeSDK::Core ) ly_add_target( diff --git a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake index c0099b8dbe..b0cfb52fb2 100644 --- a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake +++ b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake @@ -31,7 +31,7 @@ ly_associate_package(PACKAGE_NAME PVRTexTool-4.24.0-rev4-multiplatform ly_associate_package(PACKAGE_NAME AWSGameLiftServerSDK-3.4.1-rev1-linux TARGETS AWSGameLiftServerSDK PACKAGE_HASH a8149a95bd100384af6ade97e2b21a56173740d921e6c3da8188cd51554d39af) ly_associate_package(PACKAGE_NAME freetype-2.10.4.14-linux TARGETS freetype PACKAGE_HASH 9ad246873067717962c6b780d28a5ce3cef3321b73c9aea746a039c798f52e93) ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-linux TARGETS tiff PACKAGE_HASH ae92b4d3b189c42ef644abc5cac865d1fb2eb7cb5622ec17e35642b00d1a0a76) -ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.7.167-rev4-linux TARGETS AWSNativeSDK PACKAGE_HASH b4db38de49d35a5f7500aed7f4aee5ec511dd3b584ee06fe9097885690191a5d) +ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.7.167-rev5-linux TARGETS AWSNativeSDK PACKAGE_HASH 0101a4052d9fce83a6f5515e00f366e97b308ecb8261ad23a6e4eb4365212ab6) ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev5-linux TARGETS Lua PACKAGE_HASH 1adc812abe3dd0dbb2ca9756f81d8f0e0ba45779ac85bf1d8455b25c531a38b0) ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev3-linux TARGETS PhysX PACKAGE_HASH a110249cbef4f266b0002c4ee9a71f59f373040cefbe6b82f1e1510c811edde6) ly_associate_package(PACKAGE_NAME etc2comp-9cd0f9cae0-rev1-linux TARGETS etc2comp PACKAGE_HASH 9283aa5db5bb7fb90a0ddb7a9f3895317c8ebe8044943124bbb3673a41407430) From 3c959832a3165ce834de3d812f313ce4bbf06d80 Mon Sep 17 00:00:00 2001 From: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> Date: Fri, 2 Jul 2021 08:24:58 -0700 Subject: [PATCH 13/15] Reparenting - introduce loop detection on instance reparenting (DCO fix) (#1752) * Detect loops in reparenting code and assert. Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Add warning when detecting a cyclical dependancy. Revert reparenting on loop. Signed-off-by: daimini <82231674+AMZN-daimini@users.noreply.github.com> Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> * Use GetActiveWindow helper to handle window edge cases Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> --- .../Application/ToolsApplication.cpp | 9 +++- .../Prefab/PrefabPublicHandler.cpp | 43 +++++++++++++++++-- .../Prefab/PrefabPublicHandler.h | 2 +- .../Prefab/PrefabPublicInterface.h | 3 +- 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp index ff0c2c586b..95f13dc649 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -1589,7 +1590,13 @@ namespace AzToolsFramework // Multiple changes to the same entity are just split between different undo nodes. for (AZ::EntityId entityId : m_dirtyEntities) { - prefabPublicInterface->GenerateUndoNodesForEntityChangeAndUpdateCache(entityId, m_currentBatchUndo); + auto outcome = prefabPublicInterface->GenerateUndoNodesForEntityChangeAndUpdateCache(entityId, m_currentBatchUndo); + + if (!outcome.IsSuccess()) + { + QMessageBox::warning( + AzToolsFramework::GetActiveWindow(), QString("Error"), QString(outcome.GetError().c_str()), QMessageBox::Ok, QMessageBox::Ok); + } } } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index cf55a02f65..d479b72e37 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -587,21 +587,21 @@ namespace AzToolsFramework return AZ::Success(entityId); } - void PrefabPublicHandler::GenerateUndoNodesForEntityChangeAndUpdateCache( + PrefabOperationResult PrefabPublicHandler::GenerateUndoNodesForEntityChangeAndUpdateCache( AZ::EntityId entityId, UndoSystem::URSequencePoint* parentUndoBatch) { // Create Undo node on entities if they belong to an instance InstanceOptionalReference owningInstance = m_instanceEntityMapperInterface->FindOwningInstance(entityId); if (!owningInstance.has_value()) { - return; + return AZ::Success(); } AZ::Entity* entity = GetEntityById(entityId); if (!entity) { m_prefabUndoCache.PurgeCache(entityId); - return; + return AZ::Success(); } PrefabDom beforeState; @@ -633,6 +633,41 @@ namespace AzToolsFramework (&beforeOwningInstance->get() != &afterOwningInstance->get())) { isNewParentOwnedByDifferentInstance = true; + + // Detect loops. Assert if an instance has been reparented in such a way to generate circular dependencies. + AZStd::vector instancesInvolved; + + if (isInstanceContainerEntity) + { + instancesInvolved.push_back(&owningInstance->get()); + } + else + { + // Retrieve all nested instances that are part of the subtree under the current entity. + EntityList entities; + RetrieveAndSortPrefabEntitiesAndInstances({ entity }, beforeOwningInstance->get(), entities, instancesInvolved); + } + + for (Instance* instance : instancesInvolved) + { + const PrefabDom& templateDom = + m_prefabSystemComponentInterface->FindTemplateDom(instance->GetTemplateId()); + AZStd::unordered_set templatePaths; + PrefabDomUtils::GetTemplateSourcePaths(templateDom, templatePaths); + + if (IsCyclicalDependencyFound(afterOwningInstance->get(), templatePaths)) + { + // Cancel the operation by restoring the previous parent + AZ::TransformBus::Event(entityId, &AZ::TransformBus::Events::SetParent, beforeParentId); + m_prefabUndoCache.UpdateCache(entityId); + + // Skip the creation of an undo node + return AZ::Failure(AZStd::string::format( + "Reparent Prefab operation aborted - Cyclical dependency detected\n(%s depends on %s).", + instance->GetTemplateSourcePath().Native().c_str(), + afterOwningInstance->get().GetTemplateSourcePath().Native().c_str())); + } + } } } @@ -673,6 +708,8 @@ namespace AzToolsFramework } m_prefabUndoCache.UpdateCache(entityId); + + return AZ::Success(); } void PrefabPublicHandler::Internal_HandleContainerOverride( diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h index 687c11cd60..7dbb7b1e71 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h @@ -46,7 +46,7 @@ namespace AzToolsFramework PrefabOperationResult SavePrefab(AZ::IO::Path filePath) override; PrefabEntityResult CreateEntity(AZ::EntityId parentId, const AZ::Vector3& position) override; - void GenerateUndoNodesForEntityChangeAndUpdateCache(AZ::EntityId entityId, UndoSystem::URSequencePoint* parentUndoBatch) override; + PrefabOperationResult GenerateUndoNodesForEntityChangeAndUpdateCache(AZ::EntityId entityId, UndoSystem::URSequencePoint* parentUndoBatch) override; bool IsInstanceContainerEntity(AZ::EntityId entityId) const override; bool IsLevelInstanceContainerEntity(AZ::EntityId entityId) const override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h index e65268dcb2..100e403660 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h @@ -79,8 +79,9 @@ namespace AzToolsFramework * * @param entityId The entity to patch. * @param parentUndoBatch The undo batch the undo nodes should be parented to. + * @return Returns Success if the node was generated correctly, or an error message otherwise. */ - virtual void GenerateUndoNodesForEntityChangeAndUpdateCache( + virtual PrefabOperationResult GenerateUndoNodesForEntityChangeAndUpdateCache( AZ::EntityId entityId, UndoSystem::URSequencePoint* parentUndoBatch) = 0; /** From 2a42e7a0125f33dea661659dcb34e9f6d6a61b65 Mon Sep 17 00:00:00 2001 From: Benjamin Jillich <43751992+amzn-jillich@users.noreply.github.com> Date: Fri, 2 Jul 2021 08:56:34 -0700 Subject: [PATCH 14/15] [LYN-4393] As a dev I want to Enable Gems in O3DE.exe with Keyboard (#1760) Enabling and disabling the selected gem is now possible by pressing the space bar. Signed-off-by: Benjamin Jillich --- .../Source/GemCatalog/GemItemDelegate.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp index 2718165993..035fcb7181 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp @@ -131,6 +131,17 @@ namespace O3DE::ProjectManager return false; } + if (event->type() == QEvent::KeyPress) + { + auto keyEvent = static_cast(event); + if (keyEvent->key() == Qt::Key_Space) + { + const bool isAdded = GemModel::IsAdded(modelIndex); + GemModel::SetIsAdded(*model, modelIndex, !isAdded); + return true; + } + } + if (event->type() == QEvent::MouseButtonPress) { QMouseEvent* mouseEvent = static_cast(event); From d20cf06e1ef7a7396532ee28859fc1c620ae96c7 Mon Sep 17 00:00:00 2001 From: Alex Peterson <26804013+AMZN-alexpete@users.noreply.github.com> Date: Fri, 2 Jul 2021 08:59:44 -0700 Subject: [PATCH 15/15] Update with simpler .lfsconfig instructions (#1730) --- .lfsconfig | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.lfsconfig b/.lfsconfig index e51eb5e7c4..546f34ff1c 100644 --- a/.lfsconfig +++ b/.lfsconfig @@ -2,10 +2,14 @@ # Default LFS endpoint for this repository url=https://d3df09qsjufr6g.cloudfront.net/api/v1 -# To use the endpoint with your fork: -# 1. uncomment the url line below by removing the '#' -# 2. replace 'owner' with the username or organization that owns the fork -# 3. have git ignore your local modification of this file by running -# git update-index --skip-worktree .lfsconfig - -# url=https://d3df09qsjufr6g.cloudfront.net/api/v1/fork/owner +# To use the endpoint with your fork, run the following git command +# in your local repository (without the '#'), replacing 'owner' with +# the username or organization that owns the fork. +# +# git config lfs.url "https://d3df09qsjufr6g.cloudfront.net/api/v1/fork/owner" +# +# For example, if your fork is https://github.com/octocat/o3de use +# git config lfs.url "https://d3df09qsjufr6g.cloudfront.net/api/v1/fork/octocat" +# +# IMPORTANT: authenticate with your GitHub username and personal access token +# not your GitHub password