diff --git a/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_diff.tif.exportsettings b/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_diff.tif.exportsettings
index 5c4c862583..b65133fbb0 100644
--- a/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_diff.tif.exportsettings
+++ b/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_diff.tif.exportsettings
@@ -1 +1 @@
-/autooptimizefile=0 /preset=AlbedoWithGenericAlpha /reduce="es3:2,ios:2,osx_gl:0,pc:0,provo:0"
\ No newline at end of file
+/autooptimizefile=0 /preset=AlbedoWithGenericAlpha /reduce="android:2,ios:2,mac:0,pc:0,provo:0"
\ No newline at end of file
diff --git a/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_sss.tif.exportsettings b/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_sss.tif.exportsettings
index 441a11bc68..e8da408b36 100644
--- a/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_sss.tif.exportsettings
+++ b/AutomatedTesting/Assets/Objects/Foliage/Textures/grass_atlas_sss.tif.exportsettings
@@ -1 +1 @@
-/autooptimizefile=0 /preset=Albedo /reduce="es3:3,ios:3,osx_gl:0,pc:0,provo:0"
\ No newline at end of file
+/autooptimizefile=0 /preset=Albedo /reduce="android:3,ios:3,mac:0,pc:0,provo:0"
\ No newline at end of file
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/ap_all_platforms_setup_fixture.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/ap_all_platforms_setup_fixture.py
index e729ee9882..9a5b93ca80 100755
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/ap_all_platforms_setup_fixture.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/ap_all_platforms_setup_fixture.py
@@ -34,10 +34,10 @@ def ap_all_platforms_setup_fixture(request, workspace, ap_setup_fixture) -> Dict
# Specific platform cache locations
resources["pc_cache_location"] = os.path.join(cache_dir, "pc")
- resources["es3_cache_location"] = os.path.join(cache_dir, "es3")
+ resources["android_cache_location"] = os.path.join(cache_dir, "android")
resources["ios_cache_location"] = os.path.join(cache_dir, "ios")
- resources["osx_gl_cache_location"] = os.path.join(cache_dir, "osx_gl")
+ resources["mac_cache_location"] = os.path.join(cache_dir, "mac")
resources["provo_cache_location"] = os.path.join(cache_dir, "provo")
- resources["all_platforms"] = ["pc", "es3", "ios", "osx_gl", "provo"]
+ resources["all_platforms"] = ["pc", "android", "ios", "mac", "provo"]
return resources
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py
index 580816e7b5..7a85cb1813 100755
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py
@@ -54,7 +54,7 @@ def bundler_batch_setup_fixture(request, workspace, asset_processor, timeout) ->
platforms = [platform.strip() for platform in platforms.split(",")]
else:
# No commandline argument provided, default to mac and pc
- platforms = ["pc", "osx_gl"]
+ platforms = ["pc", "mac"]
class BundlerBatchFixture:
"""
@@ -241,11 +241,11 @@ def bundler_batch_setup_fixture(request, workspace, asset_processor, timeout) ->
def get_platform_flag(self, platform_name: str) -> int:
if (platform_name == "pc"):
return 1
- elif (platform_name == "es3"):
+ elif (platform_name == "android"):
return 2
elif (platform_name == "ios"):
return 4
- elif (platform_name == "osx_gl"):
+ elif (platform_name == "mac"):
return 8
elif (platform_name == "server"):
return 128
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py
index d236e87aa2..8738e8acdf 100755
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py
@@ -460,9 +460,9 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
"""
helper = bundler_batch_helper
# fmt:off
- assert "pc" in helper["platforms"] and "osx_gl" in helper["platforms"], \
+ assert "pc" in helper["platforms"] and "mac" in helper["platforms"], \
"This test requires both PC and MAC platforms to be enabled. " \
- "Please rerun with commandline option: '--bundle_platforms=pc,osx_gl'"
+ "Please rerun with commandline option: '--bundle_platforms=pc,mac'"
# fmt:on
seed_list = os.path.join(workspace.paths.engine_root(), "Engine", "SeedAssetList.seed") # Engine seed list
@@ -502,7 +502,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
for bundle_file in bundle_files.values():
assert os.path.isfile(bundle_file)
- # This asset is created on osx_gl platform but not on windows
+ # This asset is created on mac platform but not on windows
file_to_check = b"engineassets/shading/defaultprobe_cm.dds.5" # [use byte str because file is in binary]
# Extract the delta catalog file from pc archive. {file_to_check} SHOULD NOT be present for PC
@@ -512,11 +512,11 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
f"{file_to_check} was found in DeltaCatalog.xml in pc bundle file {bundle_files['pc']}"
# fmt:on
- # Extract the delta catalog file from osx_gl archive. {file_to_check} SHOULD be present for MAC
- file_contents = helper.extract_file_content(bundle_files["osx_gl"], "DeltaCatalog.xml")
+ # Extract the delta catalog file from mac archive. {file_to_check} SHOULD be present for MAC
+ file_contents = helper.extract_file_content(bundle_files["mac"], "DeltaCatalog.xml")
# fmt:off
assert file_to_check in file_contents, \
- f"{file_to_check} was not found in DeltaCatalog.xml in darwin bundle file {bundle_files['osx_gl']}"
+ f"{file_to_check} was not found in DeltaCatalog.xml in darwin bundle file {bundle_files['mac']}"
# fmt:on
# Gather checksums for first set of bundles
@@ -613,7 +613,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
helper.call_seeds(
seedListFile=helper["seed_list_file"],
addSeed=test_asset,
- platform="pc,osx_gl",
+ platform="pc,mac",
)
# Validate both mac and pc are activated for seed
@@ -626,7 +626,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
helper.call_seeds(
seedListFile=helper["seed_list_file"],
removePlatformFromSeeds="",
- platform="osx_gl",
+ platform="mac",
)
# Validate only pc platform for seed. Save file contents to variable
all_lines = check_seed_platform(helper["seed_list_file"], test_asset, helper["platform_values"]["pc"])
@@ -646,7 +646,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
helper.call_seeds(
seedListFile=helper["seed_list_file"],
addPlatformToSeeds="",
- platform="osx_gl",
+ platform="mac",
)
# Validate Mac platform was added back on. Save file contents
# fmt:off
@@ -670,7 +670,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
helper.call_seeds(
seedListFile=helper["seed_list_file"],
removeSeed=test_asset,
- platform="pc,osx_gl",
+ platform="pc,mac",
)
# Validate seed was removed from file
@@ -697,9 +697,9 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
env = ap_setup_fixture
# fmt:off
- assert "pc" in helper["platforms"] and "osx_gl" in helper["platforms"], \
+ assert "pc" in helper["platforms"] and "mac" in helper["platforms"], \
"This test requires both PC and MAC platforms to be enabled. " \
- "Please rerun with commandline option: '--bundle_platforms=pc,osx_gl'"
+ "Please rerun with commandline option: '--bundle_platforms=pc,mac'"
# fmt:on
# Test assets arranged in common lists: six (0-5) .txt files and .dat files
@@ -717,16 +717,16 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
file_platforms = {
"txtfile_0.txt": "pc",
"txtfile_1.txt": "pc",
- "txtfile_2.txt": "pc,osx_gl",
- "txtfile_3.txt": "pc,osx_gl",
- "txtfile_4.txt": "osx_gl",
- "txtfile_5.txt": "osx_gl",
+ "txtfile_2.txt": "pc,mac",
+ "txtfile_3.txt": "pc,mac",
+ "txtfile_4.txt": "mac",
+ "txtfile_5.txt": "mac",
"datfile_0.dat": "pc",
"datfile_1.dat": "pc",
- "datfile_2.dat": "pc,osx_gl",
- "datfile_3.dat": "pc,osx_gl",
- "datfile_4.dat": "osx_gl",
- "datfile_5.dat": "osx_gl",
+ "datfile_2.dat": "pc,mac",
+ "datfile_3.dat": "pc,mac",
+ "datfile_4.dat": "mac",
+ "datfile_5.dat": "mac",
}
# Comparison rules files and their associated 'comparisonType' flags
@@ -741,7 +741,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
# Get our test assets ready and processed
utils.prepare_test_assets(env["tests_dir"], "C16877178", env["project_test_assets_dir"])
- asset_processor.batch_process(timeout=timeout, fastscan=False, platforms="pc,osx_gl")
+ asset_processor.batch_process(timeout=timeout, fastscan=False, platforms="pc,mac")
# *** Some helper functions *** #
@@ -759,7 +759,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
helper.call_assetLists(
assetListFile=os.path.join(helper["test_dir"], asset_list_file_name),
seedListFile=os.path.join(helper["test_dir"], seed_file_name),
- platform="pc,osx_gl",
+ platform="pc,mac",
)
def get_platform_assets(asset_name_list: List[str]) -> Dict[str, List[str]]:
@@ -769,7 +769,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
for asset_name in asset_name_list:
if "pc" in file_platforms[asset_name]:
win_assets.append(asset_name)
- if "osx_gl" in file_platforms[asset_name]:
+ if "mac" in file_platforms[asset_name]:
mac_assets.append(asset_name)
return {"win": win_assets, "mac": mac_assets}
@@ -798,7 +798,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
# Get platform result file names
win_asset_list_file = helper.platform_file_name(request_file, platforms["pc"])
- mac_asset_list_file = helper.platform_file_name(request_file, platforms["osx_gl"])
+ mac_asset_list_file = helper.platform_file_name(request_file, platforms["mac"])
# Get expected platforms for each asset in asset_names
platform_files = get_platform_assets(asset_names)
@@ -879,14 +879,14 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
# fmt:on
# End verify_asset_list_contents()
- def run_compare_command_and_verify(platform_arg: str, expect_pc_output: bool, expect_osx_gl_output: bool) -> None:
+ def run_compare_command_and_verify(platform_arg: str, expect_pc_output: bool, expect_mac_output: bool) -> None:
# Expected asset list to equal result of comparison
expected_pc_asset_list = None
- expected_osx_gl_asset_list = None
+ expected_mac_asset_list = None
# Last output file. Use this for comparison to 'expected'
output_pc_asset_list = None
- output_osx_gl_asset_list = None
+ output_mac_asset_list = None
# Add the platform to the file name to match what the Bundler will create
last_output_arg = output_arg.split(",")[-1]
@@ -895,10 +895,10 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
expected_pc_asset_list = os.path.join(helper["test_dir"], helper.platform_file_name(expected_asset_list, platform))
output_pc_asset_list = helper.platform_file_name(last_output_arg, platform)
- if expect_osx_gl_output:
- platform = platforms["osx_gl"]
- expected_osx_gl_asset_list = os.path.join(helper["test_dir"], helper.platform_file_name(expected_asset_list, platform))
- output_osx_gl_asset_list = helper.platform_file_name(last_output_arg, platform)
+ if expect_mac_output:
+ platform = platforms["mac"]
+ expected_mac_asset_list = os.path.join(helper["test_dir"], helper.platform_file_name(expected_asset_list, platform))
+ output_mac_asset_list = helper.platform_file_name(last_output_arg, platform)
# Build execution command
cmd = generate_compare_command(platform_arg)
@@ -911,15 +911,15 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
verify_asset_list_contents(expected_pc_asset_list, output_pc_asset_list)
fs.delete([output_pc_asset_list], True, True)
- if expect_osx_gl_output:
- verify_asset_list_contents(expected_osx_gl_asset_list, output_osx_gl_asset_list)
- fs.delete([output_osx_gl_asset_list], True, True)
+ if expect_mac_output:
+ verify_asset_list_contents(expected_mac_asset_list, output_mac_asset_list)
+ fs.delete([output_mac_asset_list], True, True)
# End run_compare_command_and_verify()
# Generate command, run and validate for each platform
run_compare_command_and_verify("pc", True, False)
- run_compare_command_and_verify("osx_gl", False, True)
- run_compare_command_and_verify("pc,osx_gl", True, True)
+ run_compare_command_and_verify("mac", False, True)
+ run_compare_command_and_verify("pc,mac", True, True)
#run_compare_command_and_verify(None, True, True)
# End compare_and_check()
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests.py
index 50b3af1438..0d830b39e2 100755
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_tests.py
@@ -102,7 +102,7 @@ class TestsAssetProcessorBatch_AllPlatforms(object):
def test_RunAPBatch_TwoPlatforms_ExitCodeZero(self, asset_processor):
asset_processor.create_temp_asset_root()
asset_processor.enable_asset_processor_platform("pc")
- asset_processor.enable_asset_processor_platform("osx_gl")
+ asset_processor.enable_asset_processor_platform("mac")
result, _ = asset_processor.batch_process()
assert result, "AP Batch failed"
diff --git a/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt
index e8f3349df4..834254134e 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt
@@ -39,4 +39,19 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
COMPONENT
Editor
)
+
+ ly_add_pytest(
+ NAME AutomatedTesting::EditorTests_Sandbox
+ TEST_SUITE sandbox
+ TEST_SERIAL
+ PATH ${CMAKE_CURRENT_LIST_DIR}
+ PYTEST_MARKS "SUITE_sandbox"
+ TIMEOUT 1500
+ RUNTIME_DEPENDENCIES
+ Legacy::Editor
+ AZ::AssetProcessor
+ AutomatedTesting.Assets
+ COMPONENT
+ Editor
+ )
endif()
diff --git a/AutomatedTesting/Gem/PythonTests/editor/test_Docking.py b/AutomatedTesting/Gem/PythonTests/editor/test_Docking.py
index c2d515e250..f887560a19 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/test_Docking.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/test_Docking.py
@@ -39,7 +39,7 @@ class TestDocking(object):
file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", level)], True, True)
@pytest.mark.test_case_id("C6376081")
- @pytest.mark.SUITE_periodic
+ @pytest.mark.SUITE_sandbox
def test_Docking_BasicDockedTools(self, request, editor, level, launcher_platform):
expected_lines = [
"The tools are all docked together in a tabbed widget",
diff --git a/AutomatedTesting/Gem/PythonTests/editor/test_Menus.py b/AutomatedTesting/Gem/PythonTests/editor/test_Menus.py
index 70a22f9e2a..c2da1343de 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/test_Menus.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/test_Menus.py
@@ -39,7 +39,7 @@ class TestMenus(object):
file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", level)], True, True)
@pytest.mark.test_case_id("C16780783", "C2174438")
- @pytest.mark.SUITE_periodic
+ @pytest.mark.SUITE_sandbox
def test_Menus_EditMenuOptions_Work(self, request, editor, level, launcher_platform):
expected_lines = [
"Undo Action triggered",
@@ -113,7 +113,7 @@ class TestMenus(object):
)
@pytest.mark.test_case_id("C16780778")
- @pytest.mark.SUITE_periodic
+ @pytest.mark.SUITE_sandbox
def test_Menus_FileMenuOptions_Work(self, request, editor, level, launcher_platform):
expected_lines = [
"New Level Action triggered",
diff --git a/AutomatedTesting/Levels/WaterSample/WaterSample.ly b/AutomatedTesting/Levels/WaterSample/WaterSample.ly
deleted file mode 100644
index b1899f3710..0000000000
--- a/AutomatedTesting/Levels/WaterSample/WaterSample.ly
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d49aceca5ad4e0b9f46c8127afb5c53b68aa30272950b1abd66fba310977ff0c
-size 15032
diff --git a/AutomatedTesting/Levels/WaterSample/filelist.xml b/AutomatedTesting/Levels/WaterSample/filelist.xml
deleted file mode 100644
index d14b2fdaf2..0000000000
--- a/AutomatedTesting/Levels/WaterSample/filelist.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/halfsphere.cgf b/AutomatedTesting/Levels/WaterSample/halfsphere.cgf
deleted file mode 100644
index 4426d8a232..0000000000
--- a/AutomatedTesting/Levels/WaterSample/halfsphere.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5f221acd847ec8a15e1333a5163d6d0fd886b8eda46fa7b133f76ddbf1d11216
-size 41472
diff --git a/AutomatedTesting/Levels/WaterSample/halfsphere2.cgf b/AutomatedTesting/Levels/WaterSample/halfsphere2.cgf
deleted file mode 100644
index c776ff68b8..0000000000
--- a/AutomatedTesting/Levels/WaterSample/halfsphere2.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c8e5dcfbe65fd2fd8ea29a38a96e703683c544fd42b9424857b1df3718c7775a
-size 41472
diff --git a/AutomatedTesting/Levels/WaterSample/level.pak b/AutomatedTesting/Levels/WaterSample/level.pak
deleted file mode 100644
index 1753ef4b93..0000000000
--- a/AutomatedTesting/Levels/WaterSample/level.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0378911c27933302042550d5a031a5f9104296162edc2b21e44893f1b8cff969
-size 44124
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/Environment.xml b/AutomatedTesting/Levels/WaterSample/leveldata/Environment.xml
deleted file mode 100644
index 6a95c631bb..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/Environment.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/WaterSample/leveldata/TerrainTexture.xml
deleted file mode 100644
index 21741afe52..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/TerrainTexture.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/WaterSample/leveldata/TimeOfDay.xml
deleted file mode 100644
index 60ad405904..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/TimeOfDay.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/WaterSample/leveldata/VegetationMap.dat
deleted file mode 100644
index dce5631cd0..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/VegetationMap.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
-size 63
diff --git a/AutomatedTesting/Levels/WaterSample/pool.cgf b/AutomatedTesting/Levels/WaterSample/pool.cgf
deleted file mode 100644
index 04bec52a62..0000000000
--- a/AutomatedTesting/Levels/WaterSample/pool.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:12ca8f1942331abde4d58724aea22609c8d7951cc415afa6e5f1c550a14e67b0
-size 363624
diff --git a/AutomatedTesting/Levels/WaterSample/pool2.cgf b/AutomatedTesting/Levels/WaterSample/pool2.cgf
deleted file mode 100644
index 204306f8a8..0000000000
--- a/AutomatedTesting/Levels/WaterSample/pool2.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f5b525a410730d84c0b3e97396d392e1e72f4b894742ddef3de4ede5542b0f8e
-size 86148
diff --git a/AutomatedTesting/Levels/WaterSample/tags.txt b/AutomatedTesting/Levels/WaterSample/tags.txt
deleted file mode 100644
index 0d6c1880e7..0000000000
--- a/AutomatedTesting/Levels/WaterSample/tags.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
-0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/WaterSample/terraintexture.pak b/AutomatedTesting/Levels/WaterSample/terraintexture.pak
deleted file mode 100644
index fe3604a050..0000000000
--- a/AutomatedTesting/Levels/WaterSample/terraintexture.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
-size 22
diff --git a/AutomatedTesting/Levels/WaterSample/woodland_canyon_river.mtl b/AutomatedTesting/Levels/WaterSample/woodland_canyon_river.mtl
deleted file mode 100644
index 4548bca421..0000000000
--- a/AutomatedTesting/Levels/WaterSample/woodland_canyon_river.mtl
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Objects/LumberTank/ProxyGray_ddna.tif.exportsettings b/AutomatedTesting/Objects/LumberTank/ProxyGray_ddna.tif.exportsettings
index 013c774e9e..a4e1a9a3c5 100644
--- a/AutomatedTesting/Objects/LumberTank/ProxyGray_ddna.tif.exportsettings
+++ b/AutomatedTesting/Objects/LumberTank/ProxyGray_ddna.tif.exportsettings
@@ -1 +1 @@
-/autooptimizefile=0 /M=50,50,0,50,50,50 /preset=NormalsWithSmoothness /reduce="es3:1,ios:1,osx_gl:0,pc:0,provo:0"
\ No newline at end of file
+/autooptimizefile=0 /M=50,50,0,50,50,50 /preset=NormalsWithSmoothness /reduce="android:1,ios:1,mac:0,pc:0,provo:0"
\ No newline at end of file
diff --git a/AutomatedTesting/preview.png b/AutomatedTesting/preview.png
index 2191a0ebc2..3d4fe78063 100644
--- a/AutomatedTesting/preview.png
+++ b/AutomatedTesting/preview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a18fae4040a22d2bb359a8ca642b97bb8f6468eeb52e2826b3b029bd8f1350b6
-size 5466
+oid sha256:40949893ed7009eeaa90b7ce6057cb6be9dfaf7b162e3c26ba9dadf985939d7d
+size 2038
diff --git a/Code/CryEngine/CryCommon/ISystem.h b/Code/CryEngine/CryCommon/ISystem.h
index f863804f3d..653776f55b 100644
--- a/Code/CryEngine/CryCommon/ISystem.h
+++ b/Code/CryEngine/CryCommon/ISystem.h
@@ -125,7 +125,7 @@ enum ESystemConfigPlatform
{
CONFIG_INVALID_PLATFORM = 0,
CONFIG_PC = 1,
- CONFIG_OSX_GL = 2,
+ CONFIG_MAC = 2,
CONFIG_OSX_METAL = 3,
CONFIG_ANDROID = 4,
CONFIG_IOS = 5,
diff --git a/Code/CryEngine/CryCommon/LyShine/IDraw2d.h b/Code/CryEngine/CryCommon/LyShine/IDraw2d.h
index 16fdfceca3..76a71c9e24 100644
--- a/Code/CryEngine/CryCommon/LyShine/IDraw2d.h
+++ b/Code/CryEngine/CryCommon/LyShine/IDraw2d.h
@@ -11,7 +11,6 @@
*/
#pragma once
-#include
#include
#include
#include
@@ -84,7 +83,7 @@ public: // types
//! If this is not passed then the defaults below are used
struct TextOptions
{
- IFFont* font; //!< default is "default"
+ AZStd::string fontName; //!< default is "default"
unsigned int effectIndex; //!< default is 0
AZ::Vector3 color; //!< default is (1,1,1)
HAlign horizontalAlignment; //!< default is HAlign::Left
diff --git a/Code/CryEngine/CrySystem/System.h b/Code/CryEngine/CrySystem/System.h
index b91b1ba059..a258030f70 100644
--- a/Code/CryEngine/CrySystem/System.h
+++ b/Code/CryEngine/CrySystem/System.h
@@ -729,7 +729,7 @@ protected: // -------------------------------------------------------------
CCmdLine* m_pCmdLine;
string m_currentLanguageAudio;
- string m_systemConfigName; // computed from system_(hardwareplatform)_(assetsPlatform) - eg, system_android_es3.cfg or system_android_opengl.cfg or system_windows_pc.cfg
+ string m_systemConfigName; // computed from system_(hardwareplatform)_(assetsPlatform) - eg, system_android_android.cfg or system_windows_pc.cfg
std::vector< std::pair > m_updateTimes;
diff --git a/Code/Framework/AzCore/AzCore/Component/TransformBus.h b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
index be18593d54..b180e97332 100644
--- a/Code/Framework/AzCore/AzCore/Component/TransformBus.h
+++ b/Code/Framework/AzCore/AzCore/Component/TransformBus.h
@@ -172,78 +172,10 @@ namespace AZ
//! Rotation modifiers
//! @{
- //! @deprecated Use SetLocalRotation()
- //! Sets the entity's rotation in the world.
- //! The origin of the axes is the entity's position in world space.
- //! @param eulerAnglesRadians A three-dimensional vector, containing Euler angles in radians, to rotate the entity by.
- virtual void SetRotation([[maybe_unused]] const AZ::Vector3& eulerAnglesRadians) {}
-
- //! @deprecated Use SetLocalRotation()
- //! Sets the entity's rotation around the world's X axis.
- //! The origin of the axis is the entity's position in world space.
- //! @param eulerAngleRadians The X coordinate Euler angle in radians to use for the entity's rotation.
- virtual void SetRotationX([[maybe_unused]] float eulerAngleRadian) {}
-
- //! @deprecated Use SetLocalRotation()
- //! Sets the entity's rotation around the world's Y axis.
- //! The origin of the axis is the entity's position in world space.
- //! @param eulerAngleRadians The Y coordinate Euler angle in radians to use for the entity's rotation.
- virtual void SetRotationY([[maybe_unused]] float eulerAngleRadian) {}
-
- //! @deprecated Use SetLocalRotation()
- //! Sets the entity's rotation around the world's Z axis.
- //! The origin of the axis is the entity's position in world space.
- //! @param eulerAngleRadians The Z coordinate Euler angle in radians to use for the entity's rotation.
- virtual void SetRotationZ([[maybe_unused]] float eulerAngleRadian) {}
-
- //! @deprecated Use SetLocalRotationQuaternion()
//! Sets the entity's rotation in the world in quaternion notation.
//! The origin of the axes is the entity's position in world space.
//! @param quaternion A quaternion that represents the rotation to use for the entity.
- virtual void SetRotationQuaternion([[maybe_unused]] const AZ::Quaternion& quaternion) {}
-
- //! @deprecated Use RotateAroundLocalX()
- //! Rotates the entity around the world's X axis.
- //! The origin of the axis is the entity's position in world space.
- //! @param eulerAngleRadians The Euler angle in radians by which to rotate the entity around the X axis.
- virtual void RotateByX([[maybe_unused]] float eulerAngleRadian) {}
-
- //! @deprecated Use RotateAroundLocalY()
- //! Rotates the entity around the world's Y axis.
- //! The origin of the axis is the entity's position in world space.
- //! @param eulerAngleRadians The Euler angle in radians by which to rotate the entity around the Y axis.
- virtual void RotateByY([[maybe_unused]] float eulerAngleRadian) {}
-
- //! @deprecated Use RotateAroundLocalZ()
- //! Rotates the entity around the world's Z axis.
- //! The origin of the axis is the entity's position in world space.
- //! @param eulerAngleRadians The Euler angle in radians by which to rotate the entity around the Z axis.
- virtual void RotateByZ([[maybe_unused]] float eulerAngleRadian) {}
-
- //! @deprecated Use GetLocalRotation()
- //! Gets the entity's rotation in the world in Euler angles rotation in radians.
- //! @return A three-dimensional vector, containing Euler angles in radians, that represents the entity's rotation.
- virtual AZ::Vector3 GetRotationEulerRadians() { return AZ::Vector3(FLT_MAX); }
-
- //! @deprecated Use GetLocalRotationQuaternion()
- //! Gets the entity's rotation in the world in quaternion format.
- //! @return A quaternion that represents the entity's rotation in world space.
- virtual AZ::Quaternion GetRotationQuaternion() { return AZ::Quaternion::CreateZero(); }
-
- //! @deprecated Use GetLocalRotation()
- //! Gets the entity's rotation around the world's X axis.
- //! @return The Euler angle in radians by which the the entity is rotated around the X axis in world space.
- virtual float GetRotationX() { return FLT_MAX; }
-
- //! @deprecated Use GetLocalRotation()
- //! Gets the entity's rotation around the world's Y axis.
- //! @return The Euler angle in radians by which the the entity is rotated around the Y axis in world space.
- virtual float GetRotationY() { return FLT_MAX; }
-
- //! @deprecated Use GetLocalRotation()
- //! Gets the entity's rotation around the world's Z axis.
- //! @return The Euler angle in radians by which the the entity is rotated around the Z axis in world space.
- virtual float GetRotationZ() { return FLT_MAX; }
+ virtual void SetWorldRotationQuaternion([[maybe_unused]] const AZ::Quaternion& quaternion) {}
//! Get angles in radian for each principle axis around which the world transform is
//! rotated in the order of z-axis and y-axis and then x-axis.
diff --git a/Code/Framework/AzCore/AzCore/Math/Random.h b/Code/Framework/AzCore/AzCore/Math/Random.h
index 8b28f6aaad..8b2763df50 100644
--- a/Code/Framework/AzCore/AzCore/Math/Random.h
+++ b/Code/Framework/AzCore/AzCore/Math/Random.h
@@ -126,17 +126,16 @@ namespace AZ
m_offsets.fill(1); // Halton sequences start at index 1.
m_increments.fill(1); // By default increment by 1 between each number.
}
-
- //! Returns a Halton sequence in an array of N length
- template
- AZStd::array, N> GetHaltonSequence()
+
+ //! Fills a provided container from begin to end with a Halton sequence.
+ //! Entries are expected to be, or implicitly converted to, AZStd::array.
+ template
+ void FillHaltonSequence(Iterator begin, Iterator end)
{
- AZStd::array, N> result;
-
AZStd::array indices = m_offsets;
// Generator that returns the Halton number for all bases for a single entry.
- auto f = [&] ()
+ auto f = [&]()
{
AZStd::array item;
for (auto d = 0; d < Dimensions; ++d)
@@ -147,12 +146,20 @@ namespace AZ
return item;
};
- AZStd::generate(result.begin(), result.end(), f);
+ AZStd::generate(begin, end, f);
+ }
+
+ //! Returns a Halton sequence in an array of N length.
+ template
+ AZStd::array, N> GetHaltonSequence()
+ {
+ AZStd::array, N> result;
+ FillHaltonSequence(result.begin(), result.end());
return result;
}
//! Sets the offsets per dimension to start generating a sequence from.
- //! By default, there is no offset (offset of 0 corresponds to starting at index 1)
+ //! By default, there is no offset (offset of 0 corresponds to starting at index 1).
void SetOffsets(AZStd::array offsets)
{
m_offsets = offsets;
diff --git a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp
index 63aad1ecf4..c3f6357706 100644
--- a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp
+++ b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp
@@ -19,7 +19,7 @@ namespace AZ
{
inline namespace PlatformDefaults
{
- static const char* PlatformNames[PlatformId::NumPlatformIds] = { PlatformPC, PlatformES3, PlatformIOS, PlatformOSX, PlatformProvo, PlatformSalem, PlatformJasper, PlatformServer, PlatformAll, PlatformAllClient };
+ static const char* PlatformNames[PlatformId::NumPlatformIds] = { PlatformPC, PlatformAndroid, PlatformIOS, PlatformMac, PlatformProvo, PlatformSalem, PlatformJasper, PlatformServer, PlatformAll, PlatformAllClient };
const char* PlatformIdToPalFolder(AZ::PlatformId platform)
{
@@ -31,11 +31,11 @@ namespace AZ
{
case AZ::PC:
return "PC";
- case AZ::ES3:
+ case AZ::ANDROID_ID:
return "Android";
case AZ::IOS:
return "iOS";
- case AZ::OSX:
+ case AZ::MAC:
return "Mac";
case AZ::PROVO:
return "Provo";
@@ -66,11 +66,11 @@ namespace AZ
}
else if (osPlatform == PlatformCodeNameMac)
{
- return PlatformOSX;
+ return PlatformMac;
}
else if (osPlatform == PlatformCodeNameAndroid)
{
- return PlatformES3;
+ return PlatformAndroid;
}
else if (osPlatform == PlatformCodeNameiOS)
{
@@ -207,13 +207,13 @@ namespace AZ
platformCodes.emplace_back(PlatformCodeNameWindows);
platformCodes.emplace_back(PlatformCodeNameLinux);
break;
- case PlatformId::ES3:
+ case PlatformId::ANDROID_ID:
platformCodes.emplace_back(PlatformCodeNameAndroid);
break;
case PlatformId::IOS:
platformCodes.emplace_back(PlatformCodeNameiOS);
break;
- case PlatformId::OSX:
+ case PlatformId::MAC:
platformCodes.emplace_back(PlatformCodeNameMac);
break;
case PlatformId::PROVO:
diff --git a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h
index 2d67c860cd..93477ebeb9 100644
--- a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h
+++ b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h
@@ -27,9 +27,9 @@ namespace AZ
inline namespace PlatformDefaults
{
constexpr char PlatformPC[] = "pc";
- constexpr char PlatformES3[] = "es3";
+ constexpr char PlatformAndroid[] = "android";
constexpr char PlatformIOS[] = "ios";
- constexpr char PlatformOSX[] = "osx_gl";
+ constexpr char PlatformMac[] = "mac";
constexpr char PlatformProvo[] = "provo";
constexpr char PlatformSalem[] = "salem";
constexpr char PlatformJasper[] = "jasper";
@@ -54,9 +54,9 @@ namespace AZ
AZ_ENUM_WITH_UNDERLYING_TYPE(PlatformId, int,
(Invalid, -1),
PC,
- ES3,
+ ANDROID_ID,
IOS,
- OSX,
+ MAC,
PROVO,
SALEM,
JASPER,
@@ -73,9 +73,9 @@ namespace AZ
{
Platform_NONE = 0x00,
Platform_PC = 1 << PlatformId::PC,
- Platform_ES3 = 1 << PlatformId::ES3,
+ Platform_ANDROID = 1 << PlatformId::ANDROID_ID,
Platform_IOS = 1 << PlatformId::IOS,
- Platform_OSX = 1 << PlatformId::OSX,
+ Platform_MAC = 1 << PlatformId::MAC,
Platform_PROVO = 1 << PlatformId::PROVO,
Platform_SALEM = 1 << PlatformId::SALEM,
Platform_JASPER = 1 << PlatformId::JASPER,
@@ -87,7 +87,7 @@ namespace AZ
// A special platform that will always correspond to all non-server platforms, even if new ones are added
Platform_ALL_CLIENT = 1ULL << 31,
- AllNamedPlatforms = Platform_PC | Platform_ES3 | Platform_IOS | Platform_OSX | Platform_PROVO | Platform_SALEM | Platform_JASPER | Platform_SERVER,
+ AllNamedPlatforms = Platform_PC | Platform_ANDROID | Platform_IOS | Platform_MAC | Platform_PROVO | Platform_SALEM | Platform_JASPER | Platform_SERVER,
};
AZ_DEFINE_ENUM_BITWISE_OPERATORS(PlatformFlags);
diff --git a/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.cpp b/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.cpp
index 0258869a0c..d56140be28 100644
--- a/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.cpp
+++ b/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.cpp
@@ -28,8 +28,8 @@ namespace AZ
return "Android64";
case PlatformID::PLATFORM_APPLE_IOS:
return "iOS";
- case PlatformID::PLATFORM_APPLE_OSX:
- return "OSX";
+ case PlatformID::PLATFORM_APPLE_MAC:
+ return "Mac";
#if defined(AZ_EXPAND_FOR_RESTRICTED_PLATFORM) || defined(AZ_TOOLS_EXPAND_FOR_RESTRICTED_PLATFORMS)
#define AZ_RESTRICTED_PLATFORM_EXPANSION(CodeName, CODENAME, codename, PrivateName, PRIVATENAME, privatename, PublicName, PUBLICNAME, publicname, PublicAuxName1, PublicAuxName2, PublicAuxName3)\
case PlatformID::PLATFORM_##PUBLICNAME:\
diff --git a/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.h b/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.h
index ce1a11d8ce..e8e7cef6dd 100644
--- a/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.h
+++ b/Code/Framework/AzCore/AzCore/PlatformId/PlatformId.h
@@ -23,7 +23,7 @@ namespace AZ
PLATFORM_WINDOWS_64,
PLATFORM_LINUX_64,
PLATFORM_APPLE_IOS,
- PLATFORM_APPLE_OSX,
+ PLATFORM_APPLE_MAC,
PLATFORM_ANDROID_64, // ARMv8 / 64-bit
#if defined(AZ_EXPAND_FOR_RESTRICTED_PLATFORM) || defined(AZ_TOOLS_EXPAND_FOR_RESTRICTED_PLATFORMS)
#define AZ_RESTRICTED_PLATFORM_EXPANSION(CodeName, CODENAME, codename, PrivateName, PRIVATENAME, privatename, PublicName, PUBLICNAME, publicname, PublicAuxName1, PublicAuxName2, PublicAuxName3)\
diff --git a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp
index 015554538f..11d4db2e07 100644
--- a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp
+++ b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp
@@ -937,7 +937,7 @@ void ScriptSystemComponent::Reflect(ReflectContext* reflection)
->Enum(PlatformID::PLATFORM_LINUX_64)>("Linux")
->Enum(PlatformID::PLATFORM_ANDROID_64)>("Android64")
->Enum(PlatformID::PLATFORM_APPLE_IOS)>("iOS")
- ->Enum(PlatformID::PLATFORM_APPLE_OSX)>("OSX")
+ ->Enum(PlatformID::PLATFORM_APPLE_MAC)>("Mac")
#if defined(AZ_EXPAND_FOR_RESTRICTED_PLATFORM) || defined(AZ_TOOLS_EXPAND_FOR_RESTRICTED_PLATFORMS)
#define AZ_RESTRICTED_PLATFORM_EXPANSION(CodeName, CODENAME, codename, PrivateName, PRIVATENAME, privatename, PublicName, PUBLICNAME, publicname, PublicAuxName1, PublicAuxName2, PublicAuxName3)\
->Enum(PlatformID::PLATFORM_##PUBLICNAME)>(#CodeName)
diff --git a/Code/Framework/AzCore/Tests/Math/RandomTests.cpp b/Code/Framework/AzCore/Tests/Math/RandomTests.cpp
index ace7d99704..7fe3acff54 100644
--- a/Code/Framework/AzCore/Tests/Math/RandomTests.cpp
+++ b/Code/Framework/AzCore/Tests/Math/RandomTests.cpp
@@ -24,7 +24,7 @@ namespace UnitTest
EXPECT_FLOAT_EQ(5981.0f / 15625.0f, GetHaltonNumber(4321, 5));
}
- TEST(MATH_Random, HaltonSequence)
+ TEST(MATH_Random, HaltonSequenceStandard)
{
HaltonSequence<3> sequence({ 2, 3, 5 });
auto regularSequence = sequence.GetHaltonSequence<5>();
@@ -48,7 +48,11 @@ namespace UnitTest
EXPECT_FLOAT_EQ(5.0f / 8.0f, regularSequence[4][0]);
EXPECT_FLOAT_EQ(7.0f / 9.0f, regularSequence[4][1]);
EXPECT_FLOAT_EQ(1.0f / 25.0f, regularSequence[4][2]);
-
+ }
+
+ TEST(MATH_Random, HaltonSequenceOffsets)
+ {
+ HaltonSequence<3> sequence({ 2, 3, 5 });
sequence.SetOffsets({ 1, 2, 3 });
auto offsetSequence = sequence.GetHaltonSequence<2>();
@@ -59,10 +63,15 @@ namespace UnitTest
EXPECT_FLOAT_EQ(3.0f / 4.0f, offsetSequence[1][0]);
EXPECT_FLOAT_EQ(4.0f / 9.0f, offsetSequence[1][1]);
EXPECT_FLOAT_EQ(1.0f / 25.0f, offsetSequence[1][2]);
-
+ }
+
+ TEST(MATH_Random, HaltonSequenceIncrements)
+ {
+ HaltonSequence<3> sequence({ 2, 3, 5 });
+ sequence.SetOffsets({ 1, 2, 3 });
sequence.SetIncrements({ 1, 2, 3 });
auto incrementedSequence = sequence.GetHaltonSequence<2>();
-
+
EXPECT_FLOAT_EQ(1.0f / 4.0f, incrementedSequence[0][0]);
EXPECT_FLOAT_EQ(1.0f / 9.0f, incrementedSequence[0][1]);
EXPECT_FLOAT_EQ(4.0f / 5.0f, incrementedSequence[0][2]);
@@ -71,4 +80,35 @@ namespace UnitTest
EXPECT_FLOAT_EQ(7.0f / 9.0f, incrementedSequence[1][1]);
EXPECT_FLOAT_EQ(11.0f / 25.0f, incrementedSequence[1][2]);
}
+
+ TEST(MATH_Random, FillHaltonSequence)
+ {
+ HaltonSequence<3> sequence({ 2, 3, 5 });
+ auto regularSequence = sequence.GetHaltonSequence<5>();
+
+ struct Point
+ {
+ Point() = default;
+ Point(AZStd::array arr)
+ :x(arr[0])
+ ,y(arr[1])
+ ,z(arr[2])
+ {}
+
+ float x = 0.0f;
+ float y = 0.0f;
+ float z = 0.0f;
+ };
+
+ AZStd::array ownedContainer;
+ sequence.FillHaltonSequence(ownedContainer.begin(), ownedContainer.end());
+
+ for (size_t i = 0; i < regularSequence.size(); ++i)
+ {
+ EXPECT_FLOAT_EQ(regularSequence[i][0], ownedContainer[i].x);
+ EXPECT_FLOAT_EQ(regularSequence[i][1], ownedContainer[i].y);
+ EXPECT_FLOAT_EQ(regularSequence[i][2], ownedContainer[i].z);
+ }
+ }
+
}
diff --git a/Code/Framework/AzCore/Tests/SettingsRegistryMergeUtilsTests.cpp b/Code/Framework/AzCore/Tests/SettingsRegistryMergeUtilsTests.cpp
index 36b9757ce3..751d9ded6c 100644
--- a/Code/Framework/AzCore/Tests/SettingsRegistryMergeUtilsTests.cpp
+++ b/Code/Framework/AzCore/Tests/SettingsRegistryMergeUtilsTests.cpp
@@ -372,15 +372,15 @@ mac_remote_filesystem=0
-- We need to know this before we establish VFS because different platform assets
-- are stored in different root folders in the cache. These correspond to the names
-- In the asset processor config file. This value also controls what config file is read
--- when you read system_xxxx_xxxx.cfg (for example, system_windows_pc.cfg or system_android_es3.cfg)
+-- when you read system_xxxx_xxxx.cfg (for example, system_windows_pc.cfg or system_android_android.cfg)
-- by default, pc assets (in the 'pc' folder) are used, with RC being fed 'pc' as the platform
-- by default on console we use the default assets=pc for better iteration times
-- we should turn on console specific assets only when in release and/or testing assets and/or loading performance
-- that way most people will not need to have 3 different caches taking up disk space
assets = pc
-android_assets = es3
+android_assets = android
ios_assets = ios
-mac_assets = osx_gl
+mac_assets = mac
-- Add the IP address of your console to the white list that will connect to the asset processor here
-- You can list addresses or CIDR's. CIDR's are helpful if you are using DHCP. A CIDR looks like an ip address with
@@ -438,9 +438,9 @@ mac_wait_for_connect=0
ConfigFileParams::SettingsKeyValuePair{"/ios_remote_filesystem", AZ::s64{0}},
ConfigFileParams::SettingsKeyValuePair{"/mac_remote_filesystem", AZ::s64{0}},
ConfigFileParams::SettingsKeyValuePair{"/assets", AZStd::string_view{"pc"}},
- ConfigFileParams::SettingsKeyValuePair{"/android_assets", AZStd::string_view{"es3"}},
+ ConfigFileParams::SettingsKeyValuePair{"/android_assets", AZStd::string_view{"android"}},
ConfigFileParams::SettingsKeyValuePair{"/ios_assets", AZStd::string_view{"ios"}},
- ConfigFileParams::SettingsKeyValuePair{"/mac_assets", AZStd::string_view{"osx_gl"}},
+ ConfigFileParams::SettingsKeyValuePair{"/mac_assets", AZStd::string_view{"mac"}},
ConfigFileParams::SettingsKeyValuePair{"/connect_to_remote", AZ::s64{0}},
ConfigFileParams::SettingsKeyValuePair{"/windows_connect_to_remote", AZ::s64{1}},
ConfigFileParams::SettingsKeyValuePair{"/android_connect_to_remote", AZ::s64{0}},
@@ -478,20 +478,20 @@ test_asset_processor_tag = test_value
[Platform pc]
tags=tools,renderer,dx12,vulkan
-[Platform es3]
+[Platform android]
tags=android,mobile,renderer,vulkan ; With Comments at the end
[Platform ios]
tags=mobile,renderer,metal
-[Platform osx_gl]
+[Platform mac]
tags=tools,renderer,metal)"
, AZStd::fixed_vector{
ConfigFileParams::SettingsKeyValuePair{"/test_asset_processor_tag", AZStd::string_view{"test_value"}},
ConfigFileParams::SettingsKeyValuePair{"/Platform pc/tags", AZStd::string_view{"tools,renderer,dx12,vulkan"}},
- ConfigFileParams::SettingsKeyValuePair{"/Platform es3/tags", AZStd::string_view{"android,mobile,renderer,vulkan"}},
+ ConfigFileParams::SettingsKeyValuePair{"/Platform android/tags", AZStd::string_view{"android,mobile,renderer,vulkan"}},
ConfigFileParams::SettingsKeyValuePair{"/Platform ios/tags", AZStd::string_view{"mobile,renderer,metal"}},
- ConfigFileParams::SettingsKeyValuePair{"/Platform osx_gl/tags", AZStd::string_view{"tools,renderer,metal"}},
+ ConfigFileParams::SettingsKeyValuePair{"/Platform mac/tags", AZStd::string_view{"tools,renderer,metal"}},
}}
)
);
diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.cpp b/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.cpp
index 020feffc47..7280c4af5c 100644
--- a/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.cpp
@@ -308,6 +308,56 @@ namespace AzFramework
}
}
+ //---------------------------------------------------------------------
+ GenerateRelativeSourcePathRequest::GenerateRelativeSourcePathRequest(const AZ::OSString& sourcePath)
+ {
+ AZ_Assert(!sourcePath.empty(), "GenerateRelativeSourcePathRequest: asset path is empty");
+ m_sourcePath = sourcePath;
+ }
+
+ unsigned int GenerateRelativeSourcePathRequest::GetMessageType() const
+ {
+ return MessageType;
+ }
+
+ void GenerateRelativeSourcePathRequest::Reflect(AZ::ReflectContext* context)
+ {
+ auto serialize = azrtti_cast(context);
+ if (serialize)
+ {
+ serialize->Class()
+ ->Version(1)
+ ->Field("SourcePath", &GenerateRelativeSourcePathRequest::m_sourcePath);
+ }
+ }
+
+ //---------------------------------------------------------------------
+ GenerateRelativeSourcePathResponse::GenerateRelativeSourcePathResponse(
+ bool resolved, const AZ::OSString& relativeSourcePath, const AZ::OSString& rootFolder)
+ {
+ m_relativeSourcePath = relativeSourcePath;
+ m_resolved = resolved;
+ m_rootFolder = rootFolder;
+ }
+
+ unsigned int GenerateRelativeSourcePathResponse::GetMessageType() const
+ {
+ return GenerateRelativeSourcePathRequest::MessageType;
+ }
+
+ void GenerateRelativeSourcePathResponse::Reflect(AZ::ReflectContext* context)
+ {
+ auto serialize = azrtti_cast(context);
+ if (serialize)
+ {
+ serialize->Class()
+ ->Version(1)
+ ->Field("RelativeSourcePath", &GenerateRelativeSourcePathResponse::m_relativeSourcePath)
+ ->Field("RootFolder", &GenerateRelativeSourcePathResponse::m_rootFolder)
+ ->Field("Resolved", &GenerateRelativeSourcePathResponse::m_resolved);
+ }
+ }
+
//---------------------------------------------------------------------
GetFullSourcePathFromRelativeProductPathRequest::GetFullSourcePathFromRelativeProductPathRequest(const AZ::OSString& relativeProductPath)
{
diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h b/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h
index 9661e61828..c15f75e3e7 100644
--- a/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h
+++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h
@@ -288,6 +288,45 @@ namespace AzFramework
bool m_resolved;
};
+ //////////////////////////////////////////////////////////////////////////
+ class GenerateRelativeSourcePathRequest : public BaseAssetProcessorMessage
+ {
+ public:
+ AZ_CLASS_ALLOCATOR(GenerateRelativeSourcePathRequest, AZ::OSAllocator, 0);
+ AZ_RTTI(GenerateRelativeSourcePathRequest, "{B3865033-F5A3-4749-8147-7B1AB04D5F6D}",
+ BaseAssetProcessorMessage);
+ static void Reflect(AZ::ReflectContext* context);
+
+ // For people that are debugging the network messages and just see MessageType as a value,
+ // the CRC value below is 739777771 (0x2C181CEB)
+ static constexpr unsigned int MessageType =
+ AZ_CRC_CE("AssetSystem::GenerateRelativeSourcePathRequest");
+
+ GenerateRelativeSourcePathRequest() = default;
+ GenerateRelativeSourcePathRequest(const AZ::OSString& sourcePath);
+ unsigned int GetMessageType() const override;
+
+ AZ::OSString m_sourcePath;
+ };
+
+ class GenerateRelativeSourcePathResponse : public BaseAssetProcessorMessage
+ {
+ public:
+ AZ_CLASS_ALLOCATOR(GenerateRelativeSourcePathResponse, AZ::OSAllocator, 0);
+ AZ_RTTI(GenerateRelativeSourcePathResponse, "{938D33DB-C8F6-4FA4-BC81-2F139A9BE1D7}",
+ BaseAssetProcessorMessage);
+ static void Reflect(AZ::ReflectContext* context);
+
+ GenerateRelativeSourcePathResponse() = default;
+ GenerateRelativeSourcePathResponse(
+ bool resolved, const AZ::OSString& relativeSourcePath, const AZ::OSString& rootFolder);
+ unsigned int GetMessageType() const override;
+
+ AZ::OSString m_relativeSourcePath;
+ AZ::OSString m_rootFolder; ///< This is the folder it was found in (the watched/scanned folder, such as gems /assets/ folder)
+ bool m_resolved;
+ };
+
//////////////////////////////////////////////////////////////////////////
class GetFullSourcePathFromRelativeProductPathRequest
: public BaseAssetProcessorMessage
diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetSystemComponent.cpp b/Code/Framework/AzFramework/AzFramework/Asset/AssetSystemComponent.cpp
index 83c4907468..6b19084c2a 100644
--- a/Code/Framework/AzFramework/AzFramework/Asset/AssetSystemComponent.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetSystemComponent.cpp
@@ -202,6 +202,7 @@ namespace AzFramework
// Requests
GetUnresolvedDependencyCountsRequest::Reflect(context);
GetRelativeProductPathFromFullSourceOrProductPathRequest::Reflect(context);
+ GenerateRelativeSourcePathRequest::Reflect(context);
GetFullSourcePathFromRelativeProductPathRequest::Reflect(context);
SourceAssetInfoRequest::Reflect(context);
AssetInfoRequest::Reflect(context);
@@ -234,6 +235,7 @@ namespace AzFramework
// Responses
GetUnresolvedDependencyCountsResponse::Reflect(context);
GetRelativeProductPathFromFullSourceOrProductPathResponse::Reflect(context);
+ GenerateRelativeSourcePathResponse::Reflect(context);
GetFullSourcePathFromRelativeProductPathResponse::Reflect(context);
SourceAssetInfoResponse::Reflect(context);
AssetInfoResponse::Reflect(context);
diff --git a/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.h b/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.h
index 682e886061..ee8b79bf06 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.h
+++ b/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.h
@@ -1,22 +1,22 @@
/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
#pragma once
#include
#include
-#include
#include
#include
+#include
namespace AzFramework
{
@@ -64,15 +64,13 @@ namespace AzFramework
the EditContext. TController can friend itself to the editor component to make this work if required.
*/
template
- class ComponentAdapter
- : public AZ::Component
+ class ComponentAdapter : public AZ::Component
{
public:
-
AZ_RTTI((ComponentAdapter, "{644A9187-4FDB-42C1-9D59-DD75304B551A}", TController, TConfiguration), AZ::Component);
ComponentAdapter() = default;
- ComponentAdapter(const TConfiguration& configuration);
+ explicit ComponentAdapter(const TConfiguration& configuration);
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& services);
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& services);
@@ -85,7 +83,6 @@ namespace AzFramework
void Deactivate() override;
protected:
-
static void Reflect(AZ::ReflectContext* context);
// AZ::Component overrides ...
diff --git a/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.inl b/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.inl
index a1b0826193..5c36ff0bf7 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.inl
+++ b/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapter.inl
@@ -1,14 +1,14 @@
/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
#include
@@ -32,10 +32,12 @@ namespace AzFramework
if (auto serializeContext = azrtti_cast(context))
{
+ // clang-format off
serializeContext->Class()
->Version(1)
->Field("Controller", &ComponentAdapter::m_controller)
;
+ // clang-format on
}
}
@@ -66,9 +68,6 @@ namespace AzFramework
GetDependentServicesHelper(services, typename AZ::HasComponentDependentServices::type());
}
- //////////////////////////////////////////////////////////////////////////
- // AZ::Component interface implementation
-
template
void ComponentAdapter::Init()
{
@@ -78,7 +77,7 @@ namespace AzFramework
template
void ComponentAdapter::Activate()
{
- m_controller.Activate(GetEntityId());
+ ComponentActivateHelper::Activate(m_controller, AZ::EntityComponentIdPair(GetEntityId(), GetId()));
}
template
diff --git a/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapterHelpers.h b/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapterHelpers.h
index 158ee95f39..f0ef262a71 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapterHelpers.h
+++ b/Code/Framework/AzFramework/AzFramework/Components/ComponentAdapterHelpers.h
@@ -13,6 +13,7 @@
#pragma once
#include
+#include
namespace AzFramework
{
@@ -27,18 +28,43 @@ namespace AzFramework
template
struct ComponentInitHelper
{
- static void Init(T& common)
+ static void Init([[maybe_unused]] T& controller)
{
- AZ_UNUSED(common);
}
};
template
struct ComponentInitHelper().Init())>>
{
- static void Init(T& common)
+ static void Init(T& controller)
{
- common.Init();
+ controller.Init();
+ }
+ };
+
+ template
+ struct ComponentActivateHelper
+ {
+ static void Activate([[maybe_unused]] T& controller, [[maybe_unused]] const AZ::EntityComponentIdPair& entityComponentIdPair)
+ {
+ }
+ };
+
+ template
+ struct ComponentActivateHelper().Activate(AZ::EntityId()))>>
+ {
+ static void Activate(T& controller, const AZ::EntityComponentIdPair& entityComponentIdPair)
+ {
+ controller.Activate(entityComponentIdPair.GetEntityId());
+ }
+ };
+
+ template
+ struct ComponentActivateHelper().Activate(AZ::EntityComponentIdPair()))>>
+ {
+ static void Activate(T& controller, const AZ::EntityComponentIdPair& entityComponentIdPair)
+ {
+ controller.Activate(entityComponentIdPair);
}
};
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
index 3dafc7c717..49adab2252 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp
@@ -327,99 +327,13 @@ namespace AzFramework
return localZ;
}
- void TransformComponent::SetRotation(const AZ::Vector3& eulerAnglesRadian)
+ void TransformComponent::SetWorldRotationQuaternion(const AZ::Quaternion& quaternion)
{
- AZ_Warning("TransformComponent", false, "SetRotation is deprecated, please use SetLocalRotation");
-
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetRotation(AZ::ConvertEulerRadiansToQuaternion(eulerAnglesRadian));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetRotationQuaternion(const AZ::Quaternion& quaternion)
- {
- AZ_Warning("TransformComponent", false, "SetRotationQuaternion is deprecated, please use SetLocalRotationQuaternion");
-
AZ::Transform newWorldTransform = m_worldTM;
newWorldTransform.SetRotation(quaternion);
SetWorldTM(newWorldTransform);
}
- void TransformComponent::SetRotationX(float eulerAngleRadian)
- {
- AZ_Warning("TransformComponent", false, "SetRotationX is deprecated, please use SetLocalRotation");
-
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetRotation(AZ::Quaternion::CreateRotationX(eulerAngleRadian));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetRotationY(float eulerAngleRadian)
- {
- AZ_Warning("TransformComponent", false, "SetRotationY is deprecated, please use SetLocalRotation");
-
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetRotation(AZ::Quaternion::CreateRotationY(eulerAngleRadian));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetRotationZ(float eulerAngleRadian)
- {
- AZ_Warning("TransformComponent", false, "SetRotationZ is deprecated, please use SetLocalRotation");
-
- AZ::Transform newWorldTransform = m_worldTM;
- newWorldTransform.SetRotation(AZ::Quaternion::CreateRotationZ(eulerAngleRadian));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::RotateByX(float eulerAngleRadian)
- {
- AZ_Warning("TransformComponent", false, "RotateByX is deprecated, please use RotateAroundLocalX");
- RotateAroundLocalX(eulerAngleRadian);
- }
-
- void TransformComponent::RotateByY(float eulerAngleRadian)
- {
- AZ_Warning("TransformComponent", false, "RotateByY is deprecated, please use RotateAroundLocalY");
- RotateAroundLocalY(eulerAngleRadian);
- }
-
- void TransformComponent::RotateByZ(float eulerAngleRadian)
- {
- AZ_Warning("TransformComponent", false, "RotateByZ is deprecated, please use RotateAroundLocalZ");
- RotateAroundLocalZ(eulerAngleRadian);
- }
-
- AZ::Vector3 TransformComponent::GetRotationEulerRadians()
- {
- AZ_Warning("TransformComponent", false, "GetRotationEulerRadians is deprecated, please use GetWorldRotation");
- return m_worldTM.GetRotation().GetEulerRadians();
- }
-
- AZ::Quaternion TransformComponent::GetRotationQuaternion()
- {
- AZ_Warning("TransformComponent", false, "GetRotationQuaternion is deprecated, please use GetWorldRotationQuaternion");
- return m_worldTM.GetRotation();
- }
-
- float TransformComponent::GetRotationX()
- {
- AZ_Warning("TransformComponent", false, "GetRotationX is deprecated, please use GetWorldRotation");
- return GetRotationEulerRadians().GetX();
- }
-
- float TransformComponent::GetRotationY()
- {
- AZ_Warning("TransformComponent", false, "GetRotationY is deprecated, please use GetWorldRotation");
- return GetRotationEulerRadians().GetY();
- }
-
- float TransformComponent::GetRotationZ()
- {
- AZ_Warning("TransformComponent", false, "GetRotationZ is deprecated, please use GetWorldRotation");
- return GetRotationEulerRadians().GetZ();
- }
-
AZ::Vector3 TransformComponent::GetWorldRotation()
{
return m_worldTM.GetRotation().GetEulerRadians();
@@ -830,45 +744,7 @@ namespace AzFramework
->Event("GetLocalX", &AZ::TransformBus::Events::GetLocalX)
->Event("GetLocalY", &AZ::TransformBus::Events::GetLocalY)
->Event("GetLocalZ", &AZ::TransformBus::Events::GetLocalZ)
- ->Event("RotateByX", &AZ::TransformBus::Events::RotateByX)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("RotateByY", &AZ::TransformBus::Events::RotateByY)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("RotateByZ", &AZ::TransformBus::Events::RotateByZ)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetEulerRotation", &AZ::TransformBus::Events::SetRotation)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetRotationQuaternion", &AZ::TransformBus::Events::SetRotationQuaternion)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetRotationX", &AZ::TransformBus::Events::SetRotationX)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetRotationY", &AZ::TransformBus::Events::SetRotationY)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("SetRotationZ", &AZ::TransformBus::Events::SetRotationZ)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetEulerRotation", &AZ::TransformBus::Events::GetRotationEulerRadians)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetRotationQuaternion", &AZ::TransformBus::Events::GetRotationQuaternion)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetRotationX", &AZ::TransformBus::Events::GetRotationX)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetRotationY", &AZ::TransformBus::Events::GetRotationY)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
- ->Event("GetRotationZ", &AZ::TransformBus::Events::GetRotationZ)
- ->Attribute(AZ::Script::Attributes::Deprecated, true)
- ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
+ ->Event("SetWorldRotationQuaternion", &AZ::TransformBus::Events::SetWorldRotationQuaternion)
->Event("GetWorldRotation", &AZ::TransformBus::Events::GetWorldRotation)
->Event("GetWorldRotationQuaternion", &AZ::TransformBus::Events::GetWorldRotationQuaternion)
->Event("SetLocalRotation", &AZ::TransformBus::Events::SetLocalRotation)
diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
index e3a647d39f..9009c6bff9 100644
--- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
+++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.h
@@ -112,22 +112,7 @@ namespace AzFramework
float GetLocalZ() override;
// Rotation modifiers
- void SetRotation(const AZ::Vector3& eulerAnglesRadian) override;
- void SetRotationQuaternion(const AZ::Quaternion& quaternion) override;
- void SetRotationX(float eulerAngleRadian) override;
- void SetRotationY(float eulerAngleRadian) override;
- void SetRotationZ(float eulerAngleRadian) override;
-
- void RotateByX(float eulerAngleRadian) override;
- void RotateByY(float eulerAngleRadian) override;
- void RotateByZ(float eulerAngleRadian) override;
-
- AZ::Vector3 GetRotationEulerRadians() override;
- AZ::Quaternion GetRotationQuaternion() override;
-
- float GetRotationX() override;
- float GetRotationY() override;
- float GetRotationZ() override;
+ void SetWorldRotationQuaternion(const AZ::Quaternion& quaternion) override;
AZ::Vector3 GetWorldRotation() override;
AZ::Quaternion GetWorldRotationQuaternion() override;
diff --git a/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h b/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h
index b64b61e22c..04a0572bb9 100644
--- a/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h
+++ b/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include
#include
@@ -42,11 +43,15 @@ namespace AzFramework
{
ViewportId m_drawViewportId = InvalidViewportId; //!< Viewport to draw into
AZ::Vector3 m_position; //!< world space position for 3d draws, screen space x,y,depth for 2d.
- AZ::Color m_color = AZ::Colors::White; //!< Color to draw the text
+ AZ::Color m_color = AZ::Colors::White; //!< Color to draw the text
+ unsigned int m_effectIndex = 0; //!< effect index to apply
AZ::Vector2 m_scale = AZ::Vector2(1.0f); //!< font scale
- float m_lineSpacing; //!< Spacing between new lines, as a percentage of m_scale.
+ float m_textSizeFactor = 12.0f; //!< font size in pixels
+ float m_lineSpacing = 1.0f; //!< Spacing between new lines, as a percentage of m_scale.
TextHorizontalAlignment m_hAlign = TextHorizontalAlignment::Left; //!< Horizontal text alignment
TextVerticalAlignment m_vAlign = TextVerticalAlignment::Top; //!< Vertical text alignment
+ bool m_useTransform = false; //!< Use specified transform
+ AZ::Matrix3x4 m_transform = AZ::Matrix3x4::Identity(); //!< Transform to apply to text quads
bool m_monospace = false; //!< disable character proportional spacing
bool m_depthTest = false; //!< Test character against the depth buffer
bool m_virtual800x600ScreenSize = true; //!< Text placement and size are scaled relative to a virtual 800x600 resolution
diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/Spawnable.h b/Code/Framework/AzFramework/AzFramework/Spawnable/Spawnable.h
index 5e507b3498..79cea647e4 100644
--- a/Code/Framework/AzFramework/AzFramework/Spawnable/Spawnable.h
+++ b/Code/Framework/AzFramework/AzFramework/Spawnable/Spawnable.h
@@ -19,10 +19,13 @@
#include
#include
-namespace AzFramework
+namespace AZ
{
class ReflectContext;
+}
+namespace AzFramework
+{
class Spawnable final
: public AZ::Data::AssetData
{
diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.cpp b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.cpp
index a528797f63..97169ebeb3 100644
--- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.cpp
@@ -14,6 +14,10 @@
namespace AzFramework
{
+ //
+ // SpawnableEntityContainerView
+ //
+
SpawnableEntityContainerView::SpawnableEntityContainerView(AZ::Entity** begin, size_t length)
: m_begin(begin)
, m_end(begin + length)
@@ -52,6 +56,9 @@ namespace AzFramework
}
+ //
+ // SpawnableConstEntityContainerView
+ //
SpawnableConstEntityContainerView::SpawnableConstEntityContainerView(AZ::Entity** begin, size_t length)
: m_begin(begin)
@@ -91,6 +98,136 @@ namespace AzFramework
}
+ //
+ // SpawnableIndexEntityPair
+ //
+
+ SpawnableIndexEntityPair::SpawnableIndexEntityPair(AZ::Entity** entityIterator, size_t* indexIterator)
+ : m_entity(entityIterator)
+ , m_index(indexIterator)
+ {
+ }
+
+ AZ::Entity* SpawnableIndexEntityPair::GetEntity()
+ {
+ return *m_entity;
+ }
+
+ const AZ::Entity* SpawnableIndexEntityPair::GetEntity() const
+ {
+ return *m_entity;
+ }
+
+ size_t SpawnableIndexEntityPair::GetIndex() const
+ {
+ return *m_index;
+ }
+
+ //
+ // SpawnableIndexEntityIterator
+ //
+
+ SpawnableIndexEntityIterator::SpawnableIndexEntityIterator(AZ::Entity** entityIterator, size_t* indexIterator)
+ : m_value(entityIterator, indexIterator)
+ {
+ }
+
+ SpawnableIndexEntityIterator& SpawnableIndexEntityIterator::operator++()
+ {
+ ++m_value.m_entity;
+ ++m_value.m_index;
+ return *this;
+ }
+
+ SpawnableIndexEntityIterator SpawnableIndexEntityIterator::operator++(int)
+ {
+ SpawnableIndexEntityIterator result = *this;
+ ++m_value.m_entity;
+ ++m_value.m_index;
+ return result;
+ }
+
+ SpawnableIndexEntityIterator& SpawnableIndexEntityIterator::operator--()
+ {
+ --m_value.m_entity;
+ --m_value.m_index;
+ return *this;
+ }
+
+ SpawnableIndexEntityIterator SpawnableIndexEntityIterator::operator--(int)
+ {
+ SpawnableIndexEntityIterator result = *this;
+ --m_value.m_entity;
+ --m_value.m_index;
+ return result;
+ }
+
+ bool SpawnableIndexEntityIterator::operator==(const SpawnableIndexEntityIterator& rhs)
+ {
+ return m_value.m_entity == rhs.m_value.m_entity && m_value.m_index == rhs.m_value.m_index;
+ }
+
+ bool SpawnableIndexEntityIterator::operator!=(const SpawnableIndexEntityIterator& rhs)
+ {
+ return m_value.m_entity != rhs.m_value.m_entity || m_value.m_index != rhs.m_value.m_index;
+ }
+
+ SpawnableIndexEntityPair& SpawnableIndexEntityIterator::operator*()
+ {
+ return m_value;
+ }
+
+ const SpawnableIndexEntityPair& SpawnableIndexEntityIterator::operator*() const
+ {
+ return m_value;
+ }
+
+ SpawnableIndexEntityPair* SpawnableIndexEntityIterator::operator->()
+ {
+ return &m_value;
+ }
+
+ const SpawnableIndexEntityPair* SpawnableIndexEntityIterator::operator->() const
+ {
+ return &m_value;
+ }
+
+
+ //
+ // SpawnableConstIndexEntityContainerView
+ //
+
+ SpawnableConstIndexEntityContainerView::SpawnableConstIndexEntityContainerView(
+ AZ::Entity** beginEntity, size_t* beginIndices, size_t length)
+ : m_begin(beginEntity, beginIndices)
+ , m_end(beginEntity + length, beginIndices + length)
+ {
+ }
+
+ const SpawnableIndexEntityIterator& SpawnableConstIndexEntityContainerView::begin()
+ {
+ return m_begin;
+ }
+
+ const SpawnableIndexEntityIterator& SpawnableConstIndexEntityContainerView::end()
+ {
+ return m_end;
+ }
+
+ const SpawnableIndexEntityIterator& SpawnableConstIndexEntityContainerView::cbegin()
+ {
+ return m_begin;
+ }
+
+ const SpawnableIndexEntityIterator& SpawnableConstIndexEntityContainerView::cend()
+ {
+ return m_end;
+ }
+
+
+ //
+ // EntitySpawnTicket
+ //
EntitySpawnTicket::EntitySpawnTicket(EntitySpawnTicket&& rhs)
: m_payload(rhs.m_payload)
diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h
index ac66288ff2..69bca8e111 100644
--- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h
+++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h
@@ -58,6 +58,72 @@ namespace AzFramework
AZ::Entity** m_end;
};
+ class SpawnableIndexEntityPair
+ {
+ public:
+ friend class SpawnableIndexEntityIterator;
+
+ AZ::Entity* GetEntity();
+ const AZ::Entity* GetEntity() const;
+ size_t GetIndex() const;
+
+ private:
+ SpawnableIndexEntityPair() = default;
+ SpawnableIndexEntityPair(const SpawnableIndexEntityPair&) = default;
+ SpawnableIndexEntityPair(SpawnableIndexEntityPair&&) = default;
+ SpawnableIndexEntityPair(AZ::Entity** entityIterator, size_t* indexIterator);
+
+ SpawnableIndexEntityPair& operator=(const SpawnableIndexEntityPair&) = default;
+ SpawnableIndexEntityPair& operator=(SpawnableIndexEntityPair&&) = default;
+
+ AZ::Entity** m_entity { nullptr };
+ size_t* m_index { nullptr };
+ };
+
+ class SpawnableIndexEntityIterator
+ {
+ public:
+ // Limited to bidirectional iterator as there's no use case for extending it further, but can be extended if a use case is found.
+ using iterator_category = AZStd::bidirectional_iterator_tag;
+ using value_type = SpawnableIndexEntityPair;
+ using difference_type = size_t;
+ using pointer = SpawnableIndexEntityPair*;
+ using reference = SpawnableIndexEntityPair&;
+
+ SpawnableIndexEntityIterator(AZ::Entity** entityIterator, size_t* indexIterator);
+
+ SpawnableIndexEntityIterator& operator++();
+ SpawnableIndexEntityIterator operator++(int);
+ SpawnableIndexEntityIterator& operator--();
+ SpawnableIndexEntityIterator operator--(int);
+
+ bool operator==(const SpawnableIndexEntityIterator& rhs);
+ bool operator!=(const SpawnableIndexEntityIterator& rhs);
+
+ SpawnableIndexEntityPair& operator*();
+ const SpawnableIndexEntityPair& operator*() const;
+ SpawnableIndexEntityPair* operator->();
+ const SpawnableIndexEntityPair* operator->() const;
+
+ private:
+ SpawnableIndexEntityPair m_value;
+ };
+
+ class SpawnableConstIndexEntityContainerView
+ {
+ public:
+ SpawnableConstIndexEntityContainerView(AZ::Entity** beginEntity, size_t* beginIndices, size_t length);
+
+ const SpawnableIndexEntityIterator& begin();
+ const SpawnableIndexEntityIterator& end();
+ const SpawnableIndexEntityIterator& cbegin();
+ const SpawnableIndexEntityIterator& cend();
+
+ private:
+ SpawnableIndexEntityIterator m_begin;
+ SpawnableIndexEntityIterator m_end;
+ };
+
//! Requests to the SpawnableEntitiesInterface require a ticket with a valid spawnable that be used as a template. A ticket can
//! be reused for multiple calls on the same spawnable and is safe to use by multiple threads at the same time. Entities created
//! from the spawnable may be tracked by the ticket and so using the same ticket is needed to despawn the exact entities created
@@ -88,6 +154,7 @@ namespace AzFramework
using EntityDespawnCallback = AZStd::function;
using ReloadSpawnableCallback = AZStd::function;
using ListEntitiesCallback = AZStd::function;
+ using ListIndicesEntitiesCallback = AZStd::function;
using ClaimEntitiesCallback = AZStd::function;
using BarrierCallback = AZStd::function;
@@ -140,6 +207,15 @@ namespace AzFramework
//! @param ticket Only the entities associated with this ticket will be listed.
//! @param listCallback Required callback that will be called to list the entities on.
virtual void ListEntities(EntitySpawnTicket& ticket, ListEntitiesCallback listCallback) = 0;
+ //! List all entities that are spawned using this ticket with their spawnable index.
+ //! Spawnables contain a flat list of entities, which are used as templates to spawn entities from. For every spawned entity
+ //! the index of the entity in the spawnable that was used as a template is stored. This version of ListEntities will return
+ //! both the entities and this index. The index can be used with SpawnEntities to create the same entities again. Note that
+ //! the same index may appear multiple times as there are no restriction on how many instance of a specific entity can be
+ //! created.
+ //! @param ticket Only the entities associated with this ticket will be listed.
+ //! @param listCallback Required callback that will be called to list the entities and indices on.
+ virtual void ListIndicesAndEntities(EntitySpawnTicket& ticket, ListIndicesEntitiesCallback listCallback) = 0;
//! Claim all entities that are spawned using this ticket. Ownership of the entities is transferred from the ticket to the
//! caller through the callback. After this call the ticket will have no entities associated with it. The caller of
//! this function will need to manage the entities after this call.
diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp
index 8045766686..7e20f7b265 100644
--- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp
+++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp
@@ -25,6 +25,8 @@ namespace AzFramework
void SpawnableEntitiesManager::SpawnAllEntities(EntitySpawnTicket& ticket, EntityPreInsertionCallback preInsertionCallback,
EntitySpawnCallback completionCallback)
{
+ AZ_Assert(ticket.IsValid(), "Ticket provided to SpawnAllEntities hasn't been initialized.");
+
SpawnAllEntitiesCommand queueEntry;
queueEntry.m_ticket = &ticket;
queueEntry.m_completionCallback = AZStd::move(completionCallback);
@@ -40,6 +42,8 @@ namespace AzFramework
EntitySpawnTicket& ticket, AZStd::vector entityIndices,
EntityPreInsertionCallback preInsertionCallback, EntitySpawnCallback completionCallback)
{
+ AZ_Assert(ticket.IsValid(), "Ticket provided to SpawnEntities hasn't been initialized.");
+
SpawnEntitiesCommand queueEntry;
queueEntry.m_ticket = &ticket;
queueEntry.m_entityIndices = AZStd::move(entityIndices);
@@ -54,6 +58,8 @@ namespace AzFramework
void SpawnableEntitiesManager::DespawnAllEntities(EntitySpawnTicket& ticket, EntityDespawnCallback completionCallback)
{
+ AZ_Assert(ticket.IsValid(), "Ticket provided to DespawnAllEntities hasn't been initialized.");
+
DespawnAllEntitiesCommand queueEntry;
queueEntry.m_ticket = &ticket;
queueEntry.m_completionCallback = AZStd::move(completionCallback);
@@ -67,6 +73,8 @@ namespace AzFramework
void SpawnableEntitiesManager::ReloadSpawnable(EntitySpawnTicket& ticket, AZ::Data::Asset spawnable,
ReloadSpawnableCallback completionCallback)
{
+ AZ_Assert(ticket.IsValid(), "Ticket provided to ReloadSpawnable hasn't been initialized.");
+
ReloadSpawnableCommand queueEntry;
queueEntry.m_ticket = &ticket;
queueEntry.m_spawnable = AZStd::move(spawnable);
@@ -81,6 +89,7 @@ namespace AzFramework
void SpawnableEntitiesManager::ListEntities(EntitySpawnTicket& ticket, ListEntitiesCallback listCallback)
{
AZ_Assert(listCallback, "ListEntities called on spawnable entities without a valid callback to use.");
+ AZ_Assert(ticket.IsValid(), "Ticket provided to ListEntities hasn't been initialized.");
ListEntitiesCommand queueEntry;
queueEntry.m_ticket = &ticket;
@@ -92,9 +101,25 @@ namespace AzFramework
}
}
+ void SpawnableEntitiesManager::ListIndicesAndEntities(EntitySpawnTicket& ticket, ListIndicesEntitiesCallback listCallback)
+ {
+ AZ_Assert(listCallback, "ListEntities called on spawnable entities without a valid callback to use.");
+ AZ_Assert(ticket.IsValid(), "Ticket provided to ListEntities hasn't been initialized.");
+
+ ListIndicesEntitiesCommand queueEntry;
+ queueEntry.m_ticket = &ticket;
+ queueEntry.m_listCallback = AZStd::move(listCallback);
+ {
+ AZStd::scoped_lock queueLock(m_pendingRequestQueueMutex);
+ queueEntry.m_ticketId = GetTicketPayload(ticket).m_nextTicketId++;
+ m_pendingRequestQueue.push(AZStd::move(queueEntry));
+ }
+ }
+
void SpawnableEntitiesManager::ClaimEntities(EntitySpawnTicket& ticket, ClaimEntitiesCallback listCallback)
{
AZ_Assert(listCallback, "ClaimEntities called on spawnable entities without a valid callback to use.");
+ AZ_Assert(ticket.IsValid(), "Ticket provided to ClaimEntities hasn't been initialized.");
ClaimEntitiesCommand queueEntry;
queueEntry.m_ticket = &ticket;
@@ -109,6 +134,7 @@ namespace AzFramework
void SpawnableEntitiesManager::Barrier(EntitySpawnTicket& ticket, BarrierCallback completionCallback)
{
AZ_Assert(completionCallback, "Barrier on spawnable entities called without a valid callback to use.");
+ AZ_Assert(ticket.IsValid(), "Ticket provided to Barrier hasn't been initialized.");
BarrierCommand queueEntry;
queueEntry.m_ticket = &ticket;
@@ -499,6 +525,27 @@ namespace AzFramework
}
}
+ bool SpawnableEntitiesManager::ProcessRequest(ListIndicesEntitiesCommand& request, [[maybe_unused]] AZ::SerializeContext& serializeContext)
+ {
+ Ticket& ticket = GetTicketPayload(*request.m_ticket);
+ if (request.m_ticketId == ticket.m_currentTicketId)
+ {
+ AZ_Assert(
+ ticket.m_spawnedEntities.size() == ticket.m_spawnedEntityIndices.size(),
+ "Entities and indices on spawnable ticket have gone out of sync.");
+ request.m_listCallback(
+ *request.m_ticket,
+ SpawnableConstIndexEntityContainerView(
+ ticket.m_spawnedEntities.begin(), ticket.m_spawnedEntityIndices.begin(), ticket.m_spawnedEntities.size()));
+ ticket.m_currentTicketId++;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
bool SpawnableEntitiesManager::ProcessRequest(ClaimEntitiesCommand& request, [[maybe_unused]] AZ::SerializeContext& serializeContext)
{
Ticket& ticket = GetTicketPayload(*request.m_ticket);
diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h
index e20f58ac76..3481ab180a 100644
--- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h
+++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h
@@ -36,6 +36,7 @@ namespace AzFramework
{
public:
AZ_RTTI(AzFramework::SpawnableEntitiesManager, "{6E14333F-128C-464C-94CA-A63B05A5E51C}");
+ AZ_CLASS_ALLOCATOR(SpawnableEntitiesManager, AZ::SystemAllocator, 0);
enum class CommandQueueStatus : bool
{
@@ -58,6 +59,7 @@ namespace AzFramework
ReloadSpawnableCallback completionCallback = {}) override;
void ListEntities(EntitySpawnTicket& ticket, ListEntitiesCallback listCallback) override;
+ void ListIndicesAndEntities(EntitySpawnTicket& ticket, ListIndicesEntitiesCallback listCallback) override;
void ClaimEntities(EntitySpawnTicket& ticket, ClaimEntitiesCallback listCallback) override;
void Barrier(EntitySpawnTicket& spawnInfo, BarrierCallback completionCallback) override;
@@ -123,6 +125,12 @@ namespace AzFramework
EntitySpawnTicket* m_ticket;
uint32_t m_ticketId;
};
+ struct ListIndicesEntitiesCommand
+ {
+ ListIndicesEntitiesCallback m_listCallback;
+ EntitySpawnTicket* m_ticket;
+ uint32_t m_ticketId;
+ };
struct ClaimEntitiesCommand
{
ClaimEntitiesCallback m_listCallback;
@@ -141,8 +149,9 @@ namespace AzFramework
uint32_t m_ticketId;
};
- using Requests = AZStd::variant;
+ using Requests = AZStd::variant<
+ SpawnAllEntitiesCommand, SpawnEntitiesCommand, DespawnAllEntitiesCommand, ReloadSpawnableCommand, ListEntitiesCommand,
+ ListIndicesEntitiesCommand, ClaimEntitiesCommand, BarrierCommand, DestroyTicketCommand>;
AZ::Entity* SpawnSingleEntity(const AZ::Entity& entityTemplate,
AZ::SerializeContext& serializeContext);
@@ -155,6 +164,7 @@ namespace AzFramework
bool ProcessRequest(DespawnAllEntitiesCommand& request, AZ::SerializeContext& serializeContext);
bool ProcessRequest(ReloadSpawnableCommand& request, AZ::SerializeContext& serializeContext);
bool ProcessRequest(ListEntitiesCommand& request, AZ::SerializeContext& serializeContext);
+ bool ProcessRequest(ListIndicesEntitiesCommand& request, AZ::SerializeContext& serializeContext);
bool ProcessRequest(ClaimEntitiesCommand& request, AZ::SerializeContext& serializeContext);
bool ProcessRequest(BarrierCommand& request, AZ::SerializeContext& serializeContext);
bool ProcessRequest(DestroyTicketCommand& request, AZ::SerializeContext& serializeContext);
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h
index 98e4c6b5eb..715de30bfa 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h
@@ -60,10 +60,20 @@ namespace AzToolsFramework
//! and is generally checked into source control.
virtual const char* GetAbsoluteDevRootFolderPath() = 0;
- /// Convert a full source path like "c:\\dev\gamename\\blah\\test.tga" into a relative product path.
+ /// Convert a full source path like "c:\\dev\\gamename\\blah\\test.tga" into a relative product path.
/// asset paths never mention their alias and are relative to the asset cache root
virtual bool GetRelativeProductPathFromFullSourceOrProductPath(const AZStd::string& fullPath, AZStd::string& relativeProductPath) = 0;
+ /** Convert a source path like "c:\\dev\\gamename\\blah\\test.tga" into a relative source path, like "blah/test.tga".
+ * If no valid relative path could be created, the input source path will be returned in relativePath.
+ * @param sourcePath partial or full path to a source file. (The file doesn't need to exist)
+ * @param relativePath the output relative path for the source file, if a valid one could be created
+ * @param rootFilePath the root path that relativePath is relative to
+ * @return true if a valid relative path was created, false if it wasn't
+ */
+ virtual bool GenerateRelativeSourcePath(
+ const AZStd::string& sourcePath, AZStd::string& relativePath, AZStd::string& rootFilePath) = 0;
+
/// Convert a relative asset path like "blah/test.tga" to a full source path path.
/// Once the asset processor has finished building, this function is capable of handling even when the extension changes
/// or when the source is in a different folder or in a different location (such as inside gems)
@@ -110,14 +120,14 @@ namespace AzToolsFramework
/**
* Query to see if a specific asset platform is enabled
- * @param platform the asset platform to check e.g. es3, ios, etc.
+ * @param platform the asset platform to check e.g. android, ios, etc.
* @return true if enabled, false otherwise
*/
virtual bool IsAssetPlatformEnabled(const char* platform) = 0;
/**
* Get the total number of pending assets left to process for a specific asset platform
- * @param platform the asset platform to check e.g. es3, ios, etc.
+ * @param platform the asset platform to check e.g. android, ios, etc.
* @return -1 if the process fails, a positive number otherwise
*/
virtual int GetPendingAssetsForPlatform(const char* platform) = 0;
@@ -302,7 +312,7 @@ namespace AzToolsFramework
inline const char* GetHostAssetPlatform()
{
#if defined(AZ_PLATFORM_MAC)
- return "osx_gl";
+ return "mac";
#elif defined(AZ_PLATFORM_WINDOWS)
return "pc";
#elif defined(AZ_PLATFORM_LINUX)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorViewportIconDisplayInterface.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorViewportIconDisplayInterface.h
new file mode 100644
index 0000000000..a2264b5058
--- /dev/null
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorViewportIconDisplayInterface.h
@@ -0,0 +1,80 @@
+/*
+* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+* its licensors.
+*
+* For complete copyright and license terms please see the LICENSE at the root of this
+* distribution (the "License"). All use of this software is governed by the License,
+* or, if provided, by the license below or the license accompanying this file. Do not
+* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*
+*/
+#pragma once
+
+#include
+#include
+#include
+
+#include
+
+namespace AzToolsFramework
+{
+ //! An interface for loading simple icon assets and rendering them to screen on a per-viewport basis.
+ class EditorViewportIconDisplayInterface
+ {
+ public:
+ AZ_RTTI(EditorViewportIconDisplayInterface, "{D5190B58-2561-4F3F-B793-F1E7D454CDF2}");
+
+ using IconId = AZ::s32;
+ static constexpr IconId InvalidIconId = -1;
+
+ enum class CoordinateSpace : AZ::u8
+ {
+ ScreenSpace,
+ WorldSpace
+ };
+
+ //! These draw parameters control rendering for a single icon to a single viewport.
+ struct DrawParameters
+ {
+ //! The ViewportId to render to.
+ AzFramework::ViewportId m_viewport = AzFramework::InvalidViewportId;
+ //! The icon ID, retrieved from GetOrLoadIconForPath, to render to screen.
+ IconId m_icon = InvalidIconId;
+ //! The color, including opacity, to render the icon with. White will render the icon as opaque in its original color.
+ AZ::Color m_color = AZ::Colors::White;
+ //! The position to render the icon to, in world or screen space depending on m_positionSpace.
+ AZ::Vector3 m_position;
+ //! The coordinate system to use for m_position.
+ //! ScreenSpace will accept m_position in the form of [X, Y, Depth], where X & Y are screen coordinates in
+ //! pixels and Depth is a z-ordering depth value from 0.0f to 1.0f.
+ //! WorldSpace will accept a 3D vector in world space coordinates that will be translated back into screen
+ //! space when the icon is rendered.
+ CoordinateSpace m_positionSpace = CoordinateSpace::ScreenSpace;
+ //! The size to render the icon as, in pixels.
+ AZ::Vector2 m_size;
+ };
+
+ //! The current load status of an icon retrieved by GetOrLoadIconForPath.
+ enum class IconLoadStatus : AZ::u8
+ {
+ Unloaded,
+ Loading,
+ Loaded,
+ Error
+ };
+
+ //! Draws an icon to a viewport given a set of draw parameters.
+ //! Requires an IconId retrieved from GetOrLoadIconForPath.
+ virtual void DrawIcon(const DrawParameters& drawParameters) = 0;
+ //! Retrieves a reusable IconId for an icon at a given path.
+ //! This will load the icon, if it has not already been loaded.
+ //! @param path should be a relative asset path to an icon image asset.
+ //! png and svg icons are currently supported.
+ virtual IconId GetOrLoadIconForPath(AZStd::string_view path) = 0;
+ //! Gets the current load status of an icon retrieved via GetOrLoadIconForPath.
+ virtual IconLoadStatus GetIconLoadStatus(IconId icon) = 0;
+ };
+
+ using EditorViewportIconDisplay = AZ::Interface;
+} //namespace AzToolsFramework
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h
index 82fa3f94f5..72150b1b57 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h
@@ -239,6 +239,11 @@ namespace AzToolsFramework
*/
virtual int RemoveDirtyEntity(AZ::EntityId target) = 0;
+ /*!
+ * Clears the dirty entity set.
+ */
+ virtual void ClearDirtyEntities() = 0;
+
/*!
* \return true if an undo/redo operation is in progress.
*/
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp
index e77704c920..88057787bb 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp
@@ -1354,6 +1354,11 @@ namespace AzToolsFramework
return static_cast(m_dirtyEntities.erase(entityId));
}
+ void ToolsApplication::ClearDirtyEntities()
+ {
+ m_dirtyEntities.clear();
+ }
+
void ToolsApplication::UndoPressed()
{
if (m_undoStack)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.h
index 6c836ac888..bafced67bd 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.h
@@ -85,6 +85,7 @@ namespace AzToolsFramework
void AddDirtyEntity(AZ::EntityId entityId) override;
int RemoveDirtyEntity(AZ::EntityId entityId) override;
+ void ClearDirtyEntities() override;
bool IsDuringUndoRedo() override { return m_isDuringUndoRedo; }
void UndoPressed() override;
void RedoPressed() override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.cpp
index 5529829913..4966d9cce9 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.cpp
@@ -265,6 +265,30 @@ namespace AzToolsFramework
return response.m_resolved;
}
+ bool AssetSystemComponent::GenerateRelativeSourcePath(
+ const AZStd::string& sourcePath, AZStd::string& relativePath, AZStd::string& rootFilePath)
+ {
+ AzFramework::SocketConnection* engineConnection = AzFramework::SocketConnection::GetInstance();
+ if (!engineConnection || !engineConnection->IsConnected())
+ {
+ relativePath = sourcePath;
+ return false;
+ }
+
+ AzFramework::AssetSystem::GenerateRelativeSourcePathRequest request(sourcePath);
+ AzFramework::AssetSystem::GenerateRelativeSourcePathResponse response;
+ if (!SendRequest(request, response))
+ {
+ AZ_Error("Editor", false, "Failed to send GenerateRelativeSourcePath request for %s", sourcePath.c_str());
+ relativePath = sourcePath;
+ return false;
+ }
+
+ relativePath = response.m_relativeSourcePath;
+ rootFilePath = response.m_rootFolder;
+ return response.m_resolved;
+ }
+
bool AssetSystemComponent::GetFullSourcePathFromRelativeProductPath(const AZStd::string& relPath, AZStd::string& fullPath)
{
auto foundIt = m_assetSourceRelativePathToFullPathCache.find(relPath);
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.h
index 399ee1ac9d..9d839c60f5 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetSystemComponent.h
@@ -63,6 +63,8 @@ namespace AzToolsFramework
const char* GetAbsoluteDevGameFolderPath() override;
const char* GetAbsoluteDevRootFolderPath() override;
bool GetRelativeProductPathFromFullSourceOrProductPath(const AZStd::string& fullPath, AZStd::string& outputPath) override;
+ bool GenerateRelativeSourcePath(
+ const AZStd::string& sourcePath, AZStd::string& outputPath, AZStd::string& watchFolder) override;
bool GetFullSourcePathFromRelativeProductPath(const AZStd::string& relPath, AZStd::string& fullPath) override;
bool GetAssetInfoById(const AZ::Data::AssetId& assetId, const AZ::Data::AssetType& assetType, const AZStd::string& platformName, AZ::Data::AssetInfo& assetInfo, AZStd::string& rootFilePath) override;
bool GetSourceInfoBySourcePath(const char* sourcePath, AZ::Data::AssetInfo& assetInfo, AZStd::string& watchFolder) override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h
index 8412361657..a26c3b0ecf 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h
@@ -56,5 +56,7 @@ namespace AzToolsFramework
virtual void StartPlayInEditor() = 0;
virtual void StopPlayInEditor() = 0;
+
+ virtual void CreateNewLevelPrefab(AZStd::string_view filename) = 0;
};
}
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
index 97c3041de6..b2b36cc318 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
@@ -225,50 +225,19 @@ namespace AzToolsFramework
m_rootInstance->SetTemplateSourcePath(relativePath);
- bool newLevelFromTemplate = false;
-
if (templateId == AzToolsFramework::Prefab::InvalidTemplateId)
{
- AZStd::string watchFolder;
- AZ::Data::AssetInfo assetInfo;
- bool sourceInfoFound = false;
- AzToolsFramework::AssetSystemRequestBus::BroadcastResult(
- sourceInfoFound, &AzToolsFramework::AssetSystemRequestBus::Events::GetSourceInfoBySourcePath, DefaultLevelTemplateName,
- assetInfo, watchFolder);
+ m_rootInstance->m_containerEntity->AddComponent(aznew Prefab::EditorPrefabComponent());
+ HandleEntitiesAdded({ m_rootInstance->m_containerEntity.get() });
- if (sourceInfoFound)
+ AzToolsFramework::Prefab::PrefabDom dom;
+ bool success = AzToolsFramework::Prefab::PrefabDomUtils::StoreInstanceInPrefabDom(*m_rootInstance, dom);
+ if (!success)
{
- AZStd::string fullPath;
- AZ::StringFunc::Path::Join(watchFolder.c_str(), assetInfo.m_relativePath.c_str(), fullPath);
-
- // Get the default prefab and copy the Dom over to the new template being saved
- Prefab::TemplateId defaultId = m_loaderInterface->LoadTemplateFromFile(fullPath.c_str());
- Prefab::PrefabDom& dom = m_prefabSystemComponent->FindTemplateDom(defaultId);
-
- Prefab::PrefabDom levelDefaultDom;
- levelDefaultDom.CopyFrom(dom, levelDefaultDom.GetAllocator());
-
- Prefab::PrefabDomPath sourcePath("/Source");
- sourcePath.Set(levelDefaultDom, relativePath.c_str());
-
- templateId = m_prefabSystemComponent->AddTemplate(relativePath, std::move(levelDefaultDom));
- newLevelFromTemplate = true;
- }
- else
- {
- // Create an empty level since we couldn't find the default template
- m_rootInstance->m_containerEntity->AddComponent(aznew Prefab::EditorPrefabComponent());
- HandleEntitiesAdded({ m_rootInstance->m_containerEntity.get() });
-
- AzToolsFramework::Prefab::PrefabDom dom;
- bool success = AzToolsFramework::Prefab::PrefabDomUtils::StoreInstanceInPrefabDom(*m_rootInstance, dom);
- if (!success)
- {
- AZ_Error("Prefab", false, "Failed to convert current root instance into a DOM when saving file '%.*s'", AZ_STRING_ARG(filename));
- return false;
- }
- templateId = m_prefabSystemComponent->AddTemplate(relativePath, std::move(dom));
+ AZ_Error("Prefab", false, "Failed to convert current root instance into a DOM when saving file '%.*s'", AZ_STRING_ARG(filename));
+ return false;
}
+ templateId = m_prefabSystemComponent->AddTemplate(relativePath, AZStd::move(dom));
if (templateId == AzToolsFramework::Prefab::InvalidTemplateId)
{
@@ -286,13 +255,6 @@ namespace AzToolsFramework
m_prefabSystemComponent->RemoveTemplate(prevTemplateId);
}
- // If we have a new level from a template, we need to make sure to propagate the changes here otherwise
- // the entities from the new template won't show up
- if (newLevelFromTemplate)
- {
- m_prefabSystemComponent->PropagateTemplateChanges(templateId);
- }
-
AZStd::string out;
if (m_loaderInterface->SaveTemplateToString(m_rootInstance->GetTemplateId(), out))
{
@@ -303,6 +265,71 @@ namespace AzToolsFramework
return false;
}
+ void PrefabEditorEntityOwnershipService::CreateNewLevelPrefab(AZStd::string_view filename)
+ {
+ AZ::IO::Path relativePath = m_loaderInterface->GetRelativePathToProject(filename);
+ AzToolsFramework::Prefab::TemplateId templateId = m_prefabSystemComponent->GetTemplateIdFromFilePath(relativePath);
+
+ m_rootInstance->SetTemplateSourcePath(relativePath);
+
+ AZStd::string watchFolder;
+ AZ::Data::AssetInfo assetInfo;
+ bool sourceInfoFound = false;
+ AzToolsFramework::AssetSystemRequestBus::BroadcastResult(
+ sourceInfoFound, &AzToolsFramework::AssetSystemRequestBus::Events::GetSourceInfoBySourcePath, DefaultLevelTemplateName,
+ assetInfo, watchFolder);
+
+ if (sourceInfoFound)
+ {
+ AZStd::string fullPath;
+ AZ::StringFunc::Path::Join(watchFolder.c_str(), assetInfo.m_relativePath.c_str(), fullPath);
+
+ // Get the default prefab and copy the Dom over to the new template being saved
+ Prefab::TemplateId defaultId = m_loaderInterface->LoadTemplateFromFile(fullPath.c_str());
+ Prefab::PrefabDom& dom = m_prefabSystemComponent->FindTemplateDom(defaultId);
+
+ Prefab::PrefabDom levelDefaultDom;
+ levelDefaultDom.CopyFrom(dom, levelDefaultDom.GetAllocator());
+
+ Prefab::PrefabDomPath sourcePath("/Source");
+ sourcePath.Set(levelDefaultDom, assetInfo.m_relativePath.c_str());
+
+ templateId = m_prefabSystemComponent->AddTemplate(relativePath, AZStd::move(levelDefaultDom));
+ }
+ else
+ {
+ m_rootInstance->m_containerEntity->AddComponent(aznew Prefab::EditorPrefabComponent());
+ HandleEntitiesAdded({ m_rootInstance->m_containerEntity.get() });
+
+ AzToolsFramework::Prefab::PrefabDom dom;
+ bool success = AzToolsFramework::Prefab::PrefabDomUtils::StoreInstanceInPrefabDom(*m_rootInstance, dom);
+ if (!success)
+ {
+ AZ_Error(
+ "Prefab", false, "Failed to convert current root instance into a DOM when saving file '%.*s'", AZ_STRING_ARG(filename));
+ return;
+ }
+ templateId = m_prefabSystemComponent->AddTemplate(relativePath, std::move(dom));
+ }
+
+ if (templateId == AzToolsFramework::Prefab::InvalidTemplateId)
+ {
+ AZ_Error("Prefab", false, "Couldn't create new template id '%i' when creating new level '%.*s'", templateId, AZ_STRING_ARG(filename));
+ return;
+ }
+
+ Prefab::TemplateId prevTemplateId = m_rootInstance->GetTemplateId();
+ m_rootInstance->SetTemplateId(templateId);
+
+ if (prevTemplateId != Prefab::InvalidTemplateId && templateId != prevTemplateId)
+ {
+ // Make sure we only have one level template loaded at a time
+ m_prefabSystemComponent->RemoveTemplate(prevTemplateId);
+ }
+
+ m_prefabSystemComponent->PropagateTemplateChanges(templateId);
+ }
+
Prefab::InstanceOptionalReference PrefabEditorEntityOwnershipService::CreatePrefab(
const AZStd::vector& entities, AZStd::vector>&& nestedPrefabInstances,
AZ::IO::PathView filePath, Prefab::InstanceOptionalReference instanceToParentUnder)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h
index 606d5f495f..915cafd316 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h
@@ -170,6 +170,8 @@ namespace AzToolsFramework
void StartPlayInEditor() override;
void StopPlayInEditor() override;
+ void CreateNewLevelPrefab(AZStd::string_view filename) override;
+
protected:
AZ::SliceComponent::SliceInstanceAddress GetOwningSlice() override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/SliceEditorEntityOwnershipService.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/SliceEditorEntityOwnershipService.cpp
index 906ea98357..14dcf5e55d 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/SliceEditorEntityOwnershipService.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/SliceEditorEntityOwnershipService.cpp
@@ -614,7 +614,7 @@ namespace AzToolsFramework
AZ::Quaternion oldEntityRotation;
AZ::TransformBus::EventResult(oldEntityRotation, id, &AZ::TransformBus::Events::GetWorldRotationQuaternion);
- transformComponent->SetRotationQuaternion(oldEntityRotation);
+ transformComponent->SetWorldRotationQuaternion(oldEntityRotation);
// Ensure the existing hierarchy is maintained
AZ::EntityId oldParentEntityId;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceToTemplatePropagator.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceToTemplatePropagator.cpp
index a21c5301aa..6d3ddedd51 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceToTemplatePropagator.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceToTemplatePropagator.cpp
@@ -276,18 +276,14 @@ namespace AzToolsFramework
PrefabDomValueReference linkPatchesReference =
PrefabDomUtils::FindPrefabDomValue(linkDom, PrefabDomUtils::PatchesName);
- // This logic only covers addition of patches. If patches already exists, the given list of patches must be appended to them.
- if (!linkPatchesReference.has_value())
- {
- /*
- If the original allocator the patches were created with gets destroyed, then the patches would become garbage in the
- linkDom. Since we cannot guarantee the lifecycle of the patch allocators, we are doing a copy of the patches here to
- associate them with the linkDom's allocator.
- */
- PrefabDom patchesCopy;
- patchesCopy.CopyFrom(patches, linkDom.GetAllocator());
- linkDom.AddMember(rapidjson::StringRef(PrefabDomUtils::PatchesName), patchesCopy, linkDom.GetAllocator());
- }
+ /*
+ If the original allocator the patches were created with gets destroyed, then the patches would become garbage in the
+ linkDom. Since we cannot guarantee the lifecycle of the patch allocators, we are doing a copy of the patches here to
+ associate them with the linkDom's allocator.
+ */
+ PrefabDom patchesCopy;
+ patchesCopy.CopyFrom(patches, linkDom.GetAllocator());
+ linkDom.AddMember(rapidjson::StringRef(PrefabDomUtils::PatchesName), patchesCopy, linkDom.GetAllocator());
}
}
}
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.cpp
index 308749ab28..2fb22ea8e8 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.cpp
@@ -234,5 +234,10 @@ namespace AzToolsFramework
}
}
+ PrefabDomValueReference Link::GetLinkPatches()
+ {
+ return PrefabDomUtils::FindPrefabDomValue(m_linkDom, PrefabDomUtils::PatchesName);
+ }
+
} // namespace Prefab
} // namespace AzToolsFramework
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.h
index 073e619f20..c8f43b291e 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Link/Link.h
@@ -79,6 +79,8 @@ namespace AzToolsFramework
*/
void AddLinkIdToInstanceDom(PrefabDomValue& instanceDomValue);
+ PrefabDomValueReference GetLinkPatches();
+
private:
/**
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp
index 579f465eb2..0181050a32 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp
@@ -10,8 +10,6 @@
*
*/
-#include
-
#include
#include
#include
@@ -28,6 +26,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -98,9 +97,13 @@ namespace AzToolsFramework
AZStd::string("Could not create a new prefab out of the entities provided - invalid selection."));
}
+ AZStd::unordered_map oldEntityAliases;
+
// Detach the retrieved entities
for (AZ::Entity* entity : entities)
{
+ AZ::EntityId entityId = entity->GetId();
+ oldEntityAliases.emplace(entityId, commonRootEntityOwningInstance->get().GetEntityAlias(entityId)->get());
commonRootEntityOwningInstance->get().DetachEntity(entity->GetId()).release();
}
@@ -110,15 +113,18 @@ namespace AzToolsFramework
{
AZStd::unique_ptr outInstance = commonRootEntityOwningInstance->get().DetachNestedInstance(nestedInstance->GetInstanceAlias());
- auto linkRef = m_prefabSystemComponentInterface->FindLink(nestedInstance->GetLinkId());
+ LinkId detachingInstanceLinkId = nestedInstance->GetLinkId();
+ auto linkRef = m_prefabSystemComponentInterface->FindLink(detachingInstanceLinkId);
+ AZ_Assert(linkRef.has_value(), "Unable to find link with id '%llu' during prefab creation.", detachingInstanceLinkId);
- if (linkRef.has_value())
- {
- PrefabDom oldLinkPatches;
- oldLinkPatches.CopyFrom(linkRef->get().GetLinkDom(), oldLinkPatches.GetAllocator());
+ PrefabDomValueReference linkPatches = linkRef->get().GetLinkPatches();
+ AZ_Assert(
+ linkPatches.has_value(), "Unable to get patches on link with id '%llu' during prefab creation.",
+ detachingInstanceLinkId);
- nestedInstanceLinkPatchesMap.emplace(nestedInstance, AZStd::move(oldLinkPatches));
- }
+ PrefabDom linkPatchesCopy;
+ linkPatchesCopy.CopyFrom(linkPatches->get(), linkPatchesCopy.GetAllocator());
+ nestedInstanceLinkPatchesMap.emplace(nestedInstance, AZStd::move(linkPatchesCopy));
RemoveLink(outInstance, commonRootEntityOwningInstance->get().GetTemplateId(), undoBatch.GetUndoBatch());
@@ -182,6 +188,24 @@ namespace AzToolsFramework
if (nestedInstanceLinkPatchesMap.contains(nestedInstance.get()))
{
previousPatch = AZStd::move(nestedInstanceLinkPatchesMap[nestedInstance.get()]);
+ rapidjson::StringBuffer buffer;
+ rapidjson::Writer writer(buffer);
+ previousPatch.Accept(writer);
+ QString previousPatchString(buffer.GetString());
+
+ for (AZ::Entity* entity : entities)
+ {
+ AZ::EntityId entityId = entity->GetId();
+ AZStd::string oldEntityAlias = oldEntityAliases[entityId];
+ EntityAliasOptionalReference newEntityAlias = instanceToCreate->get().GetEntityAlias(entityId);
+ AZ_Assert(
+ newEntityAlias.has_value(),
+ "Could not fetch entity alias for entity with id '%llu' during prefab creation.",
+ static_cast(entityId));
+ ReplaceOldAliases(previousPatchString, oldEntityAlias, newEntityAlias->get());
+ }
+
+ previousPatch.Parse(previousPatchString.toUtf8().constData());
}
// These link creations shouldn't be undone because that would put the template in a non-usable state if a user
@@ -203,36 +227,23 @@ namespace AzToolsFramework
m_instanceToTemplateInterface->GeneratePatch(reparentPatch, containerEntityDomBefore, containerEntityDomAfter);
m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(reparentPatch, nestedInstanceContainerEntityId);
- // Update the cache - this prevents these changes from being stored in the regular undo/redo nodes as a separate step
- m_prefabUndoCache.Store(nestedInstanceContainerEntityId, AZStd::move(containerEntityDomAfter));
-
- // Save these changes as patches to the link
- PrefabUndoLinkUpdate* linkUpdate = aznew PrefabUndoLinkUpdate(AZStd::to_string(static_cast(nestedInstanceContainerEntityId)));
- linkUpdate->SetParent(undoBatch.GetUndoBatch());
- linkUpdate->Capture(reparentPatch, nestedInstance->GetLinkId());
-
- linkUpdate->Redo();
+ // We won't parent this undo node to the undo batch so that the newly created template and link will remain
+ // unaffected by undo actions. This is needed so that any future instantiations of the template will work.
+ PrefabUndoLinkUpdate linkUpdate = PrefabUndoLinkUpdate(AZStd::to_string(static_cast(nestedInstanceContainerEntityId)));
+ linkUpdate.Capture(reparentPatch, nestedInstance->GetLinkId());
+ linkUpdate.Redo();
}
});
-
+
// Create a link between the templates of the newly created instance and the instance it's being parented under.
CreateLink(
instanceToCreate->get(), commonRootEntityOwningInstance->get().GetTemplateId(), undoBatch.GetUndoBatch(),
AZStd::move(patch));
- for (AZ::Entity* topLevelEntity : topLevelEntities)
- {
- AZ::EntityId topLevelEntityId = topLevelEntity->GetId();
- if (topLevelEntityId.IsValid())
- {
- m_prefabUndoCache.UpdateCache(topLevelEntity->GetId());
-
- // Parenting entities would mark entities as dirty. But we want to unmark the top level entities as dirty because
- // if we don't, the template created would be updated and cause issues with undo operation followed by instantiation.
- ToolsApplicationRequests::Bus::Broadcast(
- &ToolsApplicationRequests::Bus::Events::RemoveDirtyEntity, topLevelEntity->GetId());
- }
- }
+ // This clears any entities marked as dirty due to reparenting of entities during the process of creating a prefab.
+ // We are doing this so that the changes in those enities are not queued up twice for propagation.
+ AzToolsFramework::ToolsApplicationRequestBus::Broadcast(
+ &AzToolsFramework::ToolsApplicationRequestBus::Events::ClearDirtyEntities);
// Select Container Entity
{
@@ -824,15 +835,7 @@ namespace AzToolsFramework
// This will cover both cases where an alias could be used in a normal entity vs. an instance
for (auto aliasMapIter : oldAliasToNewAliasMap)
{
- QString oldAliasQuotes = QString("\"%1\"").arg(aliasMapIter.first.c_str());
- QString newAliasQuotes = QString("\"%1\"").arg(aliasMapIter.second.c_str());
-
- newEntityDomString.replace(oldAliasQuotes, newAliasQuotes);
-
- QString oldAliasPathRef = QString("/%1").arg(aliasMapIter.first.c_str());
- QString newAliasPathRef = QString("/%1").arg(aliasMapIter.second.c_str());
-
- newEntityDomString.replace(oldAliasPathRef, newAliasPathRef);
+ ReplaceOldAliases(newEntityDomString, aliasMapIter.first, aliasMapIter.second);
}
// Create the new Entity DOM from parsing the JSON string
@@ -1233,5 +1236,18 @@ namespace AzToolsFramework
return true;
}
+
+ void PrefabPublicHandler::ReplaceOldAliases(QString& stringToReplace, AZStd::string_view oldAlias, AZStd::string_view newAlias)
+ {
+ QString oldAliasQuotes = QString("\"%1\"").arg(oldAlias.data());
+ QString newAliasQuotes = QString("\"%1\"").arg(newAlias.data());
+
+ stringToReplace.replace(oldAliasQuotes, newAliasQuotes);
+
+ QString oldAliasPathRef = QString("/%1").arg(oldAlias.data());
+ QString newAliasPathRef = QString("/%1").arg(newAlias.data());
+
+ stringToReplace.replace(oldAliasPathRef, newAliasPathRef);
+ }
} // namespace Prefab
} // namespace AzToolsFramework
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h
index 223a725c6c..7e2357dd44 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h
@@ -14,12 +14,15 @@
#include
#include
+#include
#include
#include
#include
#include
+class QString;
+
namespace AzToolsFramework
{
using EntityList = AZStd::vector;
@@ -27,7 +30,6 @@ namespace AzToolsFramework
namespace Prefab
{
class Instance;
-
class InstanceEntityMapperInterface;
class InstanceToTemplateInterface;
class PrefabLoaderInterface;
@@ -130,6 +132,8 @@ namespace AzToolsFramework
bool IsCyclicalDependencyFound(
InstanceOptionalConstReference instance, const AZStd::unordered_set& templateSourcePaths);
+ void ReplaceOldAliases(QString& stringToReplace, AZStd::string_view oldAlias, AZStd::string_view newAlias);
+
static Instance* GetParentInstance(Instance* instance);
static Instance* GetAncestorOfInstanceThatIsChildOfRoot(const Instance* ancestor, Instance* descendant);
static void GenerateContainerEntityTransform(const EntityList& topLevelEntities, AZ::Vector3& translation, AZ::Quaternion& rotation);
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.h
index 6950717499..0ca5853adc 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.h
@@ -1,22 +1,22 @@
/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
#pragma once
-#include
-#include
-#include
#include
#include
+#include
+#include
+#include
namespace AzToolsFramework
{
@@ -31,7 +31,7 @@ namespace AzToolsFramework
To use the EditorComponentAdapter, 3 classes are required:
- a class that implements the functions required for TController (see below)
- a configuration struct/class which extends AZ::ComponentConfig
- - A runtime component that will be generated by the editor comoinent on export
+ - A runtime component that will be generated by the editor component on export
The concrete component extends the adapter and implements behavior which is unique to the component.
@@ -64,15 +64,15 @@ namespace AzToolsFramework
the EditContext. TController can friend itself to the editor component to make this work if required.
*/
template
- class EditorComponentAdapter
- : public EditorComponentBase
+ class EditorComponentAdapter : public EditorComponentBase
{
public:
-
- AZ_RTTI((EditorComponentAdapter, "{2F5A3669-FFE9-4CD7-B9E2-7FC8100CF1A2}", TController, TRuntimeComponent, TConfiguration), EditorComponentBase);
+ AZ_RTTI(
+ (EditorComponentAdapter, "{2F5A3669-FFE9-4CD7-B9E2-7FC8100CF1A2}", TController, TRuntimeComponent, TConfiguration),
+ EditorComponentBase);
EditorComponentAdapter() = default;
- EditorComponentAdapter(const TConfiguration& configuration);
+ explicit EditorComponentAdapter(const TConfiguration& configuration);
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& services);
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& services);
@@ -86,7 +86,6 @@ namespace AzToolsFramework
void BuildGameEntity(AZ::Entity* gameEntity) override;
protected:
-
static void Reflect(AZ::ReflectContext* context);
// AZ::Component overrides ...
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.inl b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.inl
index 04619b079d..b8bd24589a 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.inl
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorComponentAdapter.inl
@@ -1,14 +1,14 @@
/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
+ * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+ * its licensors.
+ *
+ * For complete copyright and license terms please see the LICENSE at the root of this
+ * distribution (the "License"). All use of this software is governed by the License,
+ * or, if provided, by the license below or the license accompanying this file. Do not
+ * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ */
#include
@@ -28,23 +28,21 @@ namespace AzToolsFramework
template
void EditorComponentAdapter::Reflect(AZ::ReflectContext* context)
{
- if (AZ::SerializeContext* serializeContext = azrtti_cast(context))
+ if (auto serializeContext = azrtti_cast(context))
{
- serializeContext->Class()
- ->Version(1)
- ->Field("Controller", &EditorComponentAdapter::m_controller)
- ;
+ serializeContext->Class()->Version(1)->Field(
+ "Controller", &EditorComponentAdapter::m_controller);
if (AZ::EditContext* editContext = serializeContext->GetEditContext())
{
- editContext->Class(
- "EditorComponentAdapter", "")
+ // clang-format off
+ editContext->Class("EditorComponentAdapter", "")
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->DataElement(AZ::Edit::UIHandlers::Default, &EditorComponentAdapter::m_controller, "Controller", "")
->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly)
- ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorComponentAdapter::OnConfigurationChanged)
- ;
+ ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorComponentAdapter::OnConfigurationChanged);
+ // clang-format on
}
}
}
@@ -53,27 +51,35 @@ namespace AzToolsFramework
// Get*Services functions
template
- void EditorComponentAdapter::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& services)
+ void EditorComponentAdapter::GetProvidedServices(
+ AZ::ComponentDescriptor::DependencyArrayType& services)
{
- AzFramework::Components::GetProvidedServicesHelper(services, typename AZ::HasComponentProvidedServices::type());
+ AzFramework::Components::GetProvidedServicesHelper(
+ services, typename AZ::HasComponentProvidedServices::type());
}
template
- void EditorComponentAdapter::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& services)
+ void EditorComponentAdapter::GetRequiredServices(
+ AZ::ComponentDescriptor::DependencyArrayType& services)
{
- AzFramework::Components::GetRequiredServicesHelper(services, typename AZ::HasComponentRequiredServices::type());
+ AzFramework::Components::GetRequiredServicesHelper(
+ services, typename AZ::HasComponentRequiredServices::type());
}
template
- void EditorComponentAdapter::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& services)
+ void EditorComponentAdapter::GetIncompatibleServices(
+ AZ::ComponentDescriptor::DependencyArrayType& services)
{
- AzFramework::Components::GetIncompatibleServicesHelper(services, typename AZ::HasComponentIncompatibleServices::type());
+ AzFramework::Components::GetIncompatibleServicesHelper(
+ services, typename AZ::HasComponentIncompatibleServices::type());
}
template
- void EditorComponentAdapter::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& services)
+ void EditorComponentAdapter::GetDependentServices(
+ AZ::ComponentDescriptor::DependencyArrayType& services)
{
- AzFramework::Components::GetDependentServicesHelper(services, typename AZ::HasComponentDependentServices::type());
+ AzFramework::Components::GetDependentServicesHelper(
+ services, typename AZ::HasComponentDependentServices::type());
}
//////////////////////////////////////////////////////////////////////////
@@ -99,7 +105,8 @@ namespace AzToolsFramework
if (ShouldActivateController())
{
- m_controller.Activate(GetEntityId());
+ AzFramework::Components::ComponentActivateHelper::Activate(
+ m_controller, AZ::EntityComponentIdPair(GetEntityId(), GetId()));
}
}
@@ -122,7 +129,8 @@ namespace AzToolsFramework
}
template
- bool EditorComponentAdapter::WriteOutConfig(AZ::ComponentConfig* outBaseConfig) const
+ bool EditorComponentAdapter::WriteOutConfig(
+ AZ::ComponentConfig* outBaseConfig) const
{
if (auto config = azrtti_cast(outBaseConfig))
{
@@ -139,7 +147,8 @@ namespace AzToolsFramework
if (ShouldActivateController())
{
- m_controller.Activate(GetEntityId());
+ AzFramework::Components::ComponentActivateHelper::Activate(
+ m_controller, AZ::EntityComponentIdPair(GetEntityId(), GetId()));
}
return AZ::Edit::PropertyRefreshLevels::None;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorEntityIconComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorEntityIconComponent.cpp
index 48a7a37487..c46bb158c6 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorEntityIconComponent.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/EditorEntityIconComponent.cpp
@@ -17,6 +17,7 @@
#include
#include
+#include
#include
#include
#include
@@ -313,8 +314,7 @@ namespace AzToolsFramework
// if we do not yet have a valid texture id, request it using the entity icon path
if (m_entityIconTextureId == 0)
{
- EditorRequestBus::BroadcastResult(
- m_entityIconTextureId, &EditorRequests::GetIconTextureIdFromEntityIconPath, m_entityIconPath);
+ m_entityIconTextureId = EditorViewportIconDisplay::Get()->GetOrLoadIconForPath(m_entityIconPath);
}
return m_entityIconTextureId;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
index b73978c792..285d962b46 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp
@@ -520,91 +520,13 @@ namespace AzToolsFramework
return m_editorTransform.m_translate.GetZ();
}
- void TransformComponent::SetRotation(const AZ::Vector3& eulerAnglesRadians)
+ void TransformComponent::SetWorldRotationQuaternion(const AZ::Quaternion& quaternion)
{
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetRotation is deprecated, please use SetLocalRotation");
- AZ::Transform newWorldTransform = GetWorldTM();
- newWorldTransform.SetRotation(AZ::ConvertEulerRadiansToQuaternion(eulerAnglesRadians));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetRotationQuaternion(const AZ::Quaternion& quaternion)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetRotationQuaternion is deprecated, please use SetLocalRotation");
AZ::Transform newWorldTransform = GetWorldTM();
newWorldTransform.SetRotation(quaternion);
SetWorldTM(newWorldTransform);
}
- void TransformComponent::SetRotationX(float eulerAngleRadians)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetRotationX is deprecated, please use SetLocalRotation");
- AZ::Transform newWorldTransform = GetWorldTM();
- newWorldTransform.SetRotation(AZ::Quaternion::CreateRotationX(eulerAngleRadians));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetRotationY(float eulerAngleRadians)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetRotationY is deprecated, please use SetLocalRotation");
- AZ::Transform newWorldTransform = GetWorldTM();
- newWorldTransform.SetRotation(AZ::Quaternion::CreateRotationY(eulerAngleRadians));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::SetRotationZ(float eulerAngleRadians)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "SetRotationZ is deprecated, please use SetLocalRotation");
- AZ::Transform newWorldTransform = GetWorldTM();
- newWorldTransform.SetRotation(AZ::Quaternion::CreateRotationZ(eulerAngleRadians));
- SetWorldTM(newWorldTransform);
- }
-
- void TransformComponent::RotateByX(float eulerAngleRadians)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "RotateByX is deprecated, please use RotateAroundLocalX");
- SetWorldTM(GetWorldTM() * AZ::Transform::CreateRotationX(eulerAngleRadians));
- }
-
- void TransformComponent::RotateByY(float eulerAngleRadians)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "RotateByY is deprecated, please use RotateAroundLocalY");
- SetWorldTM(GetWorldTM() * AZ::Transform::CreateRotationY(eulerAngleRadians));
- }
-
- void TransformComponent::RotateByZ(float eulerAngleRadians)
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "RotateByZ is deprecated, please use RotateAroundLocalZ");
- SetWorldTM(GetWorldTM() * AZ::Transform::CreateRotationZ(eulerAngleRadians));
- }
-
- AZ::Vector3 TransformComponent::GetRotationEulerRadians()
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "GetRotationEulerRadians is deprecated, please use GetWorldRotation");
- return GetWorldTM().GetRotation().GetEulerRadians();
- }
-
- AZ::Quaternion TransformComponent::GetRotationQuaternion()
- {
- AZ_Warning("AzToolsFramework::TransformComponent", false, "GetRotationQuaternion is deprecated, please use GetWorldRotationQuaternion");
- return GetWorldTM().GetRotation();
- }
-
- float TransformComponent::GetRotationX()
- {
- return GetRotationEulerRadians().GetX();
- }
-
- float TransformComponent::GetRotationY()
- {
- return GetRotationEulerRadians().GetY();
- }
-
- float TransformComponent::GetRotationZ()
- {
- return GetRotationEulerRadians().GetZ();
- }
-
AZ::Vector3 TransformComponent::GetWorldRotation()
{
return GetWorldTM().GetRotation().GetEulerRadians();
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
index 91d64b0533..f772b608c1 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.h
@@ -99,22 +99,7 @@ namespace AzToolsFramework
float GetLocalZ() override;
// Rotation modifiers
- void SetRotation(const AZ::Vector3& eulerAnglesRadians) override;
- void SetRotationQuaternion(const AZ::Quaternion& quaternion) override;
- void SetRotationX(float eulerAngleRadians) override;
- void SetRotationY(float eulerAngleRadians) override;
- void SetRotationZ(float eulerAngleRadians) override;
-
- void RotateByX(float eulerAngleRadians) override;
- void RotateByY(float eulerAngleRadians) override;
- void RotateByZ(float eulerAngleRadians) override;
-
- AZ::Vector3 GetRotationEulerRadians() override;
- AZ::Quaternion GetRotationQuaternion() override;
-
- float GetRotationX() override;
- float GetRotationY() override;
- float GetRotationZ() override;
+ void SetWorldRotationQuaternion(const AZ::Quaternion& quaternion) override;
AZ::Vector3 GetWorldRotation() override;
AZ::Quaternion GetWorldRotationQuaternion() override;
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp
index 5c62a2997b..31da01fadc 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
AZ_CVAR(
bool, ed_visibility_showAggregateEntitySelectionBounds, false, nullptr, AZ::ConsoleFunctorFlags::Null,
@@ -232,10 +233,14 @@ namespace AzToolsFramework
return AZ::Color(1.0f, 1.0f, 1.0f, 1.0f);
}();
- debugDisplay.SetColor(iconHighlight);
- // debugDisplay.DrawTextureLabel(
- // iconTextureId, entityPosition, iconSize, iconSize,
- // /*DisplayContext::ETextureIconFlags::TEXICON_ON_TOP=*/ 0x0008);
+ EditorViewportIconDisplay::Get()->DrawIcon({
+ viewportInfo.m_viewportId,
+ iconTextureId,
+ iconHighlight,
+ entityPosition,
+ EditorViewportIconDisplayInterface::CoordinateSpace::WorldSpace,
+ AZ::Vector2{iconSize, iconSize}
+ });
}
}
}
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake
index 45f52704bf..aaf5c86d33 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake
@@ -46,6 +46,7 @@ set(FILES
API/EditorWindowRequestBus.h
API/EntityCompositionRequestBus.h
API/EntityCompositionNotificationBus.h
+ API/EditorViewportIconDisplayInterface.h
API/ViewPaneOptions.h
Application/Ticker.h
Application/Ticker.cpp
diff --git a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp
index 3d45c10fca..33009bc0da 100644
--- a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp
+++ b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp
@@ -82,7 +82,7 @@ namespace UnitTest
}
m_testPlatforms[0] = AzFramework::PlatformId::PC;
- m_testPlatforms[1] = AzFramework::PlatformId::ES3;
+ m_testPlatforms[1] = AzFramework::PlatformId::ANDROID_ID;
int platformCount = 0;
for(auto thisPlatform : m_testPlatforms)
@@ -170,20 +170,20 @@ namespace UnitTest
AzFramework::AssetCatalog assetCatalog(useRequestBus);
AZStd::string pcCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::PC);
- AZStd::string es3CatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ES3);
+ AZStd::string androidCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ANDROID_ID);
if (!assetCatalog.SaveCatalog(pcCatalogFile.c_str(), m_assetRegistry))
{
GTEST_FATAL_FAILURE_(AZStd::string::format("Unable to save the asset catalog (PC) file.\n").c_str());
}
- if (!assetCatalog.SaveCatalog(es3CatalogFile.c_str(), m_assetRegistry))
+ if (!assetCatalog.SaveCatalog(androidCatalogFile.c_str(), m_assetRegistry))
{
- GTEST_FATAL_FAILURE_(AZStd::string::format("Unable to save the asset catalog (ES3) file.\n").c_str());
+ GTEST_FATAL_FAILURE_(AZStd::string::format("Unable to save the asset catalog (ANDROID) file.\n").c_str());
}
m_pcCatalog = new AzToolsFramework::PlatformAddressedAssetCatalog(AzFramework::PlatformId::PC);
- m_es3Catalog = new AzToolsFramework::PlatformAddressedAssetCatalog(AzFramework::PlatformId::ES3);
+ m_androidCatalog = new AzToolsFramework::PlatformAddressedAssetCatalog(AzFramework::PlatformId::ANDROID_ID);
const AZStd::string engroot = AZ::Test::GetEngineRootPath();
AZ::IO::FileIOBase::GetInstance()->SetAlias("@engroot@", engroot.c_str());
@@ -227,21 +227,21 @@ namespace UnitTest
}
auto pcCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::PC);
- auto es3CatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ES3);
+ auto androidCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ANDROID_ID);
if (fileIO->Exists(pcCatalogFile.c_str()))
{
fileIO->Remove(pcCatalogFile.c_str());
}
- if (fileIO->Exists(es3CatalogFile.c_str()))
+ if (fileIO->Exists(androidCatalogFile.c_str()))
{
- fileIO->Remove(es3CatalogFile.c_str());
+ fileIO->Remove(androidCatalogFile.c_str());
}
delete m_assetSeedManager;
delete m_assetRegistry;
delete m_pcCatalog;
- delete m_es3Catalog;
+ delete m_androidCatalog;
m_application->Stop();
delete m_application;
}
@@ -342,10 +342,10 @@ namespace UnitTest
m_assetSeedManager->AddSeedAsset(assets[2], AzFramework::PlatformFlags::Platform_PC);
// Step we are testing
- m_assetSeedManager->AddPlatformToAllSeeds(AzFramework::PlatformId::ES3);
+ m_assetSeedManager->AddPlatformToAllSeeds(AzFramework::PlatformId::ANDROID_ID);
// Verification
- AzFramework::PlatformFlags expectedPlatformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3;
+ AzFramework::PlatformFlags expectedPlatformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID;
for (const auto& seedInfo : m_assetSeedManager->GetAssetSeedList())
{
EXPECT_EQ(seedInfo.m_platformFlags, expectedPlatformFlags);
@@ -358,14 +358,14 @@ namespace UnitTest
m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC);
m_assetSeedManager->AddSeedAsset(assets[1], AzFramework::PlatformFlags::Platform_PC);
- m_es3Catalog->UnregisterAsset(assets[2]);
+ m_androidCatalog->UnregisterAsset(assets[2]);
m_assetSeedManager->AddSeedAsset(assets[2], AzFramework::PlatformFlags::Platform_PC);
// Step we are testing
- m_assetSeedManager->AddPlatformToAllSeeds(AzFramework::PlatformId::ES3);
+ m_assetSeedManager->AddPlatformToAllSeeds(AzFramework::PlatformId::ANDROID_ID);
// Verification
- AzFramework::PlatformFlags expectedPlatformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3;
+ AzFramework::PlatformFlags expectedPlatformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID;
for (const auto& seedInfo : m_assetSeedManager->GetAssetSeedList())
{
if (seedInfo.m_assetId == assets[2])
@@ -383,14 +383,14 @@ namespace UnitTest
{
// Setup
m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC);
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_ANDROID);
m_assetSeedManager->AddSeedAsset(assets[1], AzFramework::PlatformFlags::Platform_PC);
- m_assetSeedManager->AddSeedAsset(assets[1], AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->AddSeedAsset(assets[1], AzFramework::PlatformFlags::Platform_ANDROID);
m_assetSeedManager->AddSeedAsset(assets[2], AzFramework::PlatformFlags::Platform_PC);
- m_assetSeedManager->AddSeedAsset(assets[2], AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->AddSeedAsset(assets[2], AzFramework::PlatformFlags::Platform_ANDROID);
// Step we are testing
- m_assetSeedManager->RemovePlatformFromAllSeeds(AzFramework::PlatformId::ES3);
+ m_assetSeedManager->RemovePlatformFromAllSeeds(AzFramework::PlatformId::ANDROID_ID);
// Verification
for (const auto& seedInfo : m_assetSeedManager->GetAssetSeedList())
@@ -514,8 +514,8 @@ namespace UnitTest
void DependencyValidation_MultipleAssetSeeds_MultiplePlatformFlags_ListValid()
{
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3);
- m_assetSeedManager->AddSeedAsset(assets[5], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID);
+ m_assetSeedManager->AddSeedAsset(assets[5], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID);
AzToolsFramework::AssetFileInfoList assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC);
@@ -531,7 +531,7 @@ namespace UnitTest
assetList.m_fileInfoList.clear();
- m_assetSeedManager->AddSeedAsset(assets[8], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->AddSeedAsset(assets[8], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID);
assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC);
@@ -547,7 +547,7 @@ namespace UnitTest
EXPECT_TRUE(Search(assetList, assets[8]));
assetList.m_fileInfoList.clear();
- m_assetSeedManager->RemoveSeedAsset(assets[5], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->RemoveSeedAsset(assets[5], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID);
assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC);
@@ -562,7 +562,7 @@ namespace UnitTest
EXPECT_TRUE(Search(assetList, assets[8]));
// Removing the android flag from the asset should still produce the same result
- m_assetSeedManager->RemoveSeedAsset(assets[8], AzFramework::PlatformFlags::Platform_ES3);
+ m_assetSeedManager->RemoveSeedAsset(assets[8], AzFramework::PlatformFlags::Platform_ANDROID);
assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC);
@@ -576,7 +576,7 @@ namespace UnitTest
EXPECT_TRUE(Search(assetList, assets[7]));
EXPECT_TRUE(Search(assetList, assets[8]));
- assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::ES3);
+ assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::ANDROID_ID);
EXPECT_EQ(assetList.m_fileInfoList.size(), 5);
EXPECT_TRUE(Search(assetList, assets[0]));
@@ -586,8 +586,8 @@ namespace UnitTest
EXPECT_TRUE(Search(assetList, assets[4]));
// Adding the android flag again to the asset
- m_assetSeedManager->AddSeedAsset(assets[8], AzFramework::PlatformFlags::Platform_ES3);
- assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::ES3);
+ m_assetSeedManager->AddSeedAsset(assets[8], AzFramework::PlatformFlags::Platform_ANDROID);
+ assetList = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::ANDROID_ID);
EXPECT_EQ(assetList.m_fileInfoList.size(), 8);
EXPECT_TRUE(Search(assetList, assets[0]));
@@ -773,7 +773,7 @@ namespace UnitTest
AzFramework::AssetRegistry* m_assetRegistry;
ToolsTestApplication* m_application;
AzToolsFramework::PlatformAddressedAssetCatalog* m_pcCatalog;
- AzToolsFramework::PlatformAddressedAssetCatalog* m_es3Catalog;
+ AzToolsFramework::PlatformAddressedAssetCatalog* m_androidCatalog;
AZ::IO::FileIOStream m_fileStreams[s_totalTestPlatforms][s_totalAssets];
AzFramework::PlatformId m_testPlatforms[s_totalTestPlatforms];
AZStd::string m_assetsPath[s_totalAssets];
@@ -936,7 +936,7 @@ namespace UnitTest
TEST_F(AssetSeedManagerTest, AddSeedAssetForValidPlatforms_AllPlatformsValid_SeedAddedForEveryInputPlatform)
{
using namespace AzFramework;
- PlatformFlags validPlatforms = PlatformFlags::Platform_PC | PlatformFlags::Platform_ES3;
+ PlatformFlags validPlatforms = PlatformFlags::Platform_PC | PlatformFlags::Platform_ANDROID;
AZStd::pair result = m_assetSeedManager->AddSeedAssetForValidPlatforms(TestDynamicSliceAssetPath, validPlatforms);
// Verify the function outputs
@@ -953,8 +953,8 @@ namespace UnitTest
TEST_F(AssetSeedManagerTest, AddSeedAssetForValidPlatforms_SomePlatformsValid_SeedAddedForEveryValidPlatform)
{
using namespace AzFramework;
- PlatformFlags validPlatforms = PlatformFlags::Platform_PC | PlatformFlags::Platform_ES3;
- PlatformFlags inputPlatforms = validPlatforms | PlatformFlags::Platform_OSX;
+ PlatformFlags validPlatforms = PlatformFlags::Platform_PC | PlatformFlags::Platform_ANDROID;
+ PlatformFlags inputPlatforms = validPlatforms | PlatformFlags::Platform_MAC;
AZStd::pair result = m_assetSeedManager->AddSeedAssetForValidPlatforms(TestDynamicSliceAssetPath, inputPlatforms);
// Verify the function outputs
@@ -971,7 +971,7 @@ namespace UnitTest
TEST_F(AssetSeedManagerTest, AddSeedAssetForValidPlatforms_NoPlatformsValid_NoSeedAdded)
{
using namespace AzFramework;
- PlatformFlags inputPlatforms = PlatformFlags::Platform_OSX;
+ PlatformFlags inputPlatforms = PlatformFlags::Platform_MAC;
AZStd::pair result = m_assetSeedManager->AddSeedAssetForValidPlatforms(TestDynamicSliceAssetPath, inputPlatforms);
// Verify the function outputs
@@ -985,30 +985,30 @@ namespace UnitTest
TEST_F(AssetSeedManagerTest, Valid_Seed_Remove_ForAllPlatform_OK)
{
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
- m_assetSeedManager->RemoveSeedAsset(assets[0].ToString(), AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->RemoveSeedAsset(assets[0].ToString(), AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
const AzFramework::AssetSeedList& seedList = m_assetSeedManager->GetAssetSeedList();
EXPECT_EQ(seedList.size(), 0);
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
- m_assetSeedManager->RemoveSeedAsset("asset0.txt", AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->RemoveSeedAsset("asset0.txt", AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
const AzFramework::AssetSeedList& secondSeedList = m_assetSeedManager->GetAssetSeedList();
EXPECT_EQ(secondSeedList.size(), 0);
}
TEST_F(AssetSeedManagerTest, Valid_Seed_Remove_ForSpecificPlatform_OK)
{
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
- m_assetSeedManager->RemoveSeedAsset(assets[0].ToString(), AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->RemoveSeedAsset(assets[0].ToString(), AzFramework::PlatformFlags::Platform_MAC);
const AzFramework::AssetSeedList& seedList = m_assetSeedManager->GetAssetSeedList();
EXPECT_EQ(seedList.size(), 1);
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
m_assetSeedManager->RemoveSeedAsset("asset0.txt", AzFramework::PlatformFlags::Platform_PC);
const AzFramework::AssetSeedList& secondSeedList = m_assetSeedManager->GetAssetSeedList();
@@ -1017,14 +1017,14 @@ namespace UnitTest
TEST_F(AssetSeedManagerTest, Invalid_NotRemove_SeedForAllPlatform_Ok)
{
- m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->AddSeedAsset(assets[0], AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
- m_assetSeedManager->RemoveSeedAsset(assets[1].ToString(), AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->RemoveSeedAsset(assets[1].ToString(), AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
const AzFramework::AssetSeedList& seedList = m_assetSeedManager->GetAssetSeedList();
EXPECT_EQ(seedList.size(), 1);
- m_assetSeedManager->RemoveSeedAsset("asset1.txt", AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_OSX);
+ m_assetSeedManager->RemoveSeedAsset("asset1.txt", AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_MAC);
const AzFramework::AssetSeedList& secondSeedList = m_assetSeedManager->GetAssetSeedList();
EXPECT_EQ(secondSeedList.size(), 1);
}
diff --git a/Code/Framework/AzToolsFramework/Tests/AssetSystemMocks.h b/Code/Framework/AzToolsFramework/Tests/AssetSystemMocks.h
index 1e01229d73..8a394d3ab5 100644
--- a/Code/Framework/AzToolsFramework/Tests/AssetSystemMocks.h
+++ b/Code/Framework/AzToolsFramework/Tests/AssetSystemMocks.h
@@ -25,6 +25,8 @@ namespace UnitTests
MOCK_METHOD0(GetAbsoluteDevGameFolderPath, const char* ());
MOCK_METHOD0(GetAbsoluteDevRootFolderPath, const char* ());
MOCK_METHOD2(GetRelativeProductPathFromFullSourceOrProductPath, bool(const AZStd::string& fullPath, AZStd::string& relativeProductPath));
+ MOCK_METHOD3(GenerateRelativeSourcePath,
+ bool(const AZStd::string& sourcePath, AZStd::string& relativePath, AZStd::string& watchFolder));
MOCK_METHOD2(GetFullSourcePathFromRelativeProductPath, bool(const AZStd::string& relPath, AZStd::string& fullSourcePath));
MOCK_METHOD5(GetAssetInfoById, bool(const AZ::Data::AssetId& assetId, const AZ::Data::AssetType& assetType, const AZStd::string& platformName, AZ::Data::AssetInfo& assetInfo, AZStd::string& rootFilePath));
MOCK_METHOD3(GetSourceInfoBySourcePath, bool(const char* sourcePath, AZ::Data::AssetInfo& assetInfo, AZStd::string& watchFolder));
diff --git a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp
index 4cc98106d6..0b705338d9 100644
--- a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp
+++ b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp
@@ -184,13 +184,13 @@ namespace UnitTest
TEST_F(PlatformAddressedAssetCatalogManagerTest, PlatformAddressedAssetCatalogManager_CatalogExistsChecks_Success)
{
- EXPECT_EQ(AzToolsFramework::PlatformAddressedAssetCatalog::CatalogExists(AzFramework::PlatformId::ES3), true);
- AZStd::string es3CatalogPath = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ES3);
- if (AZ::IO::FileIOBase::GetInstance()->Exists(es3CatalogPath.c_str()))
+ EXPECT_EQ(AzToolsFramework::PlatformAddressedAssetCatalog::CatalogExists(AzFramework::PlatformId::ANDROID_ID), true);
+ AZStd::string androidCatalogPath = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ANDROID_ID);
+ if (AZ::IO::FileIOBase::GetInstance()->Exists(androidCatalogPath.c_str()))
{
- AZ::IO::FileIOBase::GetInstance()->Remove(es3CatalogPath.c_str());
+ AZ::IO::FileIOBase::GetInstance()->Remove(androidCatalogPath.c_str());
}
- EXPECT_EQ(AzToolsFramework::PlatformAddressedAssetCatalog::CatalogExists(AzFramework::PlatformId::ES3), false);
+ EXPECT_EQ(AzToolsFramework::PlatformAddressedAssetCatalog::CatalogExists(AzFramework::PlatformId::ANDROID_ID), false);
}
class PlatformAddressedAssetCatalogMessageTest : public AzToolsFramework::PlatformAddressedAssetCatalog
@@ -251,7 +251,7 @@ namespace UnitTest
AzFramework::AssetSystem::NetworkAssetUpdateInterface* notificationInterface = AZ::Interface::Get();
EXPECT_NE(notificationInterface, nullptr);
- auto* mockCatalog = new ::testing::NiceMock(AzFramework::PlatformId::ES3);
+ auto* mockCatalog = new ::testing::NiceMock(AzFramework::PlatformId::ANDROID_ID);
AZStd::unique_ptr< ::testing::NiceMock> catalogHolder;
catalogHolder.reset(mockCatalog);
@@ -259,7 +259,7 @@ namespace UnitTest
EXPECT_CALL(*mockCatalog, AssetChanged(testing::_)).Times(0);
notificationInterface->AssetChanged(testMessage);
- testMessage.m_platform = "es3";
+ testMessage.m_platform = "android";
EXPECT_CALL(*mockCatalog, AssetChanged(testing::_)).Times(1);
notificationInterface->AssetChanged(testMessage);
@@ -270,7 +270,7 @@ namespace UnitTest
EXPECT_CALL(*mockCatalog, AssetRemoved(testing::_)).Times(0);
notificationInterface->AssetRemoved(testMessage);
- testMessage.m_platform = "es3";
+ testMessage.m_platform = "android";
EXPECT_CALL(*mockCatalog, AssetRemoved(testing::_)).Times(1);
notificationInterface->AssetRemoved(testMessage);
}
diff --git a/Code/Framework/AzToolsFramework/Tests/SliceStabilityTests/SliceStabilityTestFramework.h b/Code/Framework/AzToolsFramework/Tests/SliceStabilityTests/SliceStabilityTestFramework.h
index 57ac16673d..7d3d312cdb 100644
--- a/Code/Framework/AzToolsFramework/Tests/SliceStabilityTests/SliceStabilityTestFramework.h
+++ b/Code/Framework/AzToolsFramework/Tests/SliceStabilityTests/SliceStabilityTestFramework.h
@@ -149,6 +149,9 @@ namespace UnitTest
const char* GetAbsoluteDevGameFolderPath() override { return ""; }
const char* GetAbsoluteDevRootFolderPath() override { return ""; }
bool GetRelativeProductPathFromFullSourceOrProductPath([[maybe_unused]] const AZStd::string& fullPath, [[maybe_unused]] AZStd::string& relativeProductPath) override { return false; }
+ bool GenerateRelativeSourcePath(
+ [[maybe_unused]] const AZStd::string& sourcePath, [[maybe_unused]] AZStd::string& relativePath,
+ [[maybe_unused]] AZStd::string& watchFolder) override { return false; }
bool GetFullSourcePathFromRelativeProductPath([[maybe_unused]] const AZStd::string& relPath, [[maybe_unused]] AZStd::string& fullSourcePath) override { return false; }
bool GetAssetInfoById([[maybe_unused]] const AZ::Data::AssetId& assetId, [[maybe_unused]] const AZ::Data::AssetType& assetType, [[maybe_unused]] const AZStd::string& platformName, [[maybe_unused]] AZ::Data::AssetInfo& assetInfo, [[maybe_unused]] AZStd::string& rootFilePath) override { return false; }
bool GetSourceInfoBySourcePath(const char* sourcePath, AZ::Data::AssetInfo& assetInfo, AZStd::string& watchFolder) override;
diff --git a/Code/Framework/Tests/PlatformHelper.cpp b/Code/Framework/Tests/PlatformHelper.cpp
index 1ad7794c58..9a23fb8d25 100644
--- a/Code/Framework/Tests/PlatformHelper.cpp
+++ b/Code/Framework/Tests/PlatformHelper.cpp
@@ -30,11 +30,11 @@ TEST_F(PlatformHelperTest, SinglePlatformFlags_PlatformId_Valid)
TEST_F(PlatformHelperTest, MultiplePlatformFlags_PlatformId_Valid)
{
- AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ES3;
+ AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID;
auto platforms = AzFramework::PlatformHelper::GetPlatforms(platformFlags);
EXPECT_EQ(platforms.size(), 2);
EXPECT_EQ(platforms[0], "pc");
- EXPECT_EQ(platforms[1], "es3");
+ EXPECT_EQ(platforms[1], "android");
}
TEST_F(PlatformHelperTest, SpecialAllFlag_PlatformId_Valid)
@@ -42,7 +42,7 @@ TEST_F(PlatformHelperTest, SpecialAllFlag_PlatformId_Valid)
AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_ALL;
auto platforms = AzFramework::PlatformHelper::GetPlatformsInterpreted(platformFlags);
EXPECT_EQ(platforms.size(), AzFramework::NumPlatforms);
- EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "es3", "ios", "osx_gl", "provo", "salem", "jasper", "server"));
+ EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "android", "ios", "mac", "provo", "salem", "jasper", "server"));
}
TEST_F(PlatformHelperTest, SpecialAllClientFlag_PlatformId_Valid)
@@ -50,7 +50,7 @@ TEST_F(PlatformHelperTest, SpecialAllClientFlag_PlatformId_Valid)
AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_ALL_CLIENT;
auto platforms = AzFramework::PlatformHelper::GetPlatformsInterpreted(platformFlags);
EXPECT_EQ(platforms.size(), AzFramework::NumClientPlatforms);
- EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "es3", "ios", "osx_gl", "provo", "salem", "jasper"));
+ EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "android", "ios", "mac", "provo", "salem", "jasper"));
}
TEST_F(PlatformHelperTest, InvalidPlatformFlags_PlatformId_Empty)
diff --git a/Code/Framework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp b/Code/Framework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp
new file mode 100644
index 0000000000..1fa50fff52
--- /dev/null
+++ b/Code/Framework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp
@@ -0,0 +1,158 @@
+/*
+* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+* its licensors.
+*
+* For complete copyright and license terms please see the LICENSE at the root of this
+* distribution (the "License"). All use of this software is governed by the License,
+* or, if provided, by the license below or the license accompanying this file. Do not
+* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*
+*/
+
+#include
+#include
+#include
+#include
+#include
+
+namespace UnitTest
+{
+ class TestApplication : public AzFramework::Application
+ {
+ public:
+ // ComponentApplication
+ void SetSettingsRegistrySpecializations(AZ::SettingsRegistryInterface::Specializations& specializations) override
+ {
+ Application::SetSettingsRegistrySpecializations(specializations);
+ specializations.Append("test");
+ specializations.Append("spawnable");
+ }
+ };
+
+ class SpawnableEntitiesManagerTest : public AllocatorsFixture
+ {
+ public:
+ void SetUp() override
+ {
+ AllocatorsFixture::SetUp();
+
+ m_application = new TestApplication();
+ AZ::ComponentApplication::Descriptor descriptor;
+ m_application->Start(descriptor);
+
+ m_spawnable = aznew AzFramework::Spawnable(
+ AZ::Data::AssetId::CreateString("{EB2E8A2B-F253-4A90-BBF4-55F2EED786B8}:0"), AZ::Data::AssetData::AssetStatus::Ready);
+ m_spawnableAsset = new AZ::Data::Asset(m_spawnable, AZ::Data::AssetLoadBehavior::Default);
+ m_ticket = new AzFramework::EntitySpawnTicket(*m_spawnableAsset);
+
+ auto managerInterface = AzFramework::SpawnableEntitiesInterface::Get();
+ m_manager = azrtti_cast(managerInterface);
+ }
+
+ void TearDown() override
+ {
+ delete m_ticket;
+ m_ticket = nullptr;
+ // One more tick on the spawnable entities manager in order to delete the ticket fully.
+ m_manager->ProcessQueue();
+
+ delete m_spawnableAsset;
+ m_spawnableAsset = nullptr;
+ // This will also delete m_spawnable.
+
+ delete m_application;
+ m_application = nullptr;
+
+ AllocatorsFixture::TearDown();
+ }
+
+ void FillSpawnable(size_t numElements)
+ {
+ AzFramework::Spawnable::EntityList& entities = m_spawnable->GetEntities();
+ entities.reserve(numElements);
+ for (size_t i=0; i());
+ }
+ }
+
+ protected:
+ AZ::Data::Asset* m_spawnableAsset { nullptr };
+ AzFramework::SpawnableEntitiesManager* m_manager { nullptr };
+ AzFramework::EntitySpawnTicket* m_ticket { nullptr };
+ AzFramework::Spawnable* m_spawnable { nullptr };
+ TestApplication* m_application { nullptr };
+ };
+
+ TEST_F(SpawnableEntitiesManagerTest, SpawnAllEntities_Call_AllEntitiesSpawned)
+ {
+ static constexpr size_t NumEntities = 4;
+ FillSpawnable(NumEntities);
+
+ size_t spawnedEntitiesCount = 0;
+ auto callback =
+ [&spawnedEntitiesCount](AzFramework::EntitySpawnTicket&, AzFramework::SpawnableConstEntityContainerView entities)
+ {
+ spawnedEntitiesCount += entities.size();
+ };
+ m_manager->SpawnAllEntities(*m_ticket, {}, AZStd::move(callback));
+ m_manager->ProcessQueue();
+
+ EXPECT_EQ(NumEntities, spawnedEntitiesCount);
+ }
+
+ TEST_F(SpawnableEntitiesManagerTest, ListEntities_Call_AllEntitiesAreReported)
+ {
+ static constexpr size_t NumEntities = 4;
+ FillSpawnable(NumEntities);
+
+ bool allValidEntityIds = true;
+ size_t spawnedEntitiesCount = 0;
+ auto callback = [&allValidEntityIds, &spawnedEntitiesCount]
+ (AzFramework::EntitySpawnTicket&, AzFramework::SpawnableConstEntityContainerView entities)
+ {
+ for (auto&& entity : entities)
+ {
+ allValidEntityIds = entity->GetId().IsValid() && allValidEntityIds;
+ }
+ spawnedEntitiesCount += entities.size();
+ };
+
+ m_manager->SpawnAllEntities(*m_ticket);
+ m_manager->ListEntities(*m_ticket, AZStd::move(callback));
+ m_manager->ProcessQueue();
+
+ EXPECT_TRUE(allValidEntityIds);
+ EXPECT_EQ(NumEntities, spawnedEntitiesCount);
+ }
+
+ TEST_F(SpawnableEntitiesManagerTest, ListIndicesAndEntities_Call_AllEntitiesAreReportedAndIncrementByOne)
+ {
+ static constexpr size_t NumEntities = 4;
+ FillSpawnable(NumEntities);
+
+ bool allValidEntityIds = true;
+ size_t spawnedEntitiesCount = 0;
+ auto callback = [&allValidEntityIds, &spawnedEntitiesCount]
+ (AzFramework::EntitySpawnTicket&, AzFramework::SpawnableConstIndexEntityContainerView entities)
+ {
+ for (auto&& indexEntityPair : entities)
+ {
+ // Since all entities are spawned a single time, the indices should be 0..NumEntities.
+ if (indexEntityPair.GetIndex() == spawnedEntitiesCount)
+ {
+ spawnedEntitiesCount++;
+ }
+ allValidEntityIds = indexEntityPair.GetEntity()->GetId().IsValid() && allValidEntityIds;
+ }
+ };
+
+ m_manager->SpawnAllEntities(*m_ticket);
+ m_manager->ListIndicesAndEntities(*m_ticket, AZStd::move(callback));
+ m_manager->ProcessQueue();
+
+ EXPECT_TRUE(allValidEntityIds);
+ EXPECT_EQ(NumEntities, spawnedEntitiesCount);
+ }
+} // namespace UnitTest
diff --git a/Code/Framework/Tests/frameworktests_files.cmake b/Code/Framework/Tests/frameworktests_files.cmake
index 197bcc9fce..3fc84eb788 100644
--- a/Code/Framework/Tests/frameworktests_files.cmake
+++ b/Code/Framework/Tests/frameworktests_files.cmake
@@ -11,6 +11,7 @@
set(FILES
../AzCore/Tests/Main.cpp
+ Spawnable/SpawnableEntitiesManagerTests.cpp
ArchiveCompressionTests.cpp
ArchiveTests.cpp
BehaviorEntityTests.cpp
diff --git a/Code/Sandbox/Editor/CryEdit.cpp b/Code/Sandbox/Editor/CryEdit.cpp
index 0bbc48d5f9..5fd6eb2692 100644
--- a/Code/Sandbox/Editor/CryEdit.cpp
+++ b/Code/Sandbox/Editor/CryEdit.cpp
@@ -69,6 +69,7 @@ AZ_POP_DISABLE_WARNING
#include
#include
#include
+#include
#include
// AzQtComponents
@@ -3105,6 +3106,15 @@ CCryEditApp::ECreateLevelResult CCryEditApp::CreateLevel(const QString& levelNam
GetIEditor()->GetDocument()->SetPathName(fullyQualifiedLevelName);
GetIEditor()->GetGameEngine()->SetLevelPath(levelPath);
+ if (usePrefabSystemForLevels)
+ {
+ auto* service = AZ::Interface::Get();
+ if (service)
+ {
+ service->CreateNewLevelPrefab((const char*)fullyQualifiedLevelName.toUtf8());
+ }
+ }
+
if (GetIEditor()->GetDocument()->Save())
{
if (!usePrefabSystemForLevels)
diff --git a/Code/Sandbox/Editor/CryEditPy.cpp b/Code/Sandbox/Editor/CryEditPy.cpp
index 135dd9878c..edbeccb04f 100644
--- a/Code/Sandbox/Editor/CryEditPy.cpp
+++ b/Code/Sandbox/Editor/CryEditPy.cpp
@@ -533,7 +533,7 @@ namespace AzToolsFramework
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation);
behaviorContext->EnumProperty("SystemConfigPlatform_Pc")
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation);
- behaviorContext->EnumProperty("SystemConfigPlatform_OsxGl")
+ behaviorContext->EnumProperty("SystemConfigPlatform_Mac")
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation);
behaviorContext->EnumProperty("SystemConfigPlatform_OsxMetal")
->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation);
diff --git a/Code/Tools/AssetBundler/tests/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetBundler/tests/AssetProcessorPlatformConfig.setreg
index 81fcdbcf12..ac546d4f39 100644
--- a/Code/Tools/AssetBundler/tests/AssetProcessorPlatformConfig.setreg
+++ b/Code/Tools/AssetBundler/tests/AssetProcessorPlatformConfig.setreg
@@ -3,7 +3,7 @@
"AssetProcessor": {
"Settings": {
"Platforms": {
- "es3": "enabled"
+ "android": "enabled"
}
}
}
diff --git a/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp b/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp
index f2477782d0..be6cf61c29 100644
--- a/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp
+++ b/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp
@@ -150,7 +150,7 @@ namespace AssetBundler
AzFramework::PlatformFlags platformFlags = GetEnabledPlatformFlags(m_data->m_testEngineRoot.c_str(), m_data->m_testEngineRoot.c_str(), DummyProjectName);
AzFramework::PlatformFlags hostPlatformFlag = AzFramework::PlatformHelper::GetPlatformFlag(AzToolsFramework::AssetSystem::GetHostAssetPlatform());
- AzFramework::PlatformFlags expectedFlags = AzFramework::PlatformFlags::Platform_ES3 | AzFramework::PlatformFlags::Platform_IOS | AzFramework::PlatformFlags::Platform_PROVO | hostPlatformFlag;
+ AzFramework::PlatformFlags expectedFlags = AzFramework::PlatformFlags::Platform_ANDROID | AzFramework::PlatformFlags::Platform_IOS | AzFramework::PlatformFlags::Platform_PROVO | hostPlatformFlag;
ASSERT_EQ(platformFlags, expectedFlags);
}
diff --git a/Code/Tools/AssetBundler/tests/tests_main.cpp b/Code/Tools/AssetBundler/tests/tests_main.cpp
index 53b19c5eb4..71046a576a 100644
--- a/Code/Tools/AssetBundler/tests/tests_main.cpp
+++ b/Code/Tools/AssetBundler/tests/tests_main.cpp
@@ -40,14 +40,14 @@ namespace AssetBundler
TEST_F(AssetBundlerBatchUtilsTest, SplitFilename_MacFile_OutputBaseNameAndPlatform)
{
- AZStd::string filePath = "assetInfoFile_osx_gl.xml";
+ AZStd::string filePath = "assetInfoFile_mac.xml";
AZStd::string baseFilename;
AZStd::string platformIdentifier;
AzToolsFramework::SplitFilename(filePath, baseFilename, platformIdentifier);
ASSERT_EQ(baseFilename, "assetInfoFile");
- ASSERT_EQ(platformIdentifier, "osx_gl");
+ ASSERT_EQ(platformIdentifier, "mac");
}
TEST_F(AssetBundlerBatchUtilsTest, SplitFilename_PcFile_OutputBaseNameAndPlatform)
@@ -64,14 +64,14 @@ namespace AssetBundler
TEST_F(AssetBundlerBatchUtilsTest, SplitFilename_MacFileWithUnderScoreInFileName_OutputBaseNameAndPlatform)
{
- AZStd::string filePath = "assetInfoFile_test_osx_gl.xml";
+ AZStd::string filePath = "assetInfoFile_test_mac.xml";
AZStd::string baseFilename;
AZStd::string platformIdentifier;
AzToolsFramework::SplitFilename(filePath, baseFilename, platformIdentifier);
ASSERT_EQ(baseFilename, "assetInfoFile_test");
- ASSERT_EQ(platformIdentifier, "osx_gl");
+ ASSERT_EQ(platformIdentifier, "mac");
}
TEST_F(AssetBundlerBatchUtilsTest, SplitFilename_PcFileWithUnderScoreInFileName_OutputBaseNameAndPlatform)
diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp
index c477ec2c9e..4f8b4b9144 100644
--- a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp
+++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp
@@ -78,17 +78,17 @@ namespace AssetBuilderSDK
{
return AssetBuilderSDK::Platform_PC;
}
- if (azstricmp(newPlatformName, "es3") == 0)
+ if (azstricmp(newPlatformName, "android") == 0)
{
- return AssetBuilderSDK::Platform_ES3;
+ return AssetBuilderSDK::Platform_ANDROID;
}
if (azstricmp(newPlatformName, "ios") == 0)
{
return AssetBuilderSDK::Platform_IOS;
}
- if (azstricmp(newPlatformName, "osx_gl") == 0)
+ if (azstricmp(newPlatformName, "mac") == 0)
{
- return AssetBuilderSDK::Platform_OSX;
+ return AssetBuilderSDK::Platform_MAC;
}
if (azstricmp(newPlatformName, "provo") == 0)
{
@@ -115,12 +115,12 @@ namespace AssetBuilderSDK
{
case AssetBuilderSDK::Platform_PC:
return "pc";
- case AssetBuilderSDK::Platform_ES3:
- return "es3";
+ case AssetBuilderSDK::Platform_ANDROID:
+ return "android";
case AssetBuilderSDK::Platform_IOS:
return "ios";
- case AssetBuilderSDK::Platform_OSX:
- return "osx_gl";
+ case AssetBuilderSDK::Platform_MAC:
+ return "mac";
case AssetBuilderSDK::Platform_PROVO:
return "provo";
case AssetBuilderSDK::Platform_SALEM:
diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h
index a11cc9a80d..126ecda2ba 100644
--- a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h
+++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h
@@ -148,15 +148,15 @@ namespace AssetBuilderSDK
{
Platform_NONE = 0x00,
Platform_PC = 0x01,
- Platform_ES3 = 0x02,
+ Platform_ANDROID = 0x02,
Platform_IOS = 0x04,
- Platform_OSX = 0x08,
+ Platform_MAC = 0x08,
Platform_PROVO = 0x20,
Platform_SALEM = 0x40,
Platform_JASPER = 0x80,
//! if you add a new platform entry to this enum, you must add it to allplatforms as well otherwise that platform would not be considered valid.
- AllPlatforms = Platform_PC | Platform_ES3 | Platform_IOS | Platform_OSX | Platform_PROVO | Platform_SALEM | Platform_JASPER
+ AllPlatforms = Platform_PC | Platform_ANDROID | Platform_IOS | Platform_MAC | Platform_PROVO | Platform_SALEM | Platform_JASPER
};
#endif // defined(ENABLE_LEGACY_PLATFORMFLAGS_SUPPORT)
//! Map data structure to holder parameters that are passed into a job for ProcessJob requests.
@@ -503,7 +503,7 @@ namespace AssetBuilderSDK
AZ_CLASS_ALLOCATOR(PlatformInfo, AZ::SystemAllocator, 0);
AZ_TYPE_INFO(PlatformInfo, "{F7DA39A5-C319-4552-954B-3479E2454D3F}");
- AZStd::string m_identifier; ///< like "pc" or "es3" or "ios"...
+ AZStd::string m_identifier; ///< like "pc" or "android" or "ios"...
AZStd::unordered_set m_tags; ///< The tags like "console" or "tools" on that platform
PlatformInfo() = default;
diff --git a/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.cpp b/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.cpp
index 196f6b0543..8bc6d0b6f7 100644
--- a/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.cpp
+++ b/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.cpp
@@ -655,6 +655,80 @@ namespace AssetProcessor
return true;
}
+ bool AssetCatalog::GenerateRelativeSourcePath(
+ const AZStd::string& sourcePath, AZStd::string& relativePath, AZStd::string& rootFolder)
+ {
+ QString normalizedSourcePath = AssetUtilities::NormalizeFilePath(sourcePath.c_str());
+ QDir inputPath(normalizedSourcePath);
+ QString scanFolder;
+ QString relativeName;
+
+ bool validResult = false;
+
+ AZ_TracePrintf(AssetProcessor::DebugChannel, "ProcessGenerateRelativeSourcePathRequest: %s...\n", sourcePath.c_str());
+
+ if (sourcePath.empty())
+ {
+ // For an empty input path, do nothing, we'll return an empty, invalid result.
+ // (We check fullPath instead of inputPath, because an empty fullPath actually produces "." for inputPath)
+ }
+ else if (inputPath.isAbsolute())
+ {
+ // For an absolute path, try to convert it to a relative path, based on the existing scan folders.
+ // To get the inputPath, we use absolutePath() instead of path() so that any . or .. entries get collapsed.
+ validResult = m_platformConfig->ConvertToRelativePath(inputPath.absolutePath(), relativeName, scanFolder);
+ }
+ else if (inputPath.isRelative())
+ {
+ // For a relative path, concatenate it with each scan folder, and see if a valid relative path emerges.
+ int scanFolders = m_platformConfig->GetScanFolderCount();
+ for (int scanIdx = 0; scanIdx < scanFolders; scanIdx++)
+ {
+ auto& scanInfo = m_platformConfig->GetScanFolderAt(scanIdx);
+ QDir possibleRoot(scanInfo.ScanPath());
+ QDir possibleAbsolutePath = possibleRoot.filePath(normalizedSourcePath);
+ // To get the inputPath, we use absolutePath() instead of path() so that any . or .. entries get collapsed.
+ if (m_platformConfig->ConvertToRelativePath(possibleAbsolutePath.absolutePath(), relativeName, scanFolder))
+ {
+ validResult = true;
+ break;
+ }
+ }
+ }
+
+ // The input has produced a valid relative path. However, the path might match multiple nested scan folders,
+ // so look to see if a higher-priority folder has a better match.
+ if (validResult)
+ {
+ QString overridingFile = m_platformConfig->GetOverridingFile(relativeName, scanFolder);
+
+ if (!overridingFile.isEmpty())
+ {
+ overridingFile = AssetUtilities::NormalizeFilePath(overridingFile);
+ validResult = m_platformConfig->ConvertToRelativePath(overridingFile, relativeName, scanFolder);
+ }
+ }
+
+ if (!validResult)
+ {
+ // if we are here it means we have failed to determine the relativePath, so we will send back the original path
+ AZ_TracePrintf(AssetProcessor::DebugChannel,
+ "GenerateRelativeSourcePath found no valid result, returning original path: %s...\n", sourcePath.c_str());
+
+ rootFolder.clear();
+ relativePath.clear();
+ relativePath = sourcePath;
+ return false;
+ }
+
+ relativePath = relativeName.toUtf8().data();
+ rootFolder = scanFolder.toUtf8().data();
+
+ AZ_Assert(!relativePath.empty(), "ConvertToRelativePath returned true, but relativePath is empty");
+
+ return true;
+ }
+
bool AssetCatalog::GetFullSourcePathFromRelativeProductPath(const AZStd::string& relPath, AZStd::string& fullSourcePath)
{
ProcessGetFullSourcePathFromRelativeProductPathRequest(relPath, fullSourcePath);
diff --git a/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.h b/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.h
index f515fa3658..13dc7892b1 100644
--- a/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.h
+++ b/Code/Tools/AssetProcessor/native/AssetManager/AssetCatalog.h
@@ -95,6 +95,12 @@ namespace AssetProcessor
const char* GetAbsoluteDevGameFolderPath() override;
const char* GetAbsoluteDevRootFolderPath() override;
bool GetRelativeProductPathFromFullSourceOrProductPath(const AZStd::string& fullPath, AZStd::string& relativeProductPath) override;
+
+ //! Given a partial or full source file path, respond with its relative path and the watch folder it is relative to.
+ //! The input source path does not need to exist, so this can be used for new files that haven't been saved yet.
+ bool GenerateRelativeSourcePath(
+ const AZStd::string& sourcePath, AZStd::string& relativePath, AZStd::string& watchFolder) override;
+
bool GetFullSourcePathFromRelativeProductPath(const AZStd::string& relPath, AZStd::string& fullSourcePath) override;
bool GetAssetInfoById(const AZ::Data::AssetId& assetId, const AZ::Data::AssetType& assetType, const AZStd::string& platformName, AZ::Data::AssetInfo& assetInfo, AZStd::string& rootFilePath) override;
bool GetSourceInfoBySourcePath(const char* sourcePath, AZ::Data::AssetInfo& assetInfo, AZStd::string& watchFolder) override;
diff --git a/Code/Tools/AssetProcessor/native/AssetManager/AssetRequestHandler.cpp b/Code/Tools/AssetProcessor/native/AssetManager/AssetRequestHandler.cpp
index 97b28691dc..2d22d3d136 100644
--- a/Code/Tools/AssetProcessor/native/AssetManager/AssetRequestHandler.cpp
+++ b/Code/Tools/AssetProcessor/native/AssetManager/AssetRequestHandler.cpp
@@ -104,6 +104,27 @@ namespace
return GetRelativeProductPathFromFullSourceOrProductPathResponse(relPathFound, relProductPath);
}
+ GenerateRelativeSourcePathResponse HandleGenerateRelativeSourcePathRequest(
+ MessageData messageData)
+ {
+ bool relPathFound = false;
+ AZStd::string relPath;
+ AZStd::string watchFolder;
+
+ AzToolsFramework::AssetSystemRequestBus::BroadcastResult(
+ relPathFound, &AzToolsFramework::AssetSystemRequestBus::Events::GenerateRelativeSourcePath,
+ messageData.m_message->m_sourcePath, relPath, watchFolder);
+
+ if (!relPathFound)
+ {
+ AZ_TracePrintf(
+ AssetProcessor::ConsoleChannel, "Could not find relative source path for the source file (%s).",
+ messageData.m_message->m_sourcePath.c_str());
+ }
+
+ return GenerateRelativeSourcePathResponse(relPathFound, relPath, watchFolder);
+ }
+
SourceAssetInfoResponse HandleSourceAssetInfoRequest(MessageData messageData)
{
SourceAssetInfoResponse response;
@@ -407,6 +428,7 @@ AssetRequestHandler::AssetRequestHandler()
m_requestRouter.RegisterMessageHandler(&HandleGetFullSourcePathFromRelativeProductPathRequest);
m_requestRouter.RegisterMessageHandler(&HandleGetRelativeProductPathFromFullSourceOrProductPathRequest);
+ m_requestRouter.RegisterMessageHandler(&HandleGenerateRelativeSourcePathRequest);
m_requestRouter.RegisterMessageHandler(&HandleSourceAssetInfoRequest);
m_requestRouter.RegisterMessageHandler(&HandleSourceAssetProductsInfoRequest);
m_requestRouter.RegisterMessageHandler(&HandleGetScanFoldersRequest);
diff --git a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h
index 88f74c886b..3dc8bd7a00 100644
--- a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h
+++ b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h
@@ -57,6 +57,9 @@ namespace AzFramework
class GetRelativeProductPathFromFullSourceOrProductPathRequest;
class GetRelativeProductPathFromFullSourceOrProductPathResponse;
+ class GenerateRelativeSourcePathRequest;
+ class GenerateRelativeSourcePathResponse;
+
class GetFullSourcePathFromRelativeProductPathRequest;
class GetFullSourcePathFromRelativeProductPathResponse;
class AssetNotificationMessage;
@@ -104,6 +107,8 @@ namespace AssetProcessor
using GetAbsoluteAssetDatabaseLocationResponse = AzToolsFramework::AssetSystem::GetAbsoluteAssetDatabaseLocationResponse;
using GetRelativeProductPathFromFullSourceOrProductPathRequest = AzFramework::AssetSystem::GetRelativeProductPathFromFullSourceOrProductPathRequest;
using GetRelativeProductPathFromFullSourceOrProductPathResponse = AzFramework::AssetSystem::GetRelativeProductPathFromFullSourceOrProductPathResponse;
+ using GenerateRelativeSourcePathRequest = AzFramework::AssetSystem::GenerateRelativeSourcePathRequest;
+ using GenerateRelativeSourcePathResponse = AzFramework::AssetSystem::GenerateRelativeSourcePathResponse;
using GetFullSourcePathFromRelativeProductPathRequest = AzFramework::AssetSystem::GetFullSourcePathFromRelativeProductPathRequest;
using GetFullSourcePathFromRelativeProductPathResponse = AzFramework::AssetSystem::GetFullSourcePathFromRelativeProductPathResponse;
diff --git a/Code/Tools/AssetProcessor/native/tests/AssetCatalog/AssetCatalogUnitTests.cpp b/Code/Tools/AssetProcessor/native/tests/AssetCatalog/AssetCatalogUnitTests.cpp
index 3d9ecd3f5e..303f0ad0e8 100644
--- a/Code/Tools/AssetProcessor/native/tests/AssetCatalog/AssetCatalogUnitTests.cpp
+++ b/Code/Tools/AssetProcessor/native/tests/AssetCatalog/AssetCatalogUnitTests.cpp
@@ -224,20 +224,28 @@ namespace AssetProcessor
dbConn->SetScanFolder(newScanFolder);
}
- // build some default configs.
- void BuildConfig(const QDir& tempPath, AssetDatabaseConnection* dbConn, PlatformConfiguration& config)
+ virtual void AddScanFolders(
+ const QDir& tempPath, AssetDatabaseConnection* dbConn, PlatformConfiguration& config,
+ const AZStd::vector& platforms)
{
- config.EnablePlatform({ "pc" ,{ "desktop", "renderer" } }, true);
- config.EnablePlatform({ "es3" ,{ "mobile", "renderer" } }, true);
- config.EnablePlatform({ "fandango" ,{ "console", "renderer" } }, false);
- AZStd::vector platforms;
- config.PopulatePlatformsForScanFolder(platforms);
// PATH DisplayName PortKey root recurse platforms order
AddScanFolder(ScanFolderInfo(tempPath.filePath("subfolder4"), "subfolder4", "subfolder4", false, false, platforms, -6), config, dbConn); // subfolder 4 overrides subfolder3
AddScanFolder(ScanFolderInfo(tempPath.filePath("subfolder3"), "subfolder3", "subfolder3", false, false, platforms, -5), config, dbConn); // subfolder 3 overrides subfolder2
AddScanFolder(ScanFolderInfo(tempPath.filePath("subfolder2"), "subfolder2", "subfolder2", false, true, platforms, -2), config, dbConn); // subfolder 2 overrides subfolder1
AddScanFolder(ScanFolderInfo(tempPath.filePath("subfolder1"), "subfolder1", "subfolder1", false, true, platforms, -1), config, dbConn); // subfolder1 overrides root
AddScanFolder(ScanFolderInfo(tempPath.absolutePath(), "temp", "tempfolder", true, false, platforms, 0), config, dbConn); // add the root
+ }
+
+ // build some default configs.
+ void BuildConfig(const QDir& tempPath, AssetDatabaseConnection* dbConn, PlatformConfiguration& config)
+ {
+ config.EnablePlatform({ "pc" ,{ "desktop", "renderer" } }, true);
+ config.EnablePlatform({ "android" ,{ "mobile", "renderer" } }, true);
+ config.EnablePlatform({ "fandango" ,{ "console", "renderer" } }, false);
+ AZStd::vector platforms;
+ config.PopulatePlatformsForScanFolder(platforms);
+
+ AddScanFolders(tempPath, dbConn, config, platforms);
config.AddMetaDataType("exportsettings", QString());
@@ -246,22 +254,22 @@ namespace AssetProcessor
AssetRecognizer rec;
AssetPlatformSpec specpc;
- AssetPlatformSpec speces3;
+ AssetPlatformSpec specandroid;
- speces3.m_extraRCParams = "somerandomparam";
+ specandroid.m_extraRCParams = "somerandomparam";
rec.m_name = "random files";
rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.random", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
rec.m_platformSpecs.insert("pc", specpc);
config.AddRecognizer(rec);
specpc.m_extraRCParams = ""; // blank must work
- speces3.m_extraRCParams = "testextraparams";
+ specandroid.m_extraRCParams = "testextraparams";
const char* builderTxt1Name = "txt files";
rec.m_name = builderTxt1Name;
rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.txt", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
rec.m_platformSpecs.insert("pc", specpc);
- rec.m_platformSpecs.insert("es3", speces3);
+ rec.m_platformSpecs.insert("android", specandroid);
config.AddRecognizer(rec);
@@ -272,7 +280,7 @@ namespace AssetProcessor
ignore_rec.m_name = "ignore files";
ignore_rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.ignore", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
ignore_rec.m_platformSpecs.insert("pc", specpc);
- ignore_rec.m_platformSpecs.insert("es3", ignore_spec);
+ ignore_rec.m_platformSpecs.insert("android", ignore_spec);
config.AddRecognizer(ignore_rec);
ExcludeAssetRecognizer excludeRecogniser;
@@ -359,7 +367,8 @@ namespace AssetProcessor
return false;
}
- // Calls the GetFullSourcePathFromRelativeProductPath function and checks the return results, returning true if it matches both of the expected results
+ // Calls the GetFullSourcePathFromRelativeProductPath function and checks the return results, returning true if it matches both of
+ // the expected results
bool TestGetFullSourcePath(const QString& fileToCheck, const QDir& tempPath, bool expectToFind, const char* expectedPath)
{
bool fullPathfound = false;
@@ -531,6 +540,177 @@ namespace AssetProcessor
ASSERT_TRUE(TestGetRelativeProductPath(fileToCheck, true, { "aaa/basefile.txt" }));
}
+ class AssetCatalogTestRelativeSourcePath : public AssetCatalogTest
+ {
+ public:
+ QDir GetRoot()
+ {
+ // Return an OS-friendly absolute root directory for our tests ("C:/sourceRoot" or "/sourceRoot"). It doesn't
+ // need to exist, it just needs to be an absolute path.
+ return QDir::root().filePath("sourceRoot");
+ }
+
+ // Set up custom scan folders for the "relative source path" tests, so that we can try out specific combinations of watch folders
+ void AddScanFolders(
+ [[maybe_unused]] const QDir& tempPath, AssetDatabaseConnection* dbConn, PlatformConfiguration& config,
+ const AZStd::vector& platforms) override
+ {
+ QDir root = GetRoot();
+
+ // This will set up the following watch folders, in highest to lowest priority:
+
+ // /sourceRoot/recurseNested/nested (recurse)
+ // /sourceRoot/noRecurse (no recurse)
+ // /sourceRoot/recurseNotNested (recurse)
+ // /sourceRoot/recurseNested (recurse)
+
+ AddScanFolder(
+ ScanFolderInfo(root.filePath("recurseNested/nested"), "nested", "nested", false, true, platforms, -4), config, dbConn);
+ AddScanFolder(
+ ScanFolderInfo(root.filePath("noRecurse"), "noRecurse", "noRecurse", false, false, platforms, -3), config, dbConn);
+ AddScanFolder(
+ ScanFolderInfo(root.filePath("recurseNotNested"), "recurseNotNested", "recurseNotNested", false, true, platforms, -2),
+ config, dbConn);
+ AddScanFolder(
+ ScanFolderInfo(root.filePath("recurseNested"), "recurseNested", "recurseNested", false, true, platforms, -1),
+ config, dbConn);
+ }
+
+ // Calls the GenerateRelativeSourcePath function and validates that the results match the expected inputs.
+ void TestGetRelativeSourcePath(
+ const AZStd::string& sourcePath, bool expectedToFind, const AZStd::string& expectedPath, const AZStd::string& expectedRoot)
+ {
+ bool relPathFound = false;
+ AZStd::string relPath;
+ AZStd::string rootFolder;
+
+ AzToolsFramework::AssetSystemRequestBus::BroadcastResult(
+ relPathFound, &AzToolsFramework::AssetSystem::AssetSystemRequest::GenerateRelativeSourcePath, sourcePath,
+ relPath, rootFolder);
+
+ EXPECT_EQ(relPathFound, expectedToFind);
+ EXPECT_EQ(relPath, expectedPath);
+ EXPECT_EQ(rootFolder, expectedRoot);
+ }
+ };
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_EmptySourcePath_ReturnsNoMatch)
+ {
+ // Test passes in an empty source path, which shouldn't produce a valid result.
+ // Input: empty source path
+ // Output: empty, not found result
+ TestGetRelativeSourcePath("", false, "", "");
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_AbsolutePathOutsideWatchFolders_ReturnsNoMatch)
+ {
+ // Test passes in an invalid absolute source path, which shouldn't produce a valid result.
+ // Input: "/sourceRoot/noWatchFolder/test.txt"
+ // Output: not found result, which also returns the input as the relative file name
+ QDir watchFolder = GetRoot().filePath("noWatchFolder/");
+ QString fileToCheck = watchFolder.filePath("test.txt");
+
+ TestGetRelativeSourcePath(fileToCheck.toUtf8().constData(), false, fileToCheck.toUtf8().constData(), "");
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_AbsolutePathUnderWatchFolder_ReturnsRelativePath)
+ {
+ // Test passes in a valid absolute source path, which should produce a valid relative path
+ // Input: "/sourceRoot/noRecurse/test.txt"
+ // Output: "test.txt" in folder "/sourceRoot/noRecurse/"
+ QDir watchFolder = GetRoot().filePath("noRecurse/");
+ QString fileToCheck = watchFolder.filePath("test.txt");
+
+ TestGetRelativeSourcePath(fileToCheck.toUtf8().constData(), true, "test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_AbsolutePathUnderNestedWatchFolders_ReturnsRelativePath)
+ {
+ // Test passes in a valid absolute source path that matches a watch folder and a nested watch folder.
+ // The output relative path should match the nested folder, because the nested folder has a higher priority registered with the AP.
+ // Input: "/sourceRoot/recurseNested/nested/test.txt"
+ // Output: "test.txt" in folder "/sourceRoot/recurseNested/nested/"
+ QDir watchFolder = GetRoot().filePath("recurseNested/nested/");
+ QString fileToCheck = watchFolder.filePath("test.txt");
+
+ TestGetRelativeSourcePath(fileToCheck.toUtf8().constData(), true, "test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_BareFileNameValidInWatchFolder_ReturnsHighestPriorityWatchFolder)
+ {
+ // Test passes in a simple file name. The output should be relative to the highest-priority watch folder.
+ // Input: "test.txt"
+ // Output: "test.txt" in folder "/sourceRoot/recurseNested/nested/"
+ QDir watchFolder = GetRoot().filePath("recurseNested/nested/");
+
+ TestGetRelativeSourcePath("test.txt", true, "test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_RelativePathValidInWatchFolder_ReturnsHighestPriorityWatchFolder)
+ {
+ // Test passes in a relative path. The output should preserve the relative path, but list it as relative to the highest-priority
+ // watch folder.
+ // Input: "a/b/c/test.txt"
+ // Output: "a/b/c/test.txt" in folder "/sourceRoot/recurseNested/nested/"
+ QDir watchFolder = GetRoot().filePath("recurseNested/nested/");
+
+ TestGetRelativeSourcePath("a/b/c/test.txt", true, "a/b/c/test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_RelativePathNotInWatchFolder_ReturnsNoMatch)
+ {
+ // Test passes in a relative path that "backs up" two directories. This will be invalid, because no matter which watch directory
+ // we start at, the result will be outside of any watch directory.
+ // Input: "../../test.txt"
+ // Output: not found result, which also returns the input as the relative file name
+ TestGetRelativeSourcePath("../../test.txt", false, "../../test.txt", "");
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_RelativePathValidFromNestedWatchFolder_ReturnsOuterFolder)
+ {
+ // Test passes in a relative path that "backs up" one directory. This will produce a valid result, because we can back up from
+ // the "recurseNested/nested/" watch folder to "recurseNested", which is also a valid watch folder.
+ // Input: "../test.txt"
+ // Output: "test.txt" in folder "/sourceRoot/recurseNested"
+ QDir watchFolder = GetRoot().filePath("recurseNested/");
+ TestGetRelativeSourcePath("../test.txt", true, "test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_RelativePathMovesToParentWatchFolder_ReturnsOuterFolder)
+ {
+ // Test passes in a relative path that backs up one directory and then forward into a directory. This will produce a valid
+ // result, because it can validly start in the highest-priority watch folder (recurseNested/nested), move back one into the
+ // outer watch folder (recurseNested), and then have a subdirectory within it.
+ // Note that it would also be valid to move from recurseNested to recurseNotNested, but that won't be the result of this test
+ // because that's a lower-priority match.
+ // Input: "../recurseNotNested/test.txt"
+ // Output: "recurseNotNested/test.txt" in folder "/sourceRoot/recurseNested/"
+ QDir watchFolder = GetRoot().filePath("recurseNested/");
+
+ TestGetRelativeSourcePath("../recurseNotNested/test.txt", true, "recurseNotNested/test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_RelativePathMovesToSiblingWatchFolder_ReturnsSiblingFolder)
+ {
+ // Test passes in a relative path that backs up two directories and then forward into a directory. This will produce a valid
+ // result, because it can validly start in the recurseNested/nested folder, move back two folders, then forward into the sibling
+ // recurseNotNested folder. The result will be a relative path to the sibling folder.
+ // Input: "../../recurseNotNested/test.txt"
+ // Output: "test.txt" in folder "/sourceRoot/recurseNotNested/"
+ QDir watchFolder = GetRoot().filePath("recurseNotNested/");
+
+ TestGetRelativeSourcePath("../../recurseNotNested/test.txt", true, "test.txt", watchFolder.path().toUtf8().constData());
+ }
+
+ TEST_F(AssetCatalogTestRelativeSourcePath, GenerateRelativeSourcePath_RelativePathBacksOutOfWatchFolder_ReturnsNoMatch)
+ {
+ // Test passes in a relative path that adds a directory, then "backs up" three directories. This will be invalid, because no
+ // matter which watch directory we start at, the result will be outside of any watch directory.
+ // Input: "../test.txt"
+ // Output: "test.txt" in folder "/sourceRoot/recurseNested"
+ TestGetRelativeSourcePath("a/../../../test.txt", false, "a/../../../test.txt", "");
+ }
+
class AssetCatalogTest_GetFullSourcePath
: public AssetCatalogTest
{
@@ -912,7 +1092,7 @@ namespace AssetProcessor
{
AssetCatalogTest::SetUp();
m_platforms.push_back("pc");
- m_platforms.push_back("es3");
+ m_platforms.push_back("android");
// 4 products for one platform, 1 product for the other.
m_platformToProductsForSourceWithDifferentProducts["pc"].push_back("subfolder3/basefilez.arc2");
@@ -920,7 +1100,7 @@ namespace AssetProcessor
m_platformToProductsForSourceWithDifferentProducts["pc"].push_back("subfolder3/basefile.arc2");
m_platformToProductsForSourceWithDifferentProducts["pc"].push_back("subfolder3/basefile.azm2");
- m_platformToProductsForSourceWithDifferentProducts["es3"].push_back("subfolder3/es3exclusivefile.azm2");
+ m_platformToProductsForSourceWithDifferentProducts["android"].push_back("subfolder3/androidexclusivefile.azm2");
m_sourceFileWithDifferentProductsPerPlatform = AZ::Uuid::CreateString("{38032FC9-2838-4D6A-9DA0-79E5E4F20C1B}");
m_sourceFileWithDependency = AZ::Uuid::CreateString("{807C4174-1D19-42AD-B8BC-A59291D9388C}");
@@ -933,7 +1113,7 @@ namespace AssetProcessor
// resulting in image processing jobs having different products per platform. Because of this, the material jobs will then have different
// dependencies per platform, because each material will depend on a referenced texture and all of that texture's mipmaps.
- // Add a source file with 4 products on pc, but 1 on es3
+ // Add a source file with 4 products on pc, but 1 on android
bool result = AddSourceAndJobForMultiplePlatforms(
"subfolder3",
"MultiplatformFile.txt",
@@ -948,7 +1128,7 @@ namespace AssetProcessor
result = AddSourceAndJobForMultiplePlatforms("subfolder3", "FileWithDependency.txt", &(m_data->m_dbConn), sourceFileWithSameProductsJobsPerPlatform, m_platforms, m_sourceFileWithDependency);
EXPECT_TRUE(result);
- const AZStd::string fileWithDependencyProductPath = "subfolder3/es3exclusivefile.azm2";
+ const AZStd::string fileWithDependencyProductPath = "subfolder3/androidexclusivefile.azm2";
for (const AZStd::string& platform : m_platforms)
{
diff --git a/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp b/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp
index c33943f9a7..04949c82a9 100644
--- a/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp
+++ b/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp
@@ -265,6 +265,9 @@ namespace AssetProcessorMessagesTests
addPairFunc(new GetFullSourcePathFromRelativeProductPathRequest(), new GetFullSourcePathFromRelativeProductPathResponse());
addPairFunc(new GetRelativeProductPathFromFullSourceOrProductPathRequest(), new GetRelativeProductPathFromFullSourceOrProductPathResponse());
+ addPairFunc(
+ new GenerateRelativeSourcePathRequest(),
+ new GenerateRelativeSourcePathResponse());
addPairFunc(new SourceAssetInfoRequest(), new SourceAssetInfoResponse());
addPairFunc(new SourceAssetProductsInfoRequest(), new SourceAssetProductsInfoResponse());
addPairFunc(new GetScanFoldersRequest(), new GetScanFoldersResponse());
diff --git a/Code/Tools/AssetProcessor/native/tests/assetBuilderSDK/assetBuilderSDKTest.cpp b/Code/Tools/AssetProcessor/native/tests/assetBuilderSDK/assetBuilderSDKTest.cpp
index c2931c6a09..671d8d96a9 100644
--- a/Code/Tools/AssetProcessor/native/tests/assetBuilderSDK/assetBuilderSDKTest.cpp
+++ b/Code/Tools/AssetProcessor/native/tests/assetBuilderSDK/assetBuilderSDKTest.cpp
@@ -28,7 +28,7 @@ namespace AssetProcessor
createJobsRequest.m_enabledPlatforms = {
{ "pc", {}
- }, { "es3", {}
+ }, { "android", {}
}
};
ASSERT_EQ(createJobsRequest.GetEnabledPlatformsCount(), 2);
@@ -48,19 +48,19 @@ namespace AssetProcessor
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_NONE);
createJobsRequest.m_enabledPlatforms = {
- { "es3", {}
+ { "android", {}
}
};
- ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(0), AssetBuilderSDK::Platform_ES3);
+ ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(0), AssetBuilderSDK::Platform_ANDROID);
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_NONE);
createJobsRequest.m_enabledPlatforms = {
{ "pc", {}
- }, { "es3", {}
+ }, { "android", {}
}
};
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(0), AssetBuilderSDK::Platform_PC);
- ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_ES3);
+ ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_ANDROID);
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(2), AssetBuilderSDK::Platform_NONE);
createJobsRequest.m_enabledPlatforms = {
@@ -72,24 +72,24 @@ namespace AssetProcessor
createJobsRequest.m_enabledPlatforms = {
{ "pc", {}
- }, { "es3", {}
+ }, { "android", {}
}, { "ios", {}
- }, { "osx_gl", {}
+ }, { "mac", {}
}
};
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(0), AssetBuilderSDK::Platform_PC);
- ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_ES3);
+ ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_ANDROID);
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(2), AssetBuilderSDK::Platform_IOS);
- ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(3), AssetBuilderSDK::Platform_OSX);
+ ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(3), AssetBuilderSDK::Platform_MAC);
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(4), AssetBuilderSDK::Platform_NONE);
createJobsRequest.m_enabledPlatforms = {
{ "pc", {}
- }, { "es3", {}
+ }, { "android", {}
}
};
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(0), AssetBuilderSDK::Platform_PC);
- ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_ES3);
+ ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(1), AssetBuilderSDK::Platform_ANDROID);
ASSERT_EQ(createJobsRequest.GetEnabledPlatformAt(2), AssetBuilderSDK::Platform_NONE);
// using a deprecated API should have generated warnings.
// but we can't test for it because these warnings are WarningOnce and some other unit test might have already triggered it
@@ -106,23 +106,23 @@ namespace AssetProcessor
}
};
ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_PC));
- ASSERT_FALSE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_ES3));
+ ASSERT_FALSE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_ANDROID));
createJobsRequest.m_enabledPlatforms = {
{ "pc", {}
- }, { "es3", {}
+ }, { "android", {}
}
};
ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_PC));
- ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_ES3));
+ ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_ANDROID));
createJobsRequest.m_enabledPlatforms = {
{ "pc", {}
- }, { "es3", {}
+ }, { "android", {}
}
};
ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_PC));
- ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_ES3));
+ ASSERT_TRUE(createJobsRequest.IsPlatformEnabled(AssetBuilderSDK::Platform_ANDROID));
// using a deprecated API should have generated warnings.
// but we can't test for it because these warnings are WarningOnce and some other unit test might have already triggered it
}
@@ -133,9 +133,9 @@ namespace AssetProcessor
UnitTestUtils::AssertAbsorber absorb;
ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_PC));
- ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_ES3));
+ ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_ANDROID));
ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_IOS));
- ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_OSX));
+ ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_MAC));
ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_PROVO));
ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_SALEM));
ASSERT_TRUE(createJobsRequest.IsPlatformValid(AssetBuilderSDK::Platform_JASPER));
diff --git a/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp b/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp
index d592ecb012..bd99cf7a94 100644
--- a/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp
+++ b/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp
@@ -4020,15 +4020,15 @@ TEST_F(ModtimeScanningTest, ModtimeSkipping_EnablePlatform_ShouldProcessFilesFor
m_assetProcessorManager->m_allowModtimeSkippingFeature = true;
AssetUtilities::SetUseFileHashOverride(true, true);
- // Enable es3 platform after the initial SetUp has already processed the files for pc
+ // Enable android platform after the initial SetUp has already processed the files for pc
QDir tempPath(m_tempDir.path());
- AssetBuilderSDK::PlatformInfo es3Platform("es3", { "host", "renderer" });
- m_config->EnablePlatform(es3Platform, true);
+ AssetBuilderSDK::PlatformInfo androidPlatform("android", { "host", "renderer" });
+ m_config->EnablePlatform(androidPlatform, true);
// There's no way to remove scanfolders and adding a new one after enabling the platform will cause the pc assets to build as well, which we don't want
// Instead we'll just const cast the vector and modify the enabled platforms for the scanfolder
auto& platforms = const_cast&>(m_config->GetScanFolderAt(0).GetPlatforms());
- platforms.push_back(es3Platform);
+ platforms.push_back(androidPlatform);
// We need the builder fingerprints to be updated to reflect the newly enabled platform
m_assetProcessorManager->ComputeBuilderDirty();
@@ -4036,10 +4036,10 @@ TEST_F(ModtimeScanningTest, ModtimeSkipping_EnablePlatform_ShouldProcessFilesFor
QSet filePaths = BuildFileSet();
SimulateAssetScanner(filePaths);
- ExpectWork(4, 2); // CreateJobs = 4, 2 files * 2 platforms. ProcessJobs = 2, just the es3 platform jobs (pc is already processed)
+ ExpectWork(4, 2); // CreateJobs = 4, 2 files * 2 platforms. ProcessJobs = 2, just the android platform jobs (pc is already processed)
- ASSERT_TRUE(m_data->m_processResults[0].m_destinationPath.contains("es3"));
- ASSERT_TRUE(m_data->m_processResults[1].m_destinationPath.contains("es3"));
+ ASSERT_TRUE(m_data->m_processResults[0].m_destinationPath.contains("android"));
+ ASSERT_TRUE(m_data->m_processResults[1].m_destinationPath.contains("android"));
}
TEST_F(ModtimeScanningTest, ModtimeSkipping_ModifyTimestamp)
diff --git a/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp b/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp
index 829d63472d..9c80b267eb 100644
--- a/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp
+++ b/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp
@@ -120,14 +120,14 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Regular_Platforms)
// verify the data.
ASSERT_NE(config.GetPlatformByIdentifier(AzToolsFramework::AssetSystem::GetHostAssetPlatform()), nullptr);
- ASSERT_NE(config.GetPlatformByIdentifier("es3"), nullptr);
+ ASSERT_NE(config.GetPlatformByIdentifier("android"), nullptr);
ASSERT_NE(config.GetPlatformByIdentifier("server"), nullptr);
- ASSERT_TRUE(config.GetPlatformByIdentifier("es3")->HasTag("mobile"));
- ASSERT_TRUE(config.GetPlatformByIdentifier("es3")->HasTag("renderer"));
- ASSERT_TRUE(config.GetPlatformByIdentifier("es3")->HasTag("android"));
+ ASSERT_TRUE(config.GetPlatformByIdentifier("android")->HasTag("mobile"));
+ ASSERT_TRUE(config.GetPlatformByIdentifier("android")->HasTag("renderer"));
+ ASSERT_TRUE(config.GetPlatformByIdentifier("android")->HasTag("android"));
ASSERT_TRUE(config.GetPlatformByIdentifier("server")->HasTag("server"));
- ASSERT_FALSE(config.GetPlatformByIdentifier("es3")->HasTag("server"));
+ ASSERT_FALSE(config.GetPlatformByIdentifier("android")->HasTag("server"));
ASSERT_FALSE(config.GetPlatformByIdentifier("server")->HasTag("renderer"));
}
@@ -397,7 +397,7 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularScanfolderP
AZStd::vector platforms = config.GetScanFolderAt(0).GetPlatforms();
ASSERT_EQ(platforms.size(), 4);
ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo(AzToolsFramework::AssetSystem::GetHostAssetPlatform(), AZStd::unordered_set{})) != platforms.end());
- ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("es3", AZStd::unordered_set{})) != platforms.end());
+ ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("android", AZStd::unordered_set{})) != platforms.end());
ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("ios", AZStd::unordered_set{})) != platforms.end());
ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("server", AZStd::unordered_set{})) != platforms.end());
@@ -405,12 +405,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularScanfolderP
platforms = config.GetScanFolderAt(1).GetPlatforms();
ASSERT_EQ(platforms.size(), 2);
ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo(AzToolsFramework::AssetSystem::GetHostAssetPlatform(), AZStd::unordered_set{})) != platforms.end());
- ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("es3", AZStd::unordered_set{})) != platforms.end());
+ ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("android", AZStd::unordered_set{})) != platforms.end());
ASSERT_EQ(config.GetScanFolderAt(2).GetDisplayName(), QString("folder1output"));
platforms = config.GetScanFolderAt(2).GetPlatforms();
ASSERT_EQ(platforms.size(), 1);
- ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("es3", AZStd::unordered_set{})) != platforms.end());
+ ASSERT_TRUE(AZStd::find(platforms.begin(), platforms.end(), AssetBuilderSDK::PlatformInfo("android", AZStd::unordered_set{})) != platforms.end());
ASSERT_EQ(config.GetScanFolderAt(3).GetDisplayName(), QString("folder2output"));
platforms = config.GetScanFolderAt(3).GetPlatforms();
@@ -454,7 +454,7 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Recognizers)
using namespace AzToolsFramework::AssetSystem;
using namespace AssetProcessor;
#if defined(AZ_PLATFORM_WINDOWS)
- const char* platformWhichIsNotCurrentPlatform = "osx_gl";
+ const char* platformWhichIsNotCurrentPlatform = "mac";
#else
const char* platformWhichIsNotCurrentPlatform = "pc";
#endif
@@ -475,27 +475,27 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Recognizers)
ASSERT_EQ(recogs["i_caf"].m_patternMatcher.GetBuilderPattern().m_pattern, "*.i_caf");
ASSERT_EQ(recogs["i_caf"].m_patternMatcher.GetBuilderPattern().m_type, AssetBuilderSDK::AssetBuilderPattern::Wildcard);
ASSERT_EQ(recogs["i_caf"].m_platformSpecs.size(), 2);
- ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains("es3"));
+ ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
ASSERT_FALSE(recogs["i_caf"].m_platformSpecs.contains("server")); // server has been set to skip.
- ASSERT_EQ(recogs["i_caf"].m_platformSpecs["es3"].m_extraRCParams, "mobile");
+ ASSERT_EQ(recogs["i_caf"].m_platformSpecs["android"].m_extraRCParams, "mobile");
ASSERT_EQ(recogs["i_caf"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "defaultparams");
ASSERT_TRUE(recogs.contains("caf"));
- ASSERT_TRUE(recogs["caf"].m_platformSpecs.contains("es3"));
+ ASSERT_TRUE(recogs["caf"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["caf"].m_platformSpecs.contains("server"));
ASSERT_TRUE(recogs["caf"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
ASSERT_EQ(recogs["caf"].m_platformSpecs.size(), 3);
- ASSERT_EQ(recogs["caf"].m_platformSpecs["es3"].m_extraRCParams, "rendererparams");
+ ASSERT_EQ(recogs["caf"].m_platformSpecs["android"].m_extraRCParams, "rendererparams");
ASSERT_EQ(recogs["caf"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "rendererparams");
ASSERT_EQ(recogs["caf"].m_platformSpecs["server"].m_extraRCParams, "copy");
ASSERT_TRUE(recogs.contains("mov"));
- ASSERT_TRUE(recogs["mov"].m_platformSpecs.contains("es3"));
+ ASSERT_TRUE(recogs["mov"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["mov"].m_platformSpecs.contains("server"));
ASSERT_TRUE(recogs["mov"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
ASSERT_EQ(recogs["mov"].m_platformSpecs.size(), 3);
- ASSERT_EQ(recogs["mov"].m_platformSpecs["es3"].m_extraRCParams, "platformspecificoverride");
+ ASSERT_EQ(recogs["mov"].m_platformSpecs["android"].m_extraRCParams, "platformspecificoverride");
ASSERT_EQ(recogs["mov"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "rendererparams");
ASSERT_EQ(recogs["mov"].m_platformSpecs["server"].m_extraRCParams, "copy");
@@ -503,27 +503,27 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Recognizers)
// (but platforms can override it)
ASSERT_TRUE(recogs.contains("rend"));
ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
- ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains("es3"));
+ ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains("server"));
ASSERT_FALSE(recogs["rend"].m_platformSpecs.contains(platformWhichIsNotCurrentPlatform)); // this is not an enabled platform and should not be there.
ASSERT_EQ(recogs["rend"].m_platformSpecs.size(), 3);
ASSERT_EQ(recogs["rend"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "rendererparams");
- ASSERT_EQ(recogs["rend"].m_platformSpecs["es3"].m_extraRCParams, "rendererparams");
+ ASSERT_EQ(recogs["rend"].m_platformSpecs["android"].m_extraRCParams, "rendererparams");
ASSERT_EQ(recogs["rend"].m_platformSpecs["server"].m_extraRCParams, ""); // default if not specified is empty string
ASSERT_TRUE(recogs.contains("alldefault"));
ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
- ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains("es3"));
+ ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains("server"));
ASSERT_FALSE(recogs["alldefault"].m_platformSpecs.contains(platformWhichIsNotCurrentPlatform)); // this is not an enabled platform and should not be there.
ASSERT_EQ(recogs["alldefault"].m_platformSpecs.size(), 3);
ASSERT_EQ(recogs["alldefault"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "");
- ASSERT_EQ(recogs["alldefault"].m_platformSpecs["es3"].m_extraRCParams, "");
+ ASSERT_EQ(recogs["alldefault"].m_platformSpecs["android"].m_extraRCParams, "");
ASSERT_EQ(recogs["alldefault"].m_platformSpecs["server"].m_extraRCParams, "");
ASSERT_TRUE(recogs.contains("skipallbutone"));
ASSERT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
- ASSERT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains("es3"));
+ ASSERT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["skipallbutone"].m_platformSpecs.contains("server")); // server is only one enabled (set to copy)
ASSERT_EQ(recogs["skipallbutone"].m_platformSpecs.size(), 1);
ASSERT_EQ(recogs["skipallbutone"].m_platformSpecs["server"].m_extraRCParams, "copy");
@@ -549,7 +549,7 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Overrides)
// verify the data.
ASSERT_NE(config.GetPlatformByIdentifier(AzToolsFramework::AssetSystem::GetHostAssetPlatform()), nullptr);
- ASSERT_NE(config.GetPlatformByIdentifier("es3"), nullptr);
+ ASSERT_NE(config.GetPlatformByIdentifier("android"), nullptr);
ASSERT_NE(config.GetPlatformByIdentifier("provo"), nullptr);
// this override swaps server with provo in that it turns ON provo, turns off server
ASSERT_EQ(config.GetPlatformByIdentifier("server"), nullptr); // this should be off due to overrides
@@ -566,11 +566,11 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Overrides)
ASSERT_EQ(recogs["i_caf"].m_patternMatcher.GetBuilderPattern().m_pattern, "*.i_caf");
ASSERT_EQ(recogs["i_caf"].m_patternMatcher.GetBuilderPattern().m_type, AssetBuilderSDK::AssetBuilderPattern::Wildcard);
ASSERT_EQ(recogs["i_caf"].m_platformSpecs.size(), 3);
- ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains("es3"));
+ ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains("android"));
ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains("provo"));
ASSERT_TRUE(recogs["i_caf"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform()));
ASSERT_FALSE(recogs["i_caf"].m_platformSpecs.contains("server")); // server has been set to skip.
- ASSERT_EQ(recogs["i_caf"].m_platformSpecs["es3"].m_extraRCParams, "mobile");
+ ASSERT_EQ(recogs["i_caf"].m_platformSpecs["android"].m_extraRCParams, "mobile");
ASSERT_EQ(recogs["i_caf"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "defaultparams");
ASSERT_EQ(recogs["i_caf"].m_platformSpecs["provo"].m_extraRCParams, "copy");
diff --git a/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp
index 5940caadb7..079cdb7c66 100644
--- a/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp
+++ b/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp
@@ -51,6 +51,8 @@ namespace AssetProcessor
public:
using GetRelativeProductPathFromFullSourceOrProductPathRequest = AzFramework::AssetSystem::GetRelativeProductPathFromFullSourceOrProductPathRequest;
using GetRelativeProductPathFromFullSourceOrProductPathResponse = AzFramework::AssetSystem::GetRelativeProductPathFromFullSourceOrProductPathResponse;
+ using GenerateRelativeSourcePathRequest = AzFramework::AssetSystem::GenerateRelativeSourcePathRequest;
+ using GenerateRelativeSourcePathResponse = AzFramework::AssetSystem::GenerateRelativeSourcePathResponse;
using GetFullSourcePathFromRelativeProductPathRequest = AzFramework::AssetSystem::GetFullSourcePathFromRelativeProductPathRequest;
using GetFullSourcePathFromRelativeProductPathResponse = AzFramework::AssetSystem::GetFullSourcePathFromRelativeProductPathResponse;
};
@@ -88,34 +90,34 @@ namespace AssetProcessor
//AZ_TracePrintf("test", "-------------------------\n");
}
- void ComputeFingerprints(unsigned int& fingerprintForPC, unsigned int& fingerprintForES3, PlatformConfiguration& config, QString scanFolderPath, QString relPath)
+ void ComputeFingerprints(unsigned int& fingerprintForPC, unsigned int& fingerprintForANDROID, PlatformConfiguration& config, QString scanFolderPath, QString relPath)
{
QString extraInfoForPC;
- QString extraInfoForES3;
+ QString extraInfoForANDROID;
RecognizerPointerContainer output;
QString filePath = scanFolderPath + "/" + relPath;
config.GetMatchingRecognizers(filePath, output);
for (const AssetRecognizer* assetRecogniser : output)
{
extraInfoForPC.append(assetRecogniser->m_platformSpecs["pc"].m_extraRCParams);
- extraInfoForES3.append(assetRecogniser->m_platformSpecs["es3"].m_extraRCParams);
+ extraInfoForANDROID.append(assetRecogniser->m_platformSpecs["android"].m_extraRCParams);
extraInfoForPC.append(assetRecogniser->m_version);
- extraInfoForES3.append(assetRecogniser->m_version);
+ extraInfoForANDROID.append(assetRecogniser->m_version);
}
- //Calculating fingerprints for the file for pc and es3 platforms
+ //Calculating fingerprints for the file for pc and android platforms
AZ::Uuid sourceId = AZ::Uuid("{2206A6E0-FDBC-45DE-B6FE-C2FC63020BD5}");
JobEntry jobEntryPC(scanFolderPath, relPath, relPath, 0, { "pc", {"desktop", "renderer"} }, "", 0, 1, sourceId);
- JobEntry jobEntryES3(scanFolderPath, relPath, relPath, 0, { "es3", {"mobile", "renderer"} }, "", 0, 2, sourceId);
+ JobEntry jobEntryANDROID(scanFolderPath, relPath, relPath, 0, { "android", {"mobile", "renderer"} }, "", 0, 2, sourceId);
JobDetails jobDetailsPC;
jobDetailsPC.m_extraInformationForFingerprinting = extraInfoForPC.toUtf8().constData();
jobDetailsPC.m_jobEntry = jobEntryPC;
- JobDetails jobDetailsES3;
- jobDetailsES3.m_extraInformationForFingerprinting = extraInfoForES3.toUtf8().constData();
- jobDetailsES3.m_jobEntry = jobEntryES3;
+ JobDetails jobDetailsANDROID;
+ jobDetailsANDROID.m_extraInformationForFingerprinting = extraInfoForANDROID.toUtf8().constData();
+ jobDetailsANDROID.m_jobEntry = jobEntryANDROID;
fingerprintForPC = AssetUtilities::GenerateFingerprint(jobDetailsPC);
- fingerprintForES3 = AssetUtilities::GenerateFingerprint(jobDetailsES3);
+ fingerprintForANDROID = AssetUtilities::GenerateFingerprint(jobDetailsANDROID);
}
}
@@ -240,7 +242,7 @@ namespace AssetProcessor
PlatformConfiguration config;
config.EnablePlatform({ "pc",{ "desktop", "renderer" } }, true);
- config.EnablePlatform({ "es3",{ "mobile", "renderer" } }, true);
+ config.EnablePlatform({ "android",{ "mobile", "renderer" } }, true);
config.EnablePlatform({ "fandago",{ "console", "renderer" } }, false);
AZStd::vector platforms;
config.PopulatePlatformsForScanFolder(platforms);
@@ -259,9 +261,9 @@ namespace AssetProcessor
AssetRecognizer rec;
AssetPlatformSpec specpc;
- AssetPlatformSpec speces3;
+ AssetPlatformSpec specandroid;
- speces3.m_extraRCParams = "somerandomparam";
+ specandroid.m_extraRCParams = "somerandomparam";
rec.m_name = "random files";
rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.random", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
rec.m_platformSpecs.insert("pc", specpc);
@@ -269,13 +271,13 @@ namespace AssetProcessor
UNIT_TEST_EXPECT_TRUE(mockAppManager.RegisterAssetRecognizerAsBuilder(rec));
specpc.m_extraRCParams = ""; // blank must work
- speces3.m_extraRCParams = "testextraparams";
+ specandroid.m_extraRCParams = "testextraparams";
const char* builderTxt1Name = "txt files";
rec.m_name = builderTxt1Name;
rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.txt", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
rec.m_platformSpecs.insert("pc", specpc);
- rec.m_platformSpecs.insert("es3", speces3);
+ rec.m_platformSpecs.insert("android", specandroid);
config.AddRecognizer(rec);
@@ -305,21 +307,21 @@ namespace AssetProcessor
rec.m_testLockSource = false;
specpc.m_extraRCParams = "pcparams";
- speces3.m_extraRCParams = "es3params";
+ specandroid.m_extraRCParams = "androidparams";
rec.m_name = "xxx files";
rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.xxx", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
rec.m_platformSpecs.insert("pc", specpc);
- rec.m_platformSpecs.insert("es3", speces3);
+ rec.m_platformSpecs.insert("android", specandroid);
config.AddRecognizer(rec);
mockAppManager.RegisterAssetRecognizerAsBuilder(rec);
// two recognizers for the same pattern.
rec.m_name = "xxx files 2 (builder2)";
specpc.m_extraRCParams = "pcparams2";
- speces3.m_extraRCParams = "es3params2";
+ specandroid.m_extraRCParams = "androidparams2";
rec.m_platformSpecs.insert("pc", specpc);
- rec.m_platformSpecs.insert("es3", speces3);
+ rec.m_platformSpecs.insert("android", specandroid);
config.AddRecognizer(rec);
mockAppManager.RegisterAssetRecognizerAsBuilder(rec);
@@ -330,7 +332,7 @@ namespace AssetProcessor
ignore_rec.m_name = "ignore files";
ignore_rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.ignore", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
ignore_rec.m_platformSpecs.insert("pc", specpc);
- ignore_rec.m_platformSpecs.insert("es3", ignore_spec);
+ ignore_rec.m_platformSpecs.insert("android", ignore_spec);
config.AddRecognizer(ignore_rec);
mockAppManager.RegisterAssetRecognizerAsBuilder(ignore_rec);
@@ -432,7 +434,7 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 1); // 1, since we have one recognizer for .ignore, but the 'es3' platform is marked as skip
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 1); // 1, since we have one recognizer for .ignore, but the 'android' platform is marked as skip
UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "pc"));
@@ -455,16 +457,16 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and es3,since we have two recognizer for .txt file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
- QList es3JobsIndex;
+ QList androidJobsIndex;
QList pcJobsIndex;
for (int checkIdx = 0; checkIdx < 4; ++checkIdx)
{
@@ -662,19 +664,19 @@ namespace AssetProcessor
// ---------- test successes ----------
- QStringList es3outs;
- es3outs.push_back(cacheRoot.filePath(QString("es3/basefile.arc1")));
- es3outs.push_back(cacheRoot.filePath(QString("es3/basefile.arc2")));
+ QStringList androidouts;
+ androidouts.push_back(cacheRoot.filePath(QString("android/basefile.arc1")));
+ androidouts.push_back(cacheRoot.filePath(QString("android/basefile.arc2")));
// feed it the messages its waiting for (create the files)
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs[0], "products."));
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs[1], "products."))
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts[0], "products."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts[1], "products."))
- //Invoke Asset Processed for es3 platform , txt files job description
+ //Invoke Asset Processed for android platform , txt files job description
AssetBuilderSDK::ProcessJobResponse response;
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData(), AZ::Uuid::CreateNull(), 1));
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[1].toUtf8().constData(), AZ::Uuid::CreateNull(), 2));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData(), AZ::Uuid::CreateNull(), 1));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[1].toUtf8().constData(), AZ::Uuid::CreateNull(), 2));
// make sure legacy SubIds get stored in the DB and in asset response messages.
// also make sure they don't get filed for the wrong asset.
@@ -693,8 +695,8 @@ namespace AssetProcessor
UNIT_TEST_EXPECT_TRUE(changedInputResults.size() == 1);
// always RELATIVE, always with the product name.
- UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "es3");
- UNIT_TEST_EXPECT_TRUE(assetMessages[1].m_platform == "es3");
+ UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "android");
+ UNIT_TEST_EXPECT_TRUE(assetMessages[1].m_platform == "android");
UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_data == "basefile.arc1");
UNIT_TEST_EXPECT_TRUE(assetMessages[1].m_data == "basefile.arc2");
UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_type == AzFramework::AssetSystem::AssetNotificationMessage::AssetChanged);
@@ -793,14 +795,14 @@ namespace AssetProcessor
changedInputResults.clear();
assetMessages.clear();
- es3outs.clear();
- es3outs.push_back(cacheRoot.filePath(QString("es3/basefile.azm")));
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs[0], "products."));
+ androidouts.clear();
+ androidouts.push_back(cacheRoot.filePath(QString("android/basefile.azm")));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts[0], "products."));
- //Invoke Asset Processed for es3 platform , txt files2 job description
+ //Invoke Asset Processed for android platform , txt files2 job description
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[1].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
@@ -812,7 +814,7 @@ namespace AssetProcessor
UNIT_TEST_EXPECT_TRUE(changedInputResults.size() == 1);
// always RELATIVE, always with the product name.
- UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "es3");
+ UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "android");
UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_data == "basefile.azm");
changedInputResults.clear();
@@ -1002,11 +1004,11 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
// --------- same result as above ----------
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and es3,since we have two recognizer for .txt file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_computedFingerprint != 0);
@@ -1025,25 +1027,25 @@ namespace AssetProcessor
// this time make different products:
- QStringList oldes3outs;
+ QStringList oldandroidouts;
QStringList oldpcouts;
- oldes3outs = es3outs;
+ oldandroidouts = androidouts;
oldpcouts.append(pcouts);
- QStringList es3outs2;
+ QStringList androidouts2;
QStringList pcouts2;
- es3outs.clear();
+ androidouts.clear();
pcouts.clear();
- es3outs.push_back(cacheRoot.filePath(QString("es3/basefilea.arc1")));
- es3outs2.push_back(cacheRoot.filePath(QString("es3/basefilea.azm")));
- // note that the ES3 outs have changed
+ androidouts.push_back(cacheRoot.filePath(QString("android/basefilea.arc1")));
+ androidouts2.push_back(cacheRoot.filePath(QString("android/basefilea.azm")));
+ // note that the android outs have changed
// but the pc outs are still the same.
pcouts.push_back(cacheRoot.filePath(QString("pc/basefile.arc1")));
pcouts2.push_back(cacheRoot.filePath(QString("pc/basefile.azm")));
// feed it the messages its waiting for (create the files)
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs[0], "newfile."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts[0], "newfile."));
UNIT_TEST_EXPECT_TRUE(CreateDummyFile(pcouts[0], "newfile."));
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs2[0], "newfile."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts2[0], "newfile."));
UNIT_TEST_EXPECT_TRUE(CreateDummyFile(pcouts2[0], "newfile."));
QCoreApplication::processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents, 50);
@@ -1055,12 +1057,12 @@ namespace AssetProcessor
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[0].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs2[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts2[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[1].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
@@ -1083,12 +1085,12 @@ namespace AssetProcessor
// The files removed should be the ones we did not emit this time
// note that order isn't guarantee but an example output it this
- // [0] Removed: ES3, basefile.arc1
- // [1] Removed: ES3, basefile.arc2
- // [2] Changed: ES3, basefilea.arc1 (added)
+ // [0] Removed: ANDROID, basefile.arc1
+ // [1] Removed: ANDROID, basefile.arc2
+ // [2] Changed: ANDROID, basefilea.arc1 (added)
- // [3] Removed: ES3, basefile.azm
- // [4] Changed: ES3, basefilea.azm (added)
+ // [3] Removed: ANDROID, basefile.azm
+ // [4] Changed: ANDROID, basefilea.azm (added)
// [5] changed: PC, basefile.arc1 (changed)
// [6] changed: PC, basefile.azm (changed)
@@ -1110,18 +1112,18 @@ namespace AssetProcessor
if (element.m_data == "basefilea.arc1")
{
UNIT_TEST_EXPECT_TRUE(element.m_type == AzFramework::AssetSystem::AssetNotificationMessage::AssetChanged);
- UNIT_TEST_EXPECT_TRUE(element.m_platform == "es3");
+ UNIT_TEST_EXPECT_TRUE(element.m_platform == "android");
}
if (element.m_data == "basefile.arc2")
{
UNIT_TEST_EXPECT_TRUE(element.m_type == AzFramework::AssetSystem::AssetNotificationMessage::AssetRemoved);
- UNIT_TEST_EXPECT_TRUE(element.m_platform == "es3");
+ UNIT_TEST_EXPECT_TRUE(element.m_platform == "android");
}
}
// original products must no longer exist since it should have found and deleted them!
- for (QString outFile: oldes3outs)
+ for (QString outFile: oldandroidouts)
{
UNIT_TEST_EXPECT_FALSE(QFile::exists(outFile));
}
@@ -1145,11 +1147,11 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
// --------- same result as above ----------
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // pc and es3
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // pc and android
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_computedFingerprint != 0);
@@ -1169,12 +1171,12 @@ namespace AssetProcessor
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[0].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs2[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts2[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[1].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
@@ -1205,11 +1207,11 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
// --------- same result as above ----------
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and es3,since we have two recognizer for .txt file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_computedFingerprint != 0);
@@ -1220,12 +1222,12 @@ namespace AssetProcessor
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[0].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs2[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts2[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[1].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
@@ -1243,9 +1245,9 @@ namespace AssetProcessor
// deleting the fingerprint file should not have erased the products
UNIT_TEST_EXPECT_TRUE(QFile::exists(pcouts[0]));
- UNIT_TEST_EXPECT_TRUE(QFile::exists(es3outs[0]));
+ UNIT_TEST_EXPECT_TRUE(QFile::exists(androidouts[0]));
UNIT_TEST_EXPECT_TRUE(QFile::exists(pcouts2[0]));
- UNIT_TEST_EXPECT_TRUE(QFile::exists(es3outs2[0]));
+ UNIT_TEST_EXPECT_TRUE(QFile::exists(androidouts2[0]));
changedInputResults.clear();
assetMessages.clear();
@@ -1304,9 +1306,9 @@ namespace AssetProcessor
}
UNIT_TEST_EXPECT_FALSE(QFile::exists(pcouts[0]));
- UNIT_TEST_EXPECT_FALSE(QFile::exists(es3outs[0]));
+ UNIT_TEST_EXPECT_FALSE(QFile::exists(androidouts[0]));
UNIT_TEST_EXPECT_FALSE(QFile::exists(pcouts2[0]));
- UNIT_TEST_EXPECT_FALSE(QFile::exists(es3outs2[0]));
+ UNIT_TEST_EXPECT_FALSE(QFile::exists(androidouts2[0]));
changedInputResults.clear();
assetMessages.clear();
@@ -1321,28 +1323,28 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
// --------- same result as above ----------
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and es3,since we have two recognizer for .txt file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_computedFingerprint != 0);
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs[0], "newfile."));
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs2[0], "newfile."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts[0], "newfile."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts2[0], "newfile."));
UNIT_TEST_EXPECT_TRUE(CreateDummyFile(pcouts2[0], "newfile."));
// send both done messages simultaneously!
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[0].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs2[0].toUtf8().constData()));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts2[0].toUtf8().constData()));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[1].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
// send one failure only for PC :
@@ -1420,12 +1422,12 @@ namespace AssetProcessor
UNIT_TEST_EXPECT_TRUE(changedInputResults.size() == 3);
UNIT_TEST_EXPECT_TRUE(assetMessages.size() == 3);
- // which should be for the ES3:
+ // which should be for the ANDROID:
UNIT_TEST_EXPECT_TRUE(AssetUtilities::NormalizeFilePath(changedInputResults[0].first) == absolutePath);
// always RELATIVE, always with the product name.
UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_data == "basefilea.arc1" || assetMessages[0].m_data == "basefilea.azm");
- UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "es3");
+ UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "android");
for (auto& payload : payloadList)
{
@@ -1526,28 +1528,28 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
// --------- same result as above ----------
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and es3,since we have two recognizer for .txt file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_computedFingerprint != 0);
- es3outs.clear();
- es3outs2.clear();
+ androidouts.clear();
+ androidouts2.clear();
pcouts.clear();
pcouts2.clear();
- es3outs.push_back(cacheRoot.filePath(QString("es3/basefilez.arc2")));
- es3outs2.push_back(cacheRoot.filePath(QString("es3/basefileaz.azm2")));
- // note that the ES3 outs have changed
+ androidouts.push_back(cacheRoot.filePath(QString("android/basefilez.arc2")));
+ androidouts2.push_back(cacheRoot.filePath(QString("android/basefileaz.azm2")));
+ // note that the android outs have changed
// but the pc outs are still the same.
pcouts.push_back(cacheRoot.filePath(QString("pc/basefile.arc2")));
pcouts2.push_back(cacheRoot.filePath(QString("pc/basefile.azm2")));
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs[0], "newfile."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts[0], "newfile."));
UNIT_TEST_EXPECT_TRUE(CreateDummyFile(pcouts[0], "newfile."));
- UNIT_TEST_EXPECT_TRUE(CreateDummyFile(es3outs2[0], "newfile."));
+ UNIT_TEST_EXPECT_TRUE(CreateDummyFile(androidouts2[0], "newfile."));
UNIT_TEST_EXPECT_TRUE(CreateDummyFile(pcouts2[0], "newfile."));
changedInputResults.clear();
assetMessages.clear();
@@ -1555,12 +1557,12 @@ namespace AssetProcessor
// send all the done messages simultaneously:
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs[0].toUtf8().constData(), AZ::Uuid::CreateNull(), 1));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts[0].toUtf8().constData(), AZ::Uuid::CreateNull(), 1));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[0].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
- response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(es3outs2[0].toUtf8().constData(), AZ::Uuid::CreateNull(), 2));
+ response.m_outputProducts.push_back(AssetBuilderSDK::JobProduct(androidouts2[0].toUtf8().constData(), AZ::Uuid::CreateNull(), 2));
QMetaObject::invokeMethod(&apm, "AssetProcessed", Qt::QueuedConnection, Q_ARG(JobEntry, processResults[1].m_jobEntry), Q_ARG(AssetBuilderSDK::ProcessJobResponse, response));
response.m_outputProducts.clear();
@@ -1620,11 +1622,11 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
// --------- same result as above ----------
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and es3,since we have two recognizer for .txt file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_computedFingerprint != 0);
@@ -1645,9 +1647,9 @@ namespace AssetProcessor
absolutePath = watchFolderPath + "/" + relativePathFromWatchFolder;
unsigned int fingerprintForPC = 0;
- unsigned int fingerprintForES3 = 0;
+ unsigned int fingerprintForANDROID = 0;
- ComputeFingerprints(fingerprintForPC, fingerprintForES3, config, watchFolderPath, relativePathFromWatchFolder);
+ ComputeFingerprints(fingerprintForPC, fingerprintForANDROID, config, watchFolderPath, relativePathFromWatchFolder);
processResults.clear();
QMetaObject::invokeMethod(&apm, "AssessModifiedFile", Qt::QueuedConnection, Q_ARG(QString, absolutePath));
@@ -1655,11 +1657,11 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // // 2 each for pc and es3,since we have two recognizer for .xxx file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // // 2 each for pc and android,since we have two recognizer for .xxx file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
@@ -1681,11 +1683,11 @@ namespace AssetProcessor
// we never actually submitted any fingerprints or indicated success, so the same number of jobs should occur as before
sortAssetToProcessResultList(processResults);
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // // 2 each for pc and es3,since we have two recognizer for .xxx file
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // // 2 each for pc and android,since we have two recognizer for .xxx file
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier);
UNIT_TEST_EXPECT_TRUE(processResults[2].m_jobEntry.m_platformInfo.m_identifier == processResults[3].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
UNIT_TEST_EXPECT_TRUE((processResults[2].m_jobEntry.m_platformInfo.m_identifier == "pc"));
UNIT_TEST_EXPECT_TRUE((processResults[3].m_jobEntry.m_platformInfo.m_identifier == "pc"));
@@ -1705,7 +1707,7 @@ namespace AssetProcessor
// now re-perform the same test, this time only the pc ones should re-appear.
// this should happen because we're changing the extra params, which should be part of the fingerprint
// if this unit test fails, check to make sure that the extra params are being ingested into the fingerprint computation functions
- // and also make sure that the jobs that are for the remaining es3 platform don't change.
+ // and also make sure that the jobs that are for the remaining android platform don't change.
// store the UUID so that we can insert the new one with the same UUID
AZStd::shared_ptr builderTxt2Builder;
@@ -1743,12 +1745,12 @@ namespace AssetProcessor
// ---------------------
unsigned int newfingerprintForPC = 0;
- unsigned int newfingerprintForES3 = 0;
+ unsigned int newfingerprintForANDROID = 0;
- ComputeFingerprints(newfingerprintForPC, newfingerprintForES3, config, watchFolderPath, relativePathFromWatchFolder);
+ ComputeFingerprints(newfingerprintForPC, newfingerprintForANDROID, config, watchFolderPath, relativePathFromWatchFolder);
UNIT_TEST_EXPECT_TRUE(newfingerprintForPC != fingerprintForPC);//Fingerprints should be different
- UNIT_TEST_EXPECT_TRUE(newfingerprintForES3 == fingerprintForES3);//Fingerprints are same
+ UNIT_TEST_EXPECT_TRUE(newfingerprintForANDROID == fingerprintForANDROID);//Fingerprints are same
config.RemoveRecognizer("xxx files 2 (builder2)");
mockAppManager.UnRegisterAssetRecognizerAsBuilder("xxx files 2 (builder2)");
@@ -1763,18 +1765,18 @@ namespace AssetProcessor
absolutePath = AssetUtilities::NormalizeFilePath(absolutePath);
QMetaObject::invokeMethod(&apm, "AssessModifiedFile", Qt::QueuedConnection, Q_ARG(QString, absolutePath));
UNIT_TEST_EXPECT_TRUE(BlockUntil(idling, 5000));
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 2); // pc and es3
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 2); // pc and android
UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier != processResults[1].m_jobEntry.m_platformInfo.m_identifier);
- UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "pc") || (processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3"));
- UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "pc") || (processResults[1].m_jobEntry.m_platformInfo.m_identifier == "es3"));
+ UNIT_TEST_EXPECT_TRUE((processResults[0].m_jobEntry.m_platformInfo.m_identifier == "pc") || (processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android"));
+ UNIT_TEST_EXPECT_TRUE((processResults[1].m_jobEntry.m_platformInfo.m_identifier == "pc") || (processResults[1].m_jobEntry.m_platformInfo.m_identifier == "android"));
unsigned int newfingerprintForPCAfterVersionChange = 0;
- unsigned int newfingerprintForES3AfterVersionChange = 0;
+ unsigned int newfingerprintForANDROIDAfterVersionChange = 0;
- ComputeFingerprints(newfingerprintForPCAfterVersionChange, newfingerprintForES3AfterVersionChange, config, watchFolderPath, relativePathFromWatchFolder);
+ ComputeFingerprints(newfingerprintForPCAfterVersionChange, newfingerprintForANDROIDAfterVersionChange, config, watchFolderPath, relativePathFromWatchFolder);
UNIT_TEST_EXPECT_TRUE((newfingerprintForPCAfterVersionChange != fingerprintForPC) || (newfingerprintForPCAfterVersionChange != newfingerprintForPC));//Fingerprints should be different
- UNIT_TEST_EXPECT_TRUE((newfingerprintForES3AfterVersionChange != fingerprintForES3) || (newfingerprintForES3AfterVersionChange != newfingerprintForES3));//Fingerprints should be different
+ UNIT_TEST_EXPECT_TRUE((newfingerprintForANDROIDAfterVersionChange != fingerprintForANDROID) || (newfingerprintForANDROIDAfterVersionChange != newfingerprintForANDROID));//Fingerprints should be different
//------Test for Files which are excluded
processResults.clear();
@@ -1919,7 +1921,7 @@ namespace AssetProcessor
UNIT_TEST_EXPECT_TRUE(processResults.size() == 0); // nothing to process
- // we are aware that 4 products went missing (es3 and pc versions of the 2 files since we renamed the SOURCE folder)
+ // we are aware that 4 products went missing (android and pc versions of the 2 files since we renamed the SOURCE folder)
UNIT_TEST_EXPECT_TRUE(assetMessages.size() == 4);
for (auto element : assetMessages)
{
@@ -2178,8 +2180,8 @@ namespace AssetProcessor
UNIT_TEST_EXPECT_TRUE(assetMessages[2].m_assetId != AZ::Data::AssetId());
UNIT_TEST_EXPECT_TRUE(assetMessages[3].m_assetId != AZ::Data::AssetId());
- UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "es3");
- UNIT_TEST_EXPECT_TRUE(assetMessages[1].m_platform == "es3");
+ UNIT_TEST_EXPECT_TRUE(assetMessages[0].m_platform == "android");
+ UNIT_TEST_EXPECT_TRUE(assetMessages[1].m_platform == "android");
UNIT_TEST_EXPECT_TRUE(assetMessages[2].m_platform == "pc");
UNIT_TEST_EXPECT_TRUE(assetMessages[3].m_platform == "pc");
@@ -2212,12 +2214,12 @@ namespace AssetProcessor
mockAppManager.UnRegisterAllBuilders();
AssetRecognizer abt_rec1;
- AssetPlatformSpec abt_speces3;
+ AssetPlatformSpec abt_specandroid;
abt_rec1.m_name = "UnitTestTextBuilder1";
abt_rec1.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.txt", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
//abt_rec1.m_regexp.setPatternSyntax(QRegExp::Wildcard);
//abt_rec1.m_regexp.setPattern("*.txt");
- abt_rec1.m_platformSpecs.insert("es3", speces3);
+ abt_rec1.m_platformSpecs.insert("android", specandroid);
mockAppManager.RegisterAssetRecognizerAsBuilder(abt_rec1);
AssetRecognizer abt_rec2;
@@ -2266,8 +2268,8 @@ namespace AssetProcessor
sortAssetToProcessResultList(processResults);
- UNIT_TEST_EXPECT_TRUE(processResults.size() == 2); // 1 for pc and es3
- UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == "es3");
+ UNIT_TEST_EXPECT_TRUE(processResults.size() == 2); // 1 for pc and android
+ UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == "android");
UNIT_TEST_EXPECT_TRUE(processResults[1].m_jobEntry.m_platformInfo.m_identifier == "pc");
UNIT_TEST_EXPECT_TRUE(QString::compare(processResults[0].m_jobEntry.GetAbsoluteSourcePath(), absolutePath, Qt::CaseInsensitive) == 0);
UNIT_TEST_EXPECT_TRUE(QString::compare(processResults[1].m_jobEntry.GetAbsoluteSourcePath(), absolutePath, Qt::CaseInsensitive) == 0);
diff --git a/Code/Tools/AssetProcessor/native/unittests/ConnectionUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/ConnectionUnitTests.cpp
index 29a0570d39..992cf09539 100644
--- a/Code/Tools/AssetProcessor/native/unittests/ConnectionUnitTests.cpp
+++ b/Code/Tools/AssetProcessor/native/unittests/ConnectionUnitTests.cpp
@@ -17,16 +17,16 @@ void ConnectionUnitTest::StartTest()
m_testConnection.SetAssetPlatformsString("pc");
AzFramework::AssetSystem::AssetNotificationMessage testMessage;
EXPECT_CALL(m_testConnection, Send(testing::_, testing::_)).Times(0);
- m_testConnection.SendPerPlatform(0, testMessage, "osx_gl");
+ m_testConnection.SendPerPlatform(0, testMessage, "mac");
EXPECT_CALL(m_testConnection, Send(testing::_, testing::_)).Times(1);
m_testConnection.SendPerPlatform(0, testMessage, "pc");
- m_testConnection.SetAssetPlatformsString("pc,es3");
+ m_testConnection.SetAssetPlatformsString("pc,android");
EXPECT_CALL(m_testConnection, Send(testing::_, testing::_)).Times(1);
m_testConnection.SendPerPlatform(0, testMessage, "pc");
EXPECT_CALL(m_testConnection, Send(testing::_, testing::_)).Times(0);
- m_testConnection.SendPerPlatform(0, testMessage, "osx_gl");
+ m_testConnection.SendPerPlatform(0, testMessage, "mac");
EXPECT_CALL(m_testConnection, Send(testing::_, testing::_)).Times(1);
- m_testConnection.SendPerPlatform(0, testMessage, "es3");
+ m_testConnection.SendPerPlatform(0, testMessage, "android");
EXPECT_CALL(m_testConnection, Send(testing::_, testing::_)).Times(0);
// Intended partial string match test - shouldn't send
m_testConnection.SendPerPlatform(0, testMessage, "es");
diff --git a/Code/Tools/AssetProcessor/native/unittests/MockConnectionHandler.h b/Code/Tools/AssetProcessor/native/unittests/MockConnectionHandler.h
index f0553d5e84..75ffdfe218 100644
--- a/Code/Tools/AssetProcessor/native/unittests/MockConnectionHandler.h
+++ b/Code/Tools/AssetProcessor/native/unittests/MockConnectionHandler.h
@@ -63,7 +63,7 @@ namespace AssetProcessor
size_t SendPerPlatform(unsigned int serial, const AzFramework::AssetSystem::BaseAssetProcessorMessage& message, const QString& platform) override
{
- if (QString::compare(platform, "pc", Qt::CaseInsensitive) == 0 || QString::compare(platform, "es3", Qt::CaseInsensitive) == 0)
+ if (QString::compare(platform, "pc", Qt::CaseInsensitive) == 0 || QString::compare(platform, "android", Qt::CaseInsensitive) == 0)
{
return Send(serial, message);
}
@@ -72,7 +72,7 @@ namespace AssetProcessor
size_t SendRawPerPlatform(unsigned int type, unsigned int serial, const QByteArray& data, const QString& platform) override
{
- if (QString::compare(platform, "pc", Qt::CaseInsensitive) == 0 || QString::compare(platform, "es3", Qt::CaseInsensitive) == 0)
+ if (QString::compare(platform, "pc", Qt::CaseInsensitive) == 0 || QString::compare(platform, "android", Qt::CaseInsensitive) == 0)
{
return SendRaw(type, serial, data);
}
diff --git a/Code/Tools/AssetProcessor/native/unittests/PlatformConfigurationUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/PlatformConfigurationUnitTests.cpp
index e09a6366a1..ff29cf2ca9 100644
--- a/Code/Tools/AssetProcessor/native/unittests/PlatformConfigurationUnitTests.cpp
+++ b/Code/Tools/AssetProcessor/native/unittests/PlatformConfigurationUnitTests.cpp
@@ -64,7 +64,7 @@ void PlatformConfigurationTests::StartTest()
PlatformConfiguration config;
config.EnablePlatform({ "pc",{ "desktop", "host" } }, true);
- config.EnablePlatform({ "es3",{ "mobile", "android" } }, true);
+ config.EnablePlatform({ "android",{ "mobile", "android" } }, true);
config.EnablePlatform({ "fandago",{ "console" } }, false);
AZStd::vector platforms;
config.PopulatePlatformsForScanFolder(platforms);
@@ -88,15 +88,15 @@ void PlatformConfigurationTests::StartTest()
AssetRecognizer rec;
AssetPlatformSpec specpc;
- AssetPlatformSpec speces3;
+ AssetPlatformSpec specandroid;
AssetPlatformSpec specfandago;
specpc.m_extraRCParams = ""; // blank must work
- speces3.m_extraRCParams = "testextraparams";
+ specandroid.m_extraRCParams = "testextraparams";
rec.m_name = "txt files";
rec.m_patternMatcher = AssetBuilderSDK::FilePatternMatcher("*.txt", AssetBuilderSDK::AssetBuilderPattern::Wildcard);
rec.m_platformSpecs.insert("pc", specpc);
- rec.m_platformSpecs.insert("es3", speces3);
+ rec.m_platformSpecs.insert("android", specandroid);
rec.m_platformSpecs.insert("fandago", specfandago);
config.AddRecognizer(rec);
@@ -111,7 +111,7 @@ void PlatformConfigurationTests::StartTest()
UNIT_TEST_EXPECT_TRUE(config.GetEnabledPlatforms().size() == 2);
UNIT_TEST_EXPECT_TRUE(config.GetEnabledPlatforms()[0].m_identifier == "pc");
- UNIT_TEST_EXPECT_TRUE(config.GetEnabledPlatforms()[1].m_identifier == "es3");
+ UNIT_TEST_EXPECT_TRUE(config.GetEnabledPlatforms()[1].m_identifier == "android");
UNIT_TEST_EXPECT_TRUE(config.GetScanFolderCount() == 11);
UNIT_TEST_EXPECT_FALSE(config.GetScanFolderAt(0).IsRoot());
diff --git a/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp
index 0e771f7fd1..02b98e5e33 100644
--- a/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp
+++ b/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp
@@ -239,14 +239,14 @@ void RCcontrollerUnitTests::RunRCControllerTests()
createdJobs.push_back(job);
}
- // double them up for "es3" to make sure that platform is respected
+ // double them up for "android" to make sure that platform is respected
for (QString name : tempJobNames)
{
AZ::Uuid uuidOfSource = AZ::Uuid::CreateName(name.toUtf8().constData());
RCJob* job0 = new RCJob(rcJobListModel);
AssetProcessor::JobDetails jobDetails;
jobDetails.m_jobEntry.m_databaseSourceName = jobDetails.m_jobEntry.m_pathRelativeToWatchFolder = name;
- jobDetails.m_jobEntry.m_platformInfo = { "es3" ,{ "mobile", "renderer" } };
+ jobDetails.m_jobEntry.m_platformInfo = { "android" ,{ "mobile", "renderer" } };
jobDetails.m_jobEntry.m_jobKey = "Compile Other Stuff";
jobDetails.m_jobEntry.m_sourceFileUUID = uuidOfSource;
job0->Init(jobDetails);
@@ -490,7 +490,7 @@ void RCcontrollerUnitTests::RunRCControllerTests()
UNIT_TEST_EXPECT_FALSE(gotJobsInQueueCall);
// submit same job but different platform:
- details.m_jobEntry = JobEntry("d:/test", "test1.txt", "test1.txt", AZ::Uuid("{7954065D-CFD1-4666-9E4C-3F36F417C7AC}"), { "es3" ,{ "mobile", "renderer" } }, "Test Job", 1234, 3, sourceId);
+ details.m_jobEntry = JobEntry("d:/test", "test1.txt", "test1.txt", AZ::Uuid("{7954065D-CFD1-4666-9E4C-3F36F417C7AC}"), { "android" ,{ "mobile", "renderer" } }, "Test Job", 1234, 3, sourceId);
m_rcController.JobSubmitted(details);
QCoreApplication::processEvents(QEventLoop::AllEvents);
diff --git a/Code/Tools/AssetProcessor/native/unittests/UnitTestRunner.cpp b/Code/Tools/AssetProcessor/native/unittests/UnitTestRunner.cpp
index 1e10002b53..650f3120dd 100644
--- a/Code/Tools/AssetProcessor/native/unittests/UnitTestRunner.cpp
+++ b/Code/Tools/AssetProcessor/native/unittests/UnitTestRunner.cpp
@@ -54,7 +54,7 @@ namespace UnitTestUtils
{
void SleepForMinimumFileSystemTime()
{
- // note that on OSX, the file system has a resolution of 1 second, and since we're using modtime for a bunch of things,
+ // note that on Mac, the file system has a resolution of 1 second, and since we're using modtime for a bunch of things,
// not the actual hash files, we have to wait different amount depending on the OS.
#ifdef AZ_PLATFORM_WINDOWS
int milliseconds = 1;
diff --git a/Code/Tools/AssetProcessor/testdata/config_broken_badplatform/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_broken_badplatform/AssetProcessorPlatformConfig.setreg
index 468ab68f5d..05ed19cb74 100644
--- a/Code/Tools/AssetProcessor/testdata/config_broken_badplatform/AssetProcessorPlatformConfig.setreg
+++ b/Code/Tools/AssetProcessor/testdata/config_broken_badplatform/AssetProcessorPlatformConfig.setreg
@@ -5,11 +5,11 @@
"Platform pc": {
"tags": "tools,renderer"
},
- "Platform osx_gl": {
+ "Platform mac": {
"tags": "tools,renderer"
},
"Platforms": {
- "es3": "enabled"
+ "android": "enabled"
},
"ScanFolder Game": {
"watch": "@PROJECTROOT@",
diff --git a/Code/Tools/AssetProcessor/testdata/config_broken_noscans/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_broken_noscans/AssetProcessorPlatformConfig.setreg
index 507fe4afb1..23f5725548 100644
--- a/Code/Tools/AssetProcessor/testdata/config_broken_noscans/AssetProcessorPlatformConfig.setreg
+++ b/Code/Tools/AssetProcessor/testdata/config_broken_noscans/AssetProcessorPlatformConfig.setreg
@@ -5,7 +5,7 @@
"Platform pc": {
"tags": "tools,renderer"
},
- "Platform osx_gl": {
+ "Platform mac": {
"tags": "tools,renderer"
},
"RC i_caf": {
diff --git a/Code/Tools/AssetProcessor/testdata/config_broken_recognizers/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_broken_recognizers/AssetProcessorPlatformConfig.setreg
index 0e687062b2..32c0af0593 100644
--- a/Code/Tools/AssetProcessor/testdata/config_broken_recognizers/AssetProcessorPlatformConfig.setreg
+++ b/Code/Tools/AssetProcessor/testdata/config_broken_recognizers/AssetProcessorPlatformConfig.setreg
@@ -5,7 +5,7 @@
"Platform pc": {
"tags": "tools,renderer"
},
- "Platform osx_gl": {
+ "Platform mac": {
"tags": "tools,renderer"
},
"ScanFolder Game": {
diff --git a/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg
index 1c5c487a46..c43996f3d5 100644
--- a/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg
+++ b/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg
@@ -5,17 +5,17 @@
"Platform pc": {
"tags": "tools,renderer"
},
- "Platform es3": {
+ "Platform android": {
"tags": "android,mobile,renderer"
},
- "Platform osx_gl": {
+ "Platform mac": {
"tags": "tools,renderer"
},
"Platform server": {
"tags": "server"
},
"Platforms": {
- "es3": "enabled",
+ "android": "enabled",
"server": "enabled"
},
"Jobs": {
@@ -56,7 +56,7 @@
"glob": "*.i_caf",
"params": "defaultparams",
"server": "skip",
- "es3": "mobile",
+ "android": "mobile",
"priority": 5,
"checkServer": true
},
@@ -68,7 +68,7 @@
"RC mov": {
"glob": "*.mov",
"params": "copy",
- "es3": "platformspecificoverride",
+ "android": "platformspecificoverride",
"renderer": "rendererparams"
},
"RC rend": {
diff --git a/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg
index e1c2d6e8cc..5fe1071fd5 100644
--- a/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg
+++ b/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg
@@ -5,13 +5,13 @@
"Platform pc": {
"tags": "tools,renderer"
},
- "Platform es3": {
+ "Platform android": {
"tags": "android,mobile,renderer"
},
"Platform ios": {
"tags": "mobile,renderer"
},
- "Platform osx_gl": {
+ "Platform mac": {
"tags": "tools,renderer"
},
"Platform server": {
@@ -21,7 +21,7 @@
"tags": "console,renderer"
},
"Platforms": {
- "es3": "enabled",
+ "android": "enabled",
"ios": "enabled",
"server": "enabled"
},
@@ -54,14 +54,14 @@
"display": "folder1output",
"recursive": 1,
"order": 50000,
- "include": "es3"
+ "include": "android"
},
"ScanFolder Folder2": {
"watch": "@ENGINEROOT@/Folder2",
"display": "folder2output",
"recursive": 1,
"order": 60000,
- "exclude": "es3"
+ "exclude": "android"
},
"ScanFolder Folder3": {
"watch": "@ENGINEROOT@/Folder3",
@@ -80,7 +80,7 @@
"glob": "*.i_caf",
"params": "defaultparams",
"server": "skip",
- "es3": "mobile",
+ "android": "mobile",
"test": "copy",
"priority": 5
},
@@ -92,7 +92,7 @@
"RC mov": {
"glob": "*.mov",
"params": "copy",
- "es3": "platformspecificoverride",
+ "android": "platformspecificoverride",
"renderer": "rendererparams"
},
"RC rend": {
diff --git a/Code/Tools/GridHub/GridHub/gridhub.cpp b/Code/Tools/GridHub/GridHub/gridhub.cpp
index 7f85ade238..4b2d8e425b 100644
--- a/Code/Tools/GridHub/GridHub/gridhub.cpp
+++ b/Code/Tools/GridHub/GridHub/gridhub.cpp
@@ -552,7 +552,7 @@ GridHubComponent::OnMemberJoined([[maybe_unused]] GridMate::GridSession* session
switch( member->GetPlatformId() )
{
case AZ::PlatformID::PLATFORM_WINDOWS_64:
- case AZ::PlatformID::PLATFORM_APPLE_OSX:
+ case AZ::PlatformID::PLATFORM_APPLE_MAC:
{
GridMate::string localMachineName = GridMate::Utils::GetMachineAddress();
if( member->GetMachineName() == localMachineName )
diff --git a/Code/Tools/ProjectManager/Resources/AddOffset.svg b/Code/Tools/ProjectManager/Resources/AddOffset.svg
new file mode 100644
index 0000000000..4c62234070
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/AddOffset.svg
@@ -0,0 +1,5 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/AddOffset_Hover.svg b/Code/Tools/ProjectManager/Resources/AddOffset_Hover.svg
new file mode 100644
index 0000000000..a0e2a07eda
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/AddOffset_Hover.svg
@@ -0,0 +1,5 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/ArrowBack.svg b/Code/Tools/ProjectManager/Resources/ArrowBack.svg
new file mode 100644
index 0000000000..749bb5a02e
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/ArrowBack.svg
@@ -0,0 +1,3 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/FolderOffset.svg b/Code/Tools/ProjectManager/Resources/FolderOffset.svg
new file mode 100644
index 0000000000..a048fbcc39
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/FolderOffset.svg
@@ -0,0 +1,5 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/FolderOffset_Hover.svg b/Code/Tools/ProjectManager/Resources/FolderOffset_Hover.svg
new file mode 100644
index 0000000000..fb13cd8558
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/FolderOffset_Hover.svg
@@ -0,0 +1,5 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/ProjectManager.qrc b/Code/Tools/ProjectManager/Resources/ProjectManager.qrc
index 2e60e84326..04d5e98a10 100644
--- a/Code/Tools/ProjectManager/Resources/ProjectManager.qrc
+++ b/Code/Tools/ProjectManager/Resources/ProjectManager.qrc
@@ -4,6 +4,12 @@
Add.svg
+ AddOffset.svg
+ AddOffset_Hover.svg
+ ArrowBack.svg
+ build.svg
+ FolderOffset.svg
+ FolderOffset_Hover.svg
Select_Folder.svg
o3de_editor.ico
Windows.svg
@@ -14,6 +20,9 @@
DefaultProjectImage.png
ArrowDownLine.svg
ArrowUpLine.svg
+ o3de.svg
+ menu.svg
+ menu_hover.svg
Backgrounds/FirstTimeBackgroundImage.jpg
ArrowDownLine.svg
ArrowUpLine.svg
diff --git a/Code/Tools/ProjectManager/Resources/ProjectManager.qss b/Code/Tools/ProjectManager/Resources/ProjectManager.qss
index 16ef48ee7c..5eb92964dd 100644
--- a/Code/Tools/ProjectManager/Resources/ProjectManager.qss
+++ b/Code/Tools/ProjectManager/Resources/ProjectManager.qss
@@ -1,29 +1,69 @@
/************** General (MainWindow) **************/
QMainWindow {
- background-color: #333333;
+ background:#131313 url(:/o3de.svg) no-repeat top left;
+ /* position the logo using padding and background-origin, Qt does not support background-position pixels */
+ background-origin:content;
+ padding:25px 16px;
+ margin:0;
}
-
QPushButton:focus {
outline: none;
border:1px solid #1e70eb;
}
+QTabBar {
+ background-color: transparent;
+}
+QTabWidget::tab-bar
+{
+ left: 78px; /* make room for the logo */
+}
+QTabBar::tab {
+ height:82px;
+ background-color: transparent;
+ font-size:24px;
+ min-width:100px;
+ margin-right:40px;
+ border-bottom: 3px solid transparent;
+}
+QTabBar::tab:text
+{
+ text-align:left;
+}
+QTabWidget::pane {
+ background-color: #333333;
+ border:0 none;
+}
+QTabBar::tab:selected
+{
+ border-bottom: 3px solid #1e70eb;
+ color: #1e70eb;
+}
+QTabBar::tab:hover
+{
+ color: #1e70eb;
+}
+QTabBar::tab:pressed
+{
+ color: #0e60eb;
+}
+
/************** General (Forms) **************/
#formLineEditWidget,
#formBrowseEditWidget {
- max-width: 780px;
+ max-width: 890px;
}
#formFrame {
- max-width: 720px;
+ max-width: 840px;
background-color: #444444;
border:1px solid #dddddd;
border-radius: 4px;
padding: 0px 10px 2px 6px;
margin-top:10px;
- margin-left:30px;
+ margin-left:50px;
}
#formFrame[Focus="true"] {
@@ -59,15 +99,241 @@ QPushButton:focus {
padding-top: -4px;
}
+
#formErrorLabel {
color: #ec3030;
font-size: 14px;
- margin-left: 40px;
+ margin-left: 50px;
}
#formTitleLabel {
font-size:21px;
color:#ffffff;
- margin: 10px 0 10px 30px;
+ margin: 24px 0 10px 50px;
}
+/************** General (Modal windows) **************/
+
+#header {
+ background-color:#111111;
+ min-height:80px;
+ max-height:80px;
+}
+
+#header QPushButton {
+ /* settings min/max lets us use a fixed size */
+ min-width: 24px;
+ max-width: 24px;
+ min-height: 24px;
+ max-height: 24px;
+ margin: 20px 10px 0px 10px;
+ background:transparent url(:/ArrowBack.svg) no-repeat center;
+ background-origin:content;
+ qproperty-flat: true;
+ qproperty-iconSize: 50px;
+}
+
+#header QPushButton:focus {
+ border:none;
+}
+#header QPushButton:hover {
+ background:#333333 url(:/ArrowBack.svg) no-repeat center;
+}
+#header QPushButton:pressed {
+ background:#222222 url(:/ArrowBack.svg) no-repeat center;
+}
+
+#headerTitle {
+ font-size:14px;
+ text-align:left;
+ margin:0;
+ padding-top:10px;
+ padding-bottom:-5px;
+ min-height:15px;
+ max-height:15px;
+}
+#headerSubTitle {
+ font-size:24px;
+ text-align:left;
+ margin:0;
+ min-height:42px;
+ max-height:42px;
+}
+
+#body {
+ background-color:#333333;
+}
+#footer {
+ /* settings min/max lets us use a fixed size */
+ min-width: 50px;
+ min-height:54px;
+ max-height:54px;
+}
+
+#footer > QPushButton {
+ qproperty-flat: true;
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #0095f2, stop: 1.0 #1e70eb);
+ border-radius: 3px;
+ min-height: 28px;
+ max-height: 28px;
+ min-width: 150px;
+ margin-right:30px;
+}
+#footer > QPushButton:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #10A5f2, stop: 1.0 #2e80eb);
+}
+#footer > QPushButton:pressed {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #0085e2, stop: 1.0 #0e60db);
+}
+
+#footer > QPushButton[secondary="true"] {
+ margin-right: 10px;
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #888888, stop: 1.0 #555555);
+}
+#footer > QPushButton[secondary="true"]:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #999999, stop: 1.0 #666666);
+}
+#footer > QPushButton[secondary="true"]:pressed {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #555555, stop: 1.0 #777777);
+}
+
+/************** Project Settings **************/
+#projectSettings {
+ margin-top:42px;
+}
+
+#projectTemplate {
+ margin: 55px 0 0 50px;
+ max-width: 780px;
+ min-height:200px;
+ max-height:200px;
+}
+#projectTemplateLabel {
+ font-size:16px;
+ font-weight:100;
+}
+
+#projectTemplateDetailsLabel {
+ font-size:14px;
+ min-height:40px;
+ margin-bottom:20px;
+}
+
+#projectTemplateDetails {
+ background-color:#444444;
+ max-width:240px;
+ min-width:240px;
+ margin-left:30px;
+}
+
+/************** Projects **************/
+#firstTimeContent > #titleLabel {
+ font-size:60px;
+ margin:73px 0px 0px 0px;
+ qproperty-indent: 0;
+}
+
+#firstTimeContent > #introLabel {
+ font-size:14px;
+ margin:10px 0 60px 0;
+ qproperty-indent: 0;
+}
+
+#firstTimeContent > QPushButton {
+ min-width: 210px;
+ max-width: 210px;
+ min-height: 276px;
+ max-height: 276px;
+ qproperty-flat: true;
+ background-origin:content;
+ font-size:14px;
+ border: 1px solid #ffffff;
+}
+
+#firstTimeContent > QPushButton:hover {
+ border: 1px solid #1e70eb;
+ color: #1e70eb;
+}
+
+#firstTimeContent > QPushButton:pressed {
+ border: 1px solid #0e60eb;
+ color: #0e60eb;
+}
+
+#createProjectButton {
+ background:rgba(0,0,0,180) url(:/AddOffset.svg) no-repeat center center;
+}
+#createProjectButton:hover,
+#createProjectButton:pressed {
+ background:rgba(0,0,0,180) url(:/AddOffset_Hover.svg) no-repeat center center;
+}
+
+#addProjectButton {
+ background:rgba(0,0,0,180) url(:/FolderOffset.svg) no-repeat center center;
+}
+#addProjectButton:hover,
+#addProjectButton:pressed {
+ background:rgba(0,0,0,180) url(:/FolderOffset_Hover.svg) no-repeat center center;
+}
+
+#projectsContent > QFrame {
+ margin-top:60px;
+}
+
+#projectsContent > QFrame > #titleLabel {
+ font-size:24px;
+ qproperty-indent: 0;
+}
+
+#projectsContent > QScrollArea {
+ margin-top:40px;
+ margin-bottom:5px;
+}
+
+#projectButton > #labelButton {
+ border:1px solid white;
+}
+#projectButton > #labelButton:hover,
+#projectButton > #labelButton:pressed {
+ border:1px solid #1e70eb;
+}
+
+#projectButton > QFrame {
+ margin-top:6px;
+}
+
+#projectButton > QFrame > QLabel {
+ font-weight:bold;
+ font-size:14px;
+ qproperty-indent: 0;
+}
+
+#projectMenuButton {
+ qproperty-flat: true;
+ background:transparent url(:/menu.svg) no-repeat center center;
+ max-width:30px;
+ min-width:30px;
+ max-height:14px;
+ min-height:14px;
+}
+
+#projectsContent > QFrame > #newProjectButton {
+ min-width:150px;
+ max-width:150px;
+ min-height:26px;
+ max-height:26px;
+}
+
+#labelButtonOverlay {
+ background-color: rgba(50,50,50,200);
+ min-width:210px;
+ max-width:210px;;
+ min-height:278px;
+ max-height:278px;
+}
\ No newline at end of file
diff --git a/Code/Tools/ProjectManager/Resources/build.svg b/Code/Tools/ProjectManager/Resources/build.svg
new file mode 100644
index 0000000000..b6c3546443
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/build.svg
@@ -0,0 +1,11 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/menu.svg b/Code/Tools/ProjectManager/Resources/menu.svg
new file mode 100644
index 0000000000..a639c74ab4
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/menu.svg
@@ -0,0 +1,5 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/menu_hover.svg b/Code/Tools/ProjectManager/Resources/menu_hover.svg
new file mode 100644
index 0000000000..4eea63faca
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/menu_hover.svg
@@ -0,0 +1,5 @@
+
diff --git a/Code/Tools/ProjectManager/Resources/o3de.svg b/Code/Tools/ProjectManager/Resources/o3de.svg
new file mode 100644
index 0000000000..bb6e596a00
--- /dev/null
+++ b/Code/Tools/ProjectManager/Resources/o3de.svg
@@ -0,0 +1,3 @@
+
diff --git a/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp b/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp
index 03e6a34b89..69f0a3983d 100644
--- a/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp
+++ b/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp
@@ -14,11 +14,17 @@
#include
#include
#include
+#include
+#include
#include
+#include
#include
#include
#include
+#include
+#include
+#include
namespace O3DE::ProjectManager
{
@@ -26,29 +32,34 @@ namespace O3DE::ProjectManager
: ScreenWidget(parent)
{
QVBoxLayout* vLayout = new QVBoxLayout();
- setLayout(vLayout);
+ vLayout->setContentsMargins(0,0,0,0);
- m_screensCtrl = new ScreensCtrl();
- vLayout->addWidget(m_screensCtrl);
+ m_header = new ScreenHeader(this);
+ m_header->setTitle(tr("Create a New Project"));
+ m_header->setSubTitle(tr("Enter Project Details"));
+ connect(m_header->backButton(), &QPushButton::clicked, this, &CreateProjectCtrl::HandleBackButton);
+ vLayout->addWidget(m_header);
+
+ m_stack = new QStackedWidget(this);
+ m_stack->setObjectName("body");
+ m_stack->setSizePolicy(QSizePolicy(QSizePolicy::Preferred,QSizePolicy::Expanding));
+ m_stack->addWidget(new NewProjectSettingsScreen());
+ m_stack->addWidget(new GemCatalogScreen());
+ vLayout->addWidget(m_stack);
QDialogButtonBox* backNextButtons = new QDialogButtonBox();
+ backNextButtons->setObjectName("footer");
vLayout->addWidget(backNextButtons);
m_backButton = backNextButtons->addButton(tr("Back"), QDialogButtonBox::RejectRole);
+ m_backButton->setProperty("secondary", true);
m_nextButton = backNextButtons->addButton(tr("Next"), QDialogButtonBox::ApplyRole);
- connect(m_backButton, &QPushButton::pressed, this, &CreateProjectCtrl::HandleBackButton);
- connect(m_nextButton, &QPushButton::pressed, this, &CreateProjectCtrl::HandleNextButton);
+ connect(m_backButton, &QPushButton::clicked, this, &CreateProjectCtrl::HandleBackButton);
+ connect(m_nextButton, &QPushButton::clicked, this, &CreateProjectCtrl::HandleNextButton);
- m_screensOrder =
- {
- ProjectManagerScreen::NewProjectSettings,
- ProjectManagerScreen::GemCatalog
- };
- m_screensCtrl->BuildScreens(m_screensOrder);
- m_screensCtrl->ForceChangeToScreen(ProjectManagerScreen::NewProjectSettings, false);
-
- UpdateNextButtonText();
+ Update();
+ setLayout(vLayout);
}
ProjectManagerScreen CreateProjectCtrl::GetScreenEnum()
@@ -58,28 +69,20 @@ namespace O3DE::ProjectManager
void CreateProjectCtrl::HandleBackButton()
{
- if (!m_screensCtrl->GotoPreviousScreen())
+ if (m_stack->currentIndex() > 0)
{
- emit GotoPreviousScreenRequest();
+ m_stack->setCurrentIndex(m_stack->currentIndex() - 1);
+ Update();
}
else
{
- UpdateNextButtonText();
+ emit GotoPreviousScreenRequest();
}
}
void CreateProjectCtrl::HandleNextButton()
{
- ScreenWidget* currentScreen = m_screensCtrl->GetCurrentScreen();
+ ScreenWidget* currentScreen = reinterpret_cast(m_stack->currentWidget());
ProjectManagerScreen screenEnum = currentScreen->GetScreenEnum();
- auto screenOrderIter = m_screensOrder.begin();
- for (; screenOrderIter != m_screensOrder.end(); ++screenOrderIter)
- {
- if (*screenOrderIter == screenEnum)
- {
- ++screenOrderIter;
- break;
- }
- }
if (screenEnum == ProjectManagerScreen::NewProjectSettings)
{
@@ -97,10 +100,10 @@ namespace O3DE::ProjectManager
}
}
- if (screenOrderIter != m_screensOrder.end())
+ if (m_stack->currentIndex() != m_stack->count() - 1)
{
- m_screensCtrl->ChangeToScreen(*screenOrderIter);
- UpdateNextButtonText();
+ m_stack->setCurrentIndex(m_stack->currentIndex() + 1);
+ Update();
}
else
{
@@ -108,7 +111,7 @@ namespace O3DE::ProjectManager
if (result.IsSuccess())
{
// adding gems is not implemented yet because we don't know what targets to add or how to add them
- emit ChangeScreenRequest(ProjectManagerScreen::ProjectsHome);
+ emit ChangeScreenRequest(ProjectManagerScreen::Projects);
}
else
{
@@ -117,14 +120,21 @@ namespace O3DE::ProjectManager
}
}
- void CreateProjectCtrl::UpdateNextButtonText()
+ void CreateProjectCtrl::Update()
{
- QString nextButtonText = tr("Next");
- if (m_screensCtrl->GetCurrentScreen()->GetScreenEnum() == ProjectManagerScreen::GemCatalog)
+ ScreenWidget* currentScreen = reinterpret_cast(m_stack->currentWidget());
+ if (currentScreen && currentScreen->GetScreenEnum() == ProjectManagerScreen::GemCatalog)
{
- nextButtonText = tr("Create Project");
+ m_header->setTitle(tr("Create Project"));
+ m_header->setSubTitle(tr("Configure project with Gems"));
+ m_nextButton->setText(tr("Create Project"));
+ }
+ else
+ {
+ m_header->setTitle(tr("Create Project"));
+ m_header->setSubTitle(tr("Enter Project Details"));
+ m_nextButton->setText(tr("Next"));
}
- m_nextButton->setText(nextButtonText);
}
} // namespace O3DE::ProjectManager
diff --git a/Code/Tools/ProjectManager/Source/CreateProjectCtrl.h b/Code/Tools/ProjectManager/Source/CreateProjectCtrl.h
index 213bff3bc2..01e3349b21 100644
--- a/Code/Tools/ProjectManager/Source/CreateProjectCtrl.h
+++ b/Code/Tools/ProjectManager/Source/CreateProjectCtrl.h
@@ -12,15 +12,18 @@
#pragma once
#if !defined(Q_MOC_RUN)
-#include "ProjectInfo.h"
#include
-#include
-#include
+#include
#endif
+QT_FORWARD_DECLARE_CLASS(QStackedWidget)
+QT_FORWARD_DECLARE_CLASS(QPushButton)
+QT_FORWARD_DECLARE_CLASS(QLabel)
namespace O3DE::ProjectManager
{
+ QT_FORWARD_DECLARE_CLASS(ScreenHeader)
+
class CreateProjectCtrl
: public ScreenWidget
{
@@ -34,12 +37,13 @@ namespace O3DE::ProjectManager
void HandleNextButton();
private:
- void UpdateNextButtonText();
+ void Update();
+
+ QStackedWidget* m_stack;
+ ScreenHeader* m_header;
- ScreensCtrl* m_screensCtrl;
QPushButton* m_backButton;
QPushButton* m_nextButton;
- QVector m_screensOrder;
QString m_projectTemplatePath;
ProjectInfo m_projectInfo;
diff --git a/Code/Tools/ProjectManager/Source/EngineSettingsScreen.cpp b/Code/Tools/ProjectManager/Source/EngineSettingsScreen.cpp
index f51996bd65..6342041da4 100644
--- a/Code/Tools/ProjectManager/Source/EngineSettingsScreen.cpp
+++ b/Code/Tools/ProjectManager/Source/EngineSettingsScreen.cpp
@@ -82,6 +82,16 @@ namespace O3DE::ProjectManager
return ProjectManagerScreen::EngineSettings;
}
+ QString EngineSettingsScreen::GetTabText()
+ {
+ return tr("Engine");
+ }
+
+ bool EngineSettingsScreen::IsTab()
+ {
+ return true;
+ }
+
void EngineSettingsScreen::OnTextChanged()
{
// save engine settings
diff --git a/Code/Tools/ProjectManager/Source/EngineSettingsScreen.h b/Code/Tools/ProjectManager/Source/EngineSettingsScreen.h
index 0e91ec2d3b..36e329cdf6 100644
--- a/Code/Tools/ProjectManager/Source/EngineSettingsScreen.h
+++ b/Code/Tools/ProjectManager/Source/EngineSettingsScreen.h
@@ -26,7 +26,10 @@ namespace O3DE::ProjectManager
public:
explicit EngineSettingsScreen(QWidget* parent = nullptr);
~EngineSettingsScreen() = default;
+
ProjectManagerScreen GetScreenEnum() override;
+ QString GetTabText() override;
+ bool IsTab() override;
protected slots:
void OnTextChanged();
diff --git a/Code/Tools/ProjectManager/Source/FirstTimeUseScreen.cpp b/Code/Tools/ProjectManager/Source/FirstTimeUseScreen.cpp
deleted file mode 100644
index 8654b221fb..0000000000
--- a/Code/Tools/ProjectManager/Source/FirstTimeUseScreen.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
- * its licensors.
- *
- * For complete copyright and license terms please see the LICENSE at the root of this
- * distribution (the "License"). All use of this software is governed by the License,
- * or, if provided, by the license below or the license accompanying this file. Do not
- * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *
- */
-
-#include
-
-#include
-#include