diff --git a/AutomatedTesting/Gem/PythonTests/NvCloth/C18977329_NvCloth_AddClothSimulationToMesh.py b/AutomatedTesting/Gem/PythonTests/NvCloth/C18977329_NvCloth_AddClothSimulationToMesh.py
index 625c9772bd..5cfc57fd5f 100755
--- a/AutomatedTesting/Gem/PythonTests/NvCloth/C18977329_NvCloth_AddClothSimulationToMesh.py
+++ b/AutomatedTesting/Gem/PythonTests/NvCloth/C18977329_NvCloth_AddClothSimulationToMesh.py
@@ -11,7 +11,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18977329
# Test Case Title : Add cloth simulation to a Mesh
-# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18977329
# fmt: off
class Tests:
diff --git a/AutomatedTesting/Gem/PythonTests/NvCloth/C18977330_NvCloth_AddClothSimulationToActor.py b/AutomatedTesting/Gem/PythonTests/NvCloth/C18977330_NvCloth_AddClothSimulationToActor.py
index 9b3135cd2b..c21df8ea4c 100755
--- a/AutomatedTesting/Gem/PythonTests/NvCloth/C18977330_NvCloth_AddClothSimulationToActor.py
+++ b/AutomatedTesting/Gem/PythonTests/NvCloth/C18977330_NvCloth_AddClothSimulationToActor.py
@@ -11,7 +11,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18977330
# Test Case Title : Add cloth simulation to an Actor
-# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18977330
# fmt: off
class Tests:
diff --git a/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798177_WhiteBox_AddComponentToEntity.py b/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798177_WhiteBox_AddComponentToEntity.py
index dabc04575f..86a27e588e 100755
--- a/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798177_WhiteBox_AddComponentToEntity.py
+++ b/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798177_WhiteBox_AddComponentToEntity.py
@@ -12,7 +12,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C28798177
# Test Case Title : White Box Tool Component can be added to an Entity
-# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/28798177
# fmt:off
diff --git a/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798205_WhiteBox_SetInvisible.py b/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798205_WhiteBox_SetInvisible.py
index 18a5c3164e..7a2a08a8ce 100755
--- a/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798205_WhiteBox_SetInvisible.py
+++ b/AutomatedTesting/Gem/PythonTests/WhiteBox/C28798205_WhiteBox_SetInvisible.py
@@ -12,7 +12,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C28798205
# Test Case Title : From the White Box Component Card the White Box Mesh can be set to be invisible in Game View
-# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/28798205
# fmt:off
diff --git a/AutomatedTesting/Gem/PythonTests/WhiteBox/C29279329_WhiteBox_SetDefaultShape.py b/AutomatedTesting/Gem/PythonTests/WhiteBox/C29279329_WhiteBox_SetDefaultShape.py
index e892285dde..635c804914 100755
--- a/AutomatedTesting/Gem/PythonTests/WhiteBox/C29279329_WhiteBox_SetDefaultShape.py
+++ b/AutomatedTesting/Gem/PythonTests/WhiteBox/C29279329_WhiteBox_SetDefaultShape.py
@@ -12,7 +12,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C29279329
# Test Case Title : White Box mesh shape can be changed with the Default Shape dropdown on the Component
-# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/29279329
# fmt:off
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
index f84e367d1d..0b75760e05 100644
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
@@ -18,7 +18,7 @@ import pytest
import editor_python_test_tools.hydra_test_utils as hydra
logger = logging.getLogger(__name__)
-EDITOR_TIMEOUT = 120
+EDITOR_TIMEOUT = 300
TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "atom_hydra_scripts")
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius.py
index 1ccfc43585..d0c6fc3c5a 100755
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius.py
@@ -82,42 +82,34 @@ class TestDistanceBetweenFilterComponentOverrides(EditorTestHelper):
editor.EditorComponentAPIBus(bus.Broadcast, "SetComponentProperty", veg_system_settings_component,
'Configuration|Area System Settings|Sector Point Density', 16)
- # Add a Vegetation Debugger component to allow area refreshes
- hydra.add_level_component("Vegetation Debugger")
-
# 5) Add a Vegetation Distance Between Filter, toggle overrides on both the component and descriptor,
# and verify initial instance counts are accurate
spawner_entity.add_component("Vegetation Distance Between Filter")
spawner_entity.get_set_test(3, "Configuration|Allow Per-Item Overrides", True)
spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]|Distance Between Filter (Radius)|Override Enabled", True)
- general.run_console('veg_debugClearAllAreas')
- self.test_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 2), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 2), 5.0) and \
- self.test_success
+ num_expected = 16 * 16
+ initial_success = self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected), 5.0)
+ self.test_success = self.test_success and initial_success
# 6) Change Radius Min to 1.0, refresh, and verify instance counts are accurate
spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]|Distance Between Filter (Radius)|Radius Min", 1.0)
- general.run_console('veg_debugClearAllAreas')
- self.test_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 1), 5.0) and \
- self.test_success
+ point_a_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0)
+ point_b_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0)
+ point_c_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 1), 5.0)
+ self.test_success = self.test_success and point_a_success and point_b_success and point_c_success
# 7) Change Radius Min to 2.0, refresh, and verify instance counts are accurate
spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]|Distance Between Filter (Radius)|Radius Min", 2.0)
- general.run_console('veg_debugClearAllAreas')
- self.test_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 0), 5.0) and \
- self.test_success
+ point_a_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0)
+ point_b_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0)
+ point_c_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 0), 5.0)
+ self.test_success = self.test_success and point_a_success and point_b_success and point_c_success
# 8) Change Radius Min to 16.0, refresh, and verify instance counts are accurate, only a single instance should plant
spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]|Distance Between Filter (Radius)|Radius Min", 16.0)
- general.run_console('veg_debugClearAllAreas')
num_expected_instances = 1
final_check_success = self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
- self.test_success = final_check_success and self.test_success
+ self.test_success = self.test_success and final_check_success
test = TestDistanceBetweenFilterComponentOverrides()
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius.py
index 09c5fd63cf..d342afd7ca 100755
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius.py
@@ -80,35 +80,29 @@ class TestDistanceBetweenFilterComponent(EditorTestHelper):
editor.EditorComponentAPIBus(bus.Broadcast, "SetComponentProperty", veg_system_settings_component,
'Configuration|Area System Settings|Sector Point Density', 16)
- # Add a Vegetation Debugger component to allow area refreshes
- hydra.add_level_component("Vegetation Debugger")
-
# 5) Add a Vegetation Distance Between Filter and verify initial instance counts are accurate
spawner_entity.add_component("Vegetation Distance Between Filter")
- self.test_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 2), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 2), 5.0) and \
- self.test_success
+ num_expected = 16 * 16
+ num_expected = 16 * 16
+ initial_success = self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected), 5.0)
+ self.test_success = self.test_success and initial_success
# 6) Change Radius Min to 1.0, refresh, and verify instance counts are accurate
spawner_entity.get_set_test(3, "Configuration|Radius Min", 1.0)
- general.run_console('veg_debugClearAllAreas')
- self.test_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 1), 5.0) and \
- self.test_success
+ point_a_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0)
+ point_b_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0)
+ point_c_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 1), 5.0)
+ self.test_success = self.test_success and point_a_success and point_b_success and point_c_success
# 7) Change Radius Min to 2.0, refresh, and verify instance counts are accurate
spawner_entity.get_set_test(3, "Configuration|Radius Min", 2.0)
- general.run_console('veg_debugClearAllAreas')
- self.test_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0) and \
- self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 0), 5.0) and \
- self.test_success
+ point_a_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_a, 0.5, 1), 5.0)
+ point_b_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_b, 0.5, 0), 5.0)
+ point_c_success = self.wait_for_condition(lambda: dynveg.validate_instance_count(instance_query_point_c, 0.5, 0), 5.0)
+ self.test_success = self.test_success and point_a_success and point_b_success and point_c_success
# 8) Change Radius Min to 16.0, refresh, and verify instance counts are accurate
spawner_entity.get_set_test(3, "Configuration|Radius Min", 16.0)
- general.run_console('veg_debugClearAllAreas')
num_expected_instances = 1
final_check_success = self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
self.test_success = final_check_success and self.test_success
diff --git a/AutomatedTesting/Gem/PythonTests/physics/C14976308_ScriptCanvas_SetKinematicTargetTransform.py b/AutomatedTesting/Gem/PythonTests/physics/C14976308_ScriptCanvas_SetKinematicTargetTransform.py
index c76c5cab80..8400364626 100755
--- a/AutomatedTesting/Gem/PythonTests/physics/C14976308_ScriptCanvas_SetKinematicTargetTransform.py
+++ b/AutomatedTesting/Gem/PythonTests/physics/C14976308_ScriptCanvas_SetKinematicTargetTransform.py
@@ -68,7 +68,7 @@ def C14976308_ScriptCanvas_SetKinematicTargetTransform():
the script deactivates Signal, Sphere's transform will update to that of Transform_Target.
NOTE: There is a known bug (LY-107723) which causes the rotation to update to a value that is not sufficiently close
to the expected result when using Set Kinematic Target which will cause the test to fail:
- https://jira.agscollab.com/browse/LY-107723
+ LY-107723
Test Steps:
1) Open level and enter game mode
diff --git a/AutomatedTesting/Gem/PythonTests/physics/C3510644_Collider_CollisionGroups.py b/AutomatedTesting/Gem/PythonTests/physics/C3510644_Collider_CollisionGroups.py
index 4ae10288bd..e714da9de7 100755
--- a/AutomatedTesting/Gem/PythonTests/physics/C3510644_Collider_CollisionGroups.py
+++ b/AutomatedTesting/Gem/PythonTests/physics/C3510644_Collider_CollisionGroups.py
@@ -13,7 +13,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C3510644
# Test Case Title : Check that the collision layer and collision group of the terrain can be changed
# and the collision behavior of the terrain changes accordingly
-# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/3510644
# fmt: off
diff --git a/AutomatedTesting/Gem/PythonTests/physics/C6321601_Force_HighValuesDirectionAxes.py b/AutomatedTesting/Gem/PythonTests/physics/C6321601_Force_HighValuesDirectionAxes.py
index 4b0b036970..08083a7868 100755
--- a/AutomatedTesting/Gem/PythonTests/physics/C6321601_Force_HighValuesDirectionAxes.py
+++ b/AutomatedTesting/Gem/PythonTests/physics/C6321601_Force_HighValuesDirectionAxes.py
@@ -239,7 +239,7 @@ def C6321601_Force_HighValuesDirectionAxes():
force_notification_handler.add_callback("OnCalculateNetForce", on_calc_net_force)
# Wait for 3 secs, because there is a known bug identified and filed in
- # JIRA https://jira.agscollab.com/browse/LY-107677
+ # JIRA LY-107677
# The error "[Error] Huge object being added to a COctreeNode, name: 'MeshComponentRenderNode', objBox:"
# will show (if occured) in about 3 sec into the game mode.
helper.wait_for_condition(has_physx_error, 3.0)
diff --git a/AutomatedTesting/Gem/PythonTests/physics/TestSuite_InDevelopment.py b/AutomatedTesting/Gem/PythonTests/physics/TestSuite_InDevelopment.py
index 8f098941ea..8986c1024a 100755
--- a/AutomatedTesting/Gem/PythonTests/physics/TestSuite_InDevelopment.py
+++ b/AutomatedTesting/Gem/PythonTests/physics/TestSuite_InDevelopment.py
@@ -50,7 +50,7 @@ class TestAutomation(TestAutomationBase):
unexpected_lines = ["Assert"]
self._run_test(request, workspace, editor, test_module, expected_lines, unexpected_lines)
- # BUG: https://jira.agscollab.com/browse/LY-107723")
+ # BUG: LY-107723")
def test_C14976308_ScriptCanvas_SetKinematicTargetTransform(self, request, workspace, editor):
from . import C14976308_ScriptCanvas_SetKinematicTargetTransform as test_module
diff --git a/AutomatedTesting/Gem/PythonTests/physics/UtilTest_Physmaterial_Editor.py b/AutomatedTesting/Gem/PythonTests/physics/UtilTest_Physmaterial_Editor.py
index 5f24f41083..b6d7c610e3 100755
--- a/AutomatedTesting/Gem/PythonTests/physics/UtilTest_Physmaterial_Editor.py
+++ b/AutomatedTesting/Gem/PythonTests/physics/UtilTest_Physmaterial_Editor.py
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
'''
This unittest might have to be refactored once changes to Physmaterial_Editor.py are made.
These changes will occur after the but, reverence below is resloved.
-Bug: https://jira.agscollab.com/browse/LY-107392
+Bug: LY-107392
'''
class Tests:
opening_bad_file = ("Bad file could not be opened", "Bad file was opened")
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_CreateScriptEventFile.py b/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_CreateScriptEventFile.py
index dcbbf47f0c..b844f9e4af 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_CreateScriptEventFile.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_CreateScriptEventFile.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92569013
Test Case Title: Script Event file can be created
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569013
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_NewScriptEvent.py b/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_NewScriptEvent.py
index 1f801d4eeb..e4fec76fe2 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_NewScriptEvent.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/AssetEditor_NewScriptEvent.py
@@ -12,7 +12,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92568942
Test Case Title: Clicking the "+" button and selecting "New Script Event" opens the
Asset Editor with a new Script Event asset
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92568942
"""
from PySide2 import QtWidgets
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleEntities.py b/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleEntities.py
index a26cb4f923..0947b0bb51 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleEntities.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleEntities.py
@@ -11,7 +11,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92568856
Test Case Title: Multiple Entities can be targeted in the Debugger tool
-URLs of the test case: https://testrail.agscollab.com/index.php?/tests/view/92568856
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleGraphs.py b/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleGraphs.py
index 4aa5c822a7..8d2c39f288 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleGraphs.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Debugging_TargetMultipleGraphs.py
@@ -11,7 +11,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92569137
Test Case Title: Multiple Graphs can be targeted in the Debugger tool
-URLs of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569137
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Docking_Pane.py b/AutomatedTesting/Gem/PythonTests/scripting/Docking_Pane.py
index 4fa1e1257f..537b4d817a 100755
--- a/AutomatedTesting/Gem/PythonTests/scripting/Docking_Pane.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Docking_Pane.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: C1702824
Test Case Title: Docking
-URLs of the test case: https://testrail.agscollab.com/index.php?/cases/view/1702824
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/EditMenu_UndoRedo.py b/AutomatedTesting/Gem/PythonTests/scripting/EditMenu_UndoRedo.py
index a87d9e9be9..38ceb8335b 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/EditMenu_UndoRedo.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/EditMenu_UndoRedo.py
@@ -11,10 +11,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92569049
Test Case Title: Edit > Undo undoes the last action
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569049
Test case ID: T92569051
Test Case Title: Edit > Redo redoes the last undone action
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569051
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Entity_AddScriptCanvasComponent.py b/AutomatedTesting/Gem/PythonTests/scripting/Entity_AddScriptCanvasComponent.py
index fd8e9b1173..47bbb955ec 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/Entity_AddScriptCanvasComponent.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Entity_AddScriptCanvasComponent.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92562978
Test Case Title: Script Canvas Component can be added to an entity
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92562978
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/FileMenu_New_Open.py b/AutomatedTesting/Gem/PythonTests/scripting/FileMenu_New_Open.py
index f72ac8ea01..3206590a8d 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/FileMenu_New_Open.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/FileMenu_New_Open.py
@@ -11,10 +11,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92569037
Test Case Title: File > New Script creates a new script
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569037
Test case ID: T92569039
Test Case Title: File > Open opens the Open... dialog
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569039
"""
import os
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/GraphClose_SavePrompt.py b/AutomatedTesting/Gem/PythonTests/scripting/GraphClose_SavePrompt.py
index ce610b159b..ec8f0c8fb6 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/GraphClose_SavePrompt.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/GraphClose_SavePrompt.py
@@ -11,11 +11,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92563070
Test Case Title: Graphs can be closed by clicking X on the Graph name tab
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92563070
Test case ID: T92563068
Test Case Title: Save Prompt: User is prompted to save a graph on close after
creating a new graph
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92563068
"""
import os
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Graph_ZoomInZoomOut.py b/AutomatedTesting/Gem/PythonTests/scripting/Graph_ZoomInZoomOut.py
index a93b6e61d1..d2765bfdf7 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/Graph_ZoomInZoomOut.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Graph_ZoomInZoomOut.py
@@ -11,10 +11,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92569079
Test Case Title: View > Zoom In zooms the graph in
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569079
Test case ID: T92569081
Test Case Title: View > Zoom In zooms the graph out
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569081
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/NodeCategory_ExpandOnClick.py b/AutomatedTesting/Gem/PythonTests/scripting/NodeCategory_ExpandOnClick.py
index 00a19d1715..141cdbea8d 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/NodeCategory_ExpandOnClick.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/NodeCategory_ExpandOnClick.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92562988
Test Case Title: Left-click/double click expands and collapses node categories
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92562988
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/NodeInspector_RenameVariable.py b/AutomatedTesting/Gem/PythonTests/scripting/NodeInspector_RenameVariable.py
index 33d3f4137a..550969e32a 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/NodeInspector_RenameVariable.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/NodeInspector_RenameVariable.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92568982
Test Case Title: Renaming variables in the Node Inspector
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92568982
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_ClearSelection.py b/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_ClearSelection.py
index de30e46767..979bcff02e 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_ClearSelection.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_ClearSelection.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92562993
Test Case Title: Clicking the X button on the Search Box clears the currently entered string
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92562993
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SearchText_Deletion.py b/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SearchText_Deletion.py
new file mode 100644
index 0000000000..0739a8e637
--- /dev/null
+++ b/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SearchText_Deletion.py
@@ -0,0 +1,91 @@
+"""
+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.
+"""
+
+
+# fmt: off
+class Tests():
+ set_search_string = ("Search string is set", "Search string is not set")
+ search_string_deleted = ("Search string deleted as expected", "Search string not deleted")
+# fmt: on
+
+
+def NodePalette_SearchText_Deletion():
+ """
+ Summary:
+ We enter some string in the Node Palette Search box, select that text and delete it.
+
+ Expected Behavior:
+ After RightClick->Delete the text in the Searchbox should be deleted.
+
+ Test Steps:
+ 1) Open Script Canvas window (Tools > Script Canvas)
+ 2) Get the SC window object
+ 3) Open Node Manager if not opened already
+ 4) Set some string in the Search box
+ 5) Verify if the test string is set
+ 6) Delete search string using right click and verify if it is cleared
+
+ Note:
+ - This test file must be called from the Open 3D Engine Editor command terminal
+ - Any passed and failed tests are written to the Editor.log file.
+ Parsing the file or running a log_monitor are required to observe the test results.
+
+ :return: None
+ """
+
+ from PySide2 import QtWidgets, QtTest, QtCore
+
+ from utils import TestHelper as helper
+
+ import azlmbr.legacy.general as general
+
+ import pyside_utils
+
+ TEST_STRING = "TestString"
+
+ # 1) Open Script Canvas window (Tools > Script Canvas)
+ general.idle_enable(True)
+ general.open_pane("Script Canvas")
+ helper.wait_for_condition(lambda: general.is_pane_visible("Script Canvas"), 3.0)
+
+ # 2) Get the SC window object
+ editor_window = pyside_utils.get_editor_main_window()
+ sc = editor_window.findChild(QtWidgets.QDockWidget, "Script Canvas")
+
+ # 3) Open Node Manager if not opened already
+ if sc.findChild(QtWidgets.QDockWidget, "NodePalette") is None:
+ action = pyside_utils.find_child_by_pattern(sc, {"text": "Node Palette", "type": QtWidgets.QAction})
+ action.trigger()
+ node_palette = sc.findChild(QtWidgets.QDockWidget, "NodePalette")
+ search_frame = node_palette.findChild(QtWidgets.QFrame, "searchFrame")
+
+ # 4) Set some string in the Search box
+ search_box = search_frame.findChild(QtWidgets.QLineEdit, "searchFilter")
+ search_box.setText(TEST_STRING)
+
+ # 5) Verify if the test string is set
+ result = helper.wait_for_condition(lambda: search_box.text() == TEST_STRING, 1.0)
+ Report.result(Tests.set_search_string, result)
+
+ # 6) Delete search string using right click and verify if it is cleared
+ QtTest.QTest.keyClick(search_box, QtCore.Qt.Key_A, QtCore.Qt.ControlModifier)
+ pyside_utils.trigger_context_menu_entry(search_box, "Delete")
+ result = helper.wait_for_condition(lambda: search_box.text() == "", 2.0)
+ Report.result(Tests.search_string_deleted, result)
+
+
+if __name__ == "__main__":
+ import ImportPathHelper as imports
+
+ imports.init()
+ from utils import Report
+
+ Report.start_test(NodePalette_SearchText_Deletion)
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SelectNode.py b/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SelectNode.py
index 2ab76071a6..374dc4e1a0 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SelectNode.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/NodePalette_SelectNode.py
@@ -11,7 +11,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92568940
Test Case Title: Categories and Nodes can be selected
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92568940
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/OnEntityActivatedDeactivated_PrintMessage.py b/AutomatedTesting/Gem/PythonTests/scripting/OnEntityActivatedDeactivated_PrintMessage.py
index 51b63c4268..00893d6acb 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/OnEntityActivatedDeactivated_PrintMessage.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/OnEntityActivatedDeactivated_PrintMessage.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92569253 // T92569254
Test Case Title: On Entity Activated // On Entity Deactivated
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92569253 // https://testrail.agscollab.com/index.php?/tests/view/92569254
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Opening_Closing_Pane.py b/AutomatedTesting/Gem/PythonTests/scripting/Opening_Closing_Pane.py
index 666f052240..48c40eb05e 100755
--- a/AutomatedTesting/Gem/PythonTests/scripting/Opening_Closing_Pane.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Opening_Closing_Pane.py
@@ -10,8 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: C1702834 // C1702823
Test Case Title: Opening pane // Closing pane
-URLs of the test case: https://testrail.agscollab.com/index.php?/cases/view/1702834 and
- https://testrail.agscollab.com/index.php?/cases/view/1702823
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Pane_RetainOnSCRestart.py b/AutomatedTesting/Gem/PythonTests/scripting/Pane_RetainOnSCRestart.py
index fa5e9e6068..adf9b5f35a 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/Pane_RetainOnSCRestart.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Pane_RetainOnSCRestart.py
@@ -10,8 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: C1702821 // C1702832
Test Case Title: Retain visibility, size and location upon Script Canvas restart
-URLs of the test case: https://testrail.agscollab.com/index.php?/cases/view/1702821 and
- https://testrail.agscollab.com/index.php?/cases/view/1702832
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Resizing_Pane.py b/AutomatedTesting/Gem/PythonTests/scripting/Resizing_Pane.py
index 180f577953..bbae3afefd 100755
--- a/AutomatedTesting/Gem/PythonTests/scripting/Resizing_Pane.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Resizing_Pane.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: C1702829
Test Case Title: Resizing pane
-URLs of the test case: https://testrail.agscollab.com/index.php?/cases/view/1702829
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_ChangingAssets.py b/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_ChangingAssets.py
index 38d60ad871..bb4de4a6c9 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_ChangingAssets.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_ChangingAssets.py
@@ -11,7 +11,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92562986
Test Case Title: Changing the assigned Script Canvas Asset on an entity properly updates
level functionality
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92562986
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoComponents.py b/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoComponents.py
index 896bee96e5..6187ac81ba 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoComponents.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoComponents.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92563190
Test Case Title: A single Entity with two Script Canvas components works properly
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92563190
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoEntities.py b/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoEntities.py
index 401e6c0271..9453c31488 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoEntities.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/ScriptCanvas_TwoEntities.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92563191
Test Case Title: Two Entities can use the same Graph asset successfully at RunTime
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92563191
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveAcrossMultiple.py b/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveAcrossMultiple.py
index d671229cdf..a2913d3468 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveAcrossMultiple.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveAcrossMultiple.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92567321
Test Case Title: Script Events: Can send and receive a script event across multiple entities successfully
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92567321
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveSuccessfully.py b/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveSuccessfully.py
index b5e26d14ae..388e2bb7c0 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveSuccessfully.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/ScriptEvents_SendReceiveSuccessfully.py
@@ -10,7 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92567320
Test Case Title: Script Events: Can send and receive a script event successfully
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92567320
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/TestSuite_Active.py b/AutomatedTesting/Gem/PythonTests/scripting/TestSuite_Active.py
index 192e11d378..dda75f0a0c 100755
--- a/AutomatedTesting/Gem/PythonTests/scripting/TestSuite_Active.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/TestSuite_Active.py
@@ -195,6 +195,14 @@ class TestAutomation(TestAutomationBase):
def test_NodeCategory_ExpandOnClick(self, request, workspace, editor, launcher_platform):
from . import NodeCategory_ExpandOnClick as test_module
self._run_test(request, workspace, editor, test_module)
+
+ def test_NodePalette_SearchText_Deletion(self, request, workspace, editor, launcher_platform):
+ from . import NodePalette_SearchText_Deletion as test_module
+ self._run_test(request, workspace, editor, test_module)
+
+ def test_VariableManager_UnpinVariableType_Works(self, request, workspace, editor, launcher_platform):
+ from . import VariableManager_UnpinVariableType_Works as test_module
+ self._run_test(request, workspace, editor, test_module)
# NOTE: We had to use hydra_test_utils.py, as TestAutomationBase run_test method
# fails because of pyside_utils import
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/Toggle_ScriptCanvasTools.py b/AutomatedTesting/Gem/PythonTests/scripting/Toggle_ScriptCanvasTools.py
index 4024e28277..42cc42de0d 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/Toggle_ScriptCanvasTools.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/Toggle_ScriptCanvasTools.py
@@ -13,11 +13,6 @@ Test Case Title: Tools > Node Palette toggles the Node Palette
Tools > Node Inspector toggles the Node Inspector
Tools > Bookmarks toggles the Bookmarks
Tools > Variable Manager toggles the Variable Manager
-
-URLs of the test case: https://testrail.agscollab.com/index.php?/cases/view/92569165
- https://testrail.agscollab.com/index.php?/cases/view/92569167
- https://testrail.agscollab.com/index.php?/cases/view/92569168
- https://testrail.agscollab.com/index.php?/cases/view/92569170
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/UnDockedPane_CloseSCWindow.py b/AutomatedTesting/Gem/PythonTests/scripting/UnDockedPane_CloseSCWindow.py
index 875f28ec95..da33a8ab80 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/UnDockedPane_CloseSCWindow.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/UnDockedPane_CloseSCWindow.py
@@ -10,8 +10,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: C1702825 // C1702831
Test Case Title: Undocking // Closing script canvas with the pane floating
-URLs of the test case: https://testrail.agscollab.com/index.php?/cases/view/1702825 &
- https://testrail.agscollab.com/index.php?/cases/view/1702831
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_CreateDeleteVars.py b/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_CreateDeleteVars.py
index 6facc324d4..8b5c78fa87 100644
--- a/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_CreateDeleteVars.py
+++ b/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_CreateDeleteVars.py
@@ -10,10 +10,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID: T92564789
Test Case Title: Each Variable type can be created
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92564789
Test case ID: T92568873
Test Case Title: Each Variable type can be deleted
-URL of the test case: https://testrail.agscollab.com/index.php?/tests/view/92568873
"""
diff --git a/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_UnpinVariableType_Works.py b/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_UnpinVariableType_Works.py
new file mode 100644
index 0000000000..7076f60385
--- /dev/null
+++ b/AutomatedTesting/Gem/PythonTests/scripting/VariableManager_UnpinVariableType_Works.py
@@ -0,0 +1,121 @@
+"""
+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.
+"""
+
+
+# fmt: off
+class Tests():
+ variable_manager_opened = ("VariableManager is opened successfully", "Failed to open VariableManager")
+ variable_pinned = ("Variable is pinned", "Variable is not pinned, But it should be unpinned")
+ variable_unpinned = ("Variable is unpinned", "Variable is not unpinned, But it should be pinned")
+ variable_unpinned_after_reopen = ("Variable is unpinned after reopening create variable menu", "Variable is not unpinned after reopening create variable menu")
+# fmt: on
+
+
+def VariableManager_UnpinVariableType_Works():
+ """
+ Summary:
+ Unpin variable types in create variable menu.
+ Expected Behavior:
+ The variable unpinned in create variable menu remains unpinned after reopening create variable menu.
+ Test Steps:
+ 1) Open Script Canvas window (Tools > Script Canvas)
+ 2) Get the SC window object
+ 3) Open Variable Manager in Script Canvas window
+ 4) Create new graph
+ 5) Click on the Create Variable button in the Variable Manager
+ 6) Unpin Boolean by clicking the "Pin" icon on its left side
+ 7) Close and Reopen Create Variable menu and make sure Boolean is unpinned after reopening Create Variable menu
+ 8) Restore default layout and close SC window
+ Note:
+ - This test file must be called from the Open 3D Engine Editor command terminal
+ - Any passed and failed tests are written to the Editor.log file.
+ Parsing the file or running a log_monitor are required to observe the test results.
+ :return: None
+ """
+
+ from PySide2 import QtWidgets
+ import azlmbr.legacy.general as general
+
+ import pyside_utils
+ from utils import TestHelper as helper
+ from utils import Report
+ from PySide2.QtCore import Qt
+
+ GENERAL_WAIT = 1.0 # seconds
+
+ def find_pane(window, pane_name):
+ return window.findChild(QtWidgets.QDockWidget, pane_name)
+
+ def click_menu_option(window, option_text):
+ action = pyside_utils.find_child_by_pattern(window, {"text": option_text, "type": QtWidgets.QAction})
+ action.trigger()
+
+ # 1) Open Script Canvas window (Tools > Script Canvas)
+ general.idle_enable(True)
+ general.open_pane("Script Canvas")
+ helper.wait_for_condition(lambda: general.is_pane_visible("Script Canvas"), 6.0)
+
+ # 2) Get the SC window object
+ editor_window = pyside_utils.get_editor_main_window()
+ sc = editor_window.findChild(QtWidgets.QDockWidget, "Script Canvas")
+ sc_main = sc.findChild(QtWidgets.QMainWindow)
+
+ # 3) Open Variable Manager in Script Canvas window
+ pane = find_pane(sc, "VariableManager")
+ if not pane.isVisible():
+ click_menu_option(sc, "Variable Manager")
+ pane = find_pane(sc, "VariableManager")
+ Report.result(Tests.variable_manager_opened, pane.isVisible())
+
+ # 4) Create new graph
+ create_new_graph = pyside_utils.find_child_by_pattern(
+ sc_main, {"objectName": "action_New_Script", "type": QtWidgets.QAction}
+ )
+ create_new_graph.trigger()
+
+ # 5) Click on the Create Variable button in the Variable Manager
+ variable_manager = sc_main.findChild(QtWidgets.QDockWidget, "VariableManager")
+ button = variable_manager.findChild(QtWidgets.QPushButton, "addButton")
+ button.click()
+
+ # 6) Unpin Boolean by clicking the "Pin" icon on its left side
+ table_view = variable_manager.findChild(QtWidgets.QTableView, "variablePalette")
+ model_index = pyside_utils.find_child_by_pattern(table_view, "Boolean")
+ # Make sure Boolean is pinned
+ is_boolean = model_index.siblingAtColumn(0)
+ result = helper.wait_for_condition(lambda: is_boolean.data(Qt.DecorationRole) is not None, GENERAL_WAIT)
+ Report.result(Tests.variable_pinned, result)
+ # Unpin Boolean and make sure Boolean is unpinned.
+ pyside_utils.item_view_index_mouse_click(table_view, is_boolean)
+ result = helper.wait_for_condition(lambda: is_boolean.data(Qt.DecorationRole) is None, GENERAL_WAIT)
+ Report.result(Tests.variable_unpinned, result)
+
+ # 7) Close and Reopen Create Variable menu and make sure Boolean is unpinned after reopening Create Variable menu
+ button.click()
+ button.click()
+ model_index = pyside_utils.find_child_by_pattern(table_view, "Boolean")
+ result = helper.wait_for_condition(
+ lambda: model_index.siblingAtColumn(0).data(Qt.DecorationRole) is None, GENERAL_WAIT
+ )
+ Report.result(Tests.variable_unpinned_after_reopen, result)
+
+ # 8) Restore default layout and close SC window
+ click_menu_option(sc, "Restore Default Layout")
+ general.close_pane("Script Canvas")
+
+
+if __name__ == "__main__":
+ import ImportPathHelper as imports
+
+ imports.init()
+
+ from utils import Report
+
+ Report.start_test(VariableManager_UnpinVariableType_Works)
diff --git a/AutomatedTesting/Slices/1m_Cube.slice b/AutomatedTesting/Slices/1m_Cube.slice
index 5ace34bd10..b31869c7fa 100644
--- a/AutomatedTesting/Slices/1m_Cube.slice
+++ b/AutomatedTesting/Slices/1m_Cube.slice
@@ -39,6 +39,7 @@
+
@@ -61,7 +62,7 @@
-
+
@@ -122,38 +123,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/AutomatedTesting/sounds/.gitignore b/AutomatedTesting/sounds/.gitignore
new file mode 100644
index 0000000000..80c66daa1c
--- /dev/null
+++ b/AutomatedTesting/sounds/.gitignore
@@ -0,0 +1,8 @@
+.backup/
+.cache/
+*.log
+*.akd
+*.dat
+*.prof
+*.validationcache
+*.wsettings
\ No newline at end of file
diff --git a/AutomatedTesting/sounds/wwise/Init.bnk b/AutomatedTesting/sounds/wwise/Init.bnk
index 530a7e007f..292288ff26 100644
--- a/AutomatedTesting/sounds/wwise/Init.bnk
+++ b/AutomatedTesting/sounds/wwise/Init.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:803ddb37eb27cba666f9320c2f5905219193e1a069d1144a64df92fab0e31878
-size 1243
+oid sha256:c9e6a4ef3d2f33f31827ce2bba2ed8bad87324f3fe86f79389ef2956b304a924
+size 1180
diff --git a/AutomatedTesting/sounds/wwise/Init.txt b/AutomatedTesting/sounds/wwise/Init.txt
index 038359ac1a..4b989c4017 100644
--- a/AutomatedTesting/sounds/wwise/Init.txt
+++ b/AutomatedTesting/sounds/wwise/Init.txt
@@ -21,5 +21,4 @@ Audio Bus ID Name Wwise Object Path Notes
Audio Devices ID Name Type Notes
2317455096 No_Output No Output
3859886410 System System
- 4230635974 Default_Motion_Device Wwise Motion
diff --git a/AutomatedTesting/sounds/wwise/PluginInfo.xml b/AutomatedTesting/sounds/wwise/PluginInfo.xml
index 61e689f373..19f3fe9c1b 100644
--- a/AutomatedTesting/sounds/wwise/PluginInfo.xml
+++ b/AutomatedTesting/sounds/wwise/PluginInfo.xml
@@ -1,9 +1,8 @@
-
+
-
-
-
-
+
+
+
diff --git a/AutomatedTesting/sounds/wwise/SoundbanksInfo.xml b/AutomatedTesting/sounds/wwise/SoundbanksInfo.xml
index 22ae71f4dc..d7bfecaa53 100644
--- a/AutomatedTesting/sounds/wwise/SoundbanksInfo.xml
+++ b/AutomatedTesting/sounds/wwise/SoundbanksInfo.xml
@@ -1,11 +1,11 @@
-
+
- Q:\audio\dev\AutomatedTesting\sounds\wwise_project\
- Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\
- Q:\audio\dev\AutomatedTesting\sounds\wwise\
+ D:\code\o3de\AutomatedTesting\sounds\wwise_project\
+ D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\
+ D:\code\o3de\AutomatedTesting\sounds\wwise\
- Q:\audio\dev\AutomatedTesting\sounds\wwise_project\GeneratedSoundBanks\Windows
+ D:\code\o3de\AutomatedTesting\sounds\wwise_project\GeneratedSoundBanks\Windows
@@ -28,7 +28,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank2
test_bank2
test_bank2.bnk
@@ -37,7 +37,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank3
test_bank3
test_bank3.bnk
@@ -60,7 +60,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank1
test_bank1
test_bank1.bnk
@@ -83,7 +83,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank6
test_bank6
test_bank6.bnk
@@ -102,7 +102,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank7
test_bank7
test_bank7.bnk
@@ -125,7 +125,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank4
test_bank4
test_bank4.bnk
@@ -136,7 +136,7 @@
-
+
\SoundBanks\Default Work Unit\test_bank5
test_bank5
test_bank5.bnk
@@ -169,7 +169,7 @@
-
+
Init
Init
Init.bnk
diff --git a/AutomatedTesting/sounds/wwise/test_bank1.bnk b/AutomatedTesting/sounds/wwise/test_bank1.bnk
index 9e8f50a98a..bd0e1e66cb 100644
--- a/AutomatedTesting/sounds/wwise/test_bank1.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank1.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:94ea13931c13592deba669bd4920328ff96f17e6f8fce280d03f00251a96327a
-size 94122
+oid sha256:3db299d7d823b649ff20a7ffc986dccfce1fa3189f178491e2712d6c00b317af
+size 94126
diff --git a/AutomatedTesting/sounds/wwise/test_bank1.txt b/AutomatedTesting/sounds/wwise/test_bank1.txt
index a0c6e13621..5ec2e4b96b 100644
--- a/AutomatedTesting/sounds/wwise/test_bank1.txt
+++ b/AutomatedTesting/sounds/wwise/test_bank1.txt
@@ -3,8 +3,8 @@ Event ID Name Wwise Object Path Notes
865645077 test_event_1_bank1_embedded_target \Default Work Unit\test_event_1_bank1_embedded_target
In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size
- 23965881 test_sfx_1_bank1_embedded Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\AMZ_sfx_NME_wpn_plasma_pistol_fire_impact004_56D34C19.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_1_bank1_embedded 93864
+ 23965881 test_sfx_1_bank1_embedded D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\AMZ_sfx_NME_wpn_plasma_pistol_fire_impact004_56D34C19.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_1_bank1_embedded 93864
Streamed Audio ID Name Audio source file Generated audio file Wwise Object Path Notes
- 499820003 test_sfx_2_bank1_streamed Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\env_door_scanner_scan_success_56D34C19.wem 499820003.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_2_bank1_streamed
+ 499820003 test_sfx_2_bank1_streamed D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\env_door_scanner_scan_success_56D34C19.wem 499820003.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_2_bank1_streamed
diff --git a/AutomatedTesting/sounds/wwise/test_bank2.bnk b/AutomatedTesting/sounds/wwise/test_bank2.bnk
index 2e31c359bf..ee96554646 100644
--- a/AutomatedTesting/sounds/wwise/test_bank2.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank2.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ad73fd0981e47fe3313eff51d2841ea5fd522a99103684d696849e7353277ea9
-size 430
+oid sha256:1bdaed4dc5cc514a8a3ddfaf990f59061514af7962a7a112eb677ad5c45fcb85
+size 434
diff --git a/AutomatedTesting/sounds/wwise/test_bank3.bankdeps b/AutomatedTesting/sounds/wwise/test_bank3.bankdeps
index 606dbdbac8..51a952d463 100644
--- a/AutomatedTesting/sounds/wwise/test_bank3.bankdeps
+++ b/AutomatedTesting/sounds/wwise/test_bank3.bankdeps
@@ -2,9 +2,9 @@
"version": "1.0",
"bankName": "test_bank3.bnk",
"dependencies": [
- "196049145.wem",
+ "test_bank4.bnk",
"Init.bnk",
- "test_bank4.bnk"
+ "196049145.wem"
],
"includedEvents": [
"test_event_5_bank3_embedded_target_bank4",
diff --git a/AutomatedTesting/sounds/wwise/test_bank3.bnk b/AutomatedTesting/sounds/wwise/test_bank3.bnk
index 32e6161e6c..6b83836c18 100644
--- a/AutomatedTesting/sounds/wwise/test_bank3.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank3.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:33eabaa646e9567017946bee05b1b5a835e91862f63145ebe5a2fbdd9c9f5a49
-size 226
+oid sha256:57c75cf8745b31071a788a20d8de5a60cedbfb8a6155eae1a461b8c6501e5479
+size 230
diff --git a/AutomatedTesting/sounds/wwise/test_bank3.txt b/AutomatedTesting/sounds/wwise/test_bank3.txt
index ca6efc6e02..9a843afad7 100644
--- a/AutomatedTesting/sounds/wwise/test_bank3.txt
+++ b/AutomatedTesting/sounds/wwise/test_bank3.txt
@@ -3,5 +3,5 @@ Event ID Name Wwise Object Path Notes
645979556 test_event_6_bank3_streamed_target_bank4 \Default Work Unit\test_event_6_bank3_streamed_target_bank4 Event that lives in test_bank3. This event targets only one media, which is streamed from test_bank4.
Streamed Audio ID Name Audio source file Generated audio file Wwise Object Path Notes
- 196049145 test_sfx_6_bank4_streamed Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\AMZ_sfx_NME_wpn_plasma_pistol_fire003_56D34C19.wem 196049145.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_6_bank4_streamed
+ 196049145 test_sfx_6_bank4_streamed D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\AMZ_sfx_NME_wpn_plasma_pistol_fire003_56D34C19.wem 196049145.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_6_bank4_streamed
diff --git a/AutomatedTesting/sounds/wwise/test_bank4.bnk b/AutomatedTesting/sounds/wwise/test_bank4.bnk
index e169744d84..5f5883d559 100644
--- a/AutomatedTesting/sounds/wwise/test_bank4.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank4.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:79d308f3c50fece383fd82fd0060e26558e6a2e78a4ecd5d8afe24907489a88f
+oid sha256:3a635f7d1ccb256caed90d18ca566cd0fa56d49b491af7c88c0b5da55a3ef4fe
size 142234
diff --git a/AutomatedTesting/sounds/wwise/test_bank4.txt b/AutomatedTesting/sounds/wwise/test_bank4.txt
index 770cb7f171..7649b0eed5 100644
--- a/AutomatedTesting/sounds/wwise/test_bank4.txt
+++ b/AutomatedTesting/sounds/wwise/test_bank4.txt
@@ -1,3 +1,3 @@
In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size
- 666825490 test_sfx_5_bank4_embedded Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\AMZN_sfx_env_commsarray_apllyupdate_end_56D34C19.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_5_bank4_embedded 142170
+ 666825490 test_sfx_5_bank4_embedded D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\AMZN_sfx_env_commsarray_apllyupdate_end_56D34C19.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_5_bank4_embedded 142170
diff --git a/AutomatedTesting/sounds/wwise/test_bank5.bnk b/AutomatedTesting/sounds/wwise/test_bank5.bnk
index b4e629d9a7..168c7c1a4d 100644
--- a/AutomatedTesting/sounds/wwise/test_bank5.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank5.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:80c02f30d439ffcfb479e4a82b0269fe4f479c50019028e51f0fa6e3fea0bfdd
-size 290
+oid sha256:fa329eeb83184e88b7ab26fbff2479a98232210bcd130801041b20ccb3bcf16e
+size 294
diff --git a/AutomatedTesting/sounds/wwise/test_bank5.txt b/AutomatedTesting/sounds/wwise/test_bank5.txt
index 0f66c57f8e..3d560cf9f5 100644
--- a/AutomatedTesting/sounds/wwise/test_bank5.txt
+++ b/AutomatedTesting/sounds/wwise/test_bank5.txt
@@ -5,5 +5,5 @@ Event ID Name Wwise Object Path Notes
3546419658 test_event_7_bank5_referenced_event_bank1_embedded \Default Work Unit\test_event_7_bank5_referenced_event_bank1_embedded
Streamed Audio ID Name Audio source file Generated audio file Wwise Object Path Notes
- 499820003 test_sfx_2_bank1_streamed Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\env_door_scanner_scan_success_56D34C19.wem 499820003.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_2_bank1_streamed
+ 499820003 test_sfx_2_bank1_streamed D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\env_door_scanner_scan_success_56D34C19.wem 499820003.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_2_bank1_streamed
diff --git a/AutomatedTesting/sounds/wwise/test_bank6.bnk b/AutomatedTesting/sounds/wwise/test_bank6.bnk
index 18ee92b51d..4c942037f0 100644
--- a/AutomatedTesting/sounds/wwise/test_bank6.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank6.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:07d132d54b2c747e2409a56c05a4adca0dfa4407b791ffaa6bb14531f92f89aa
-size 494
+oid sha256:80d3014fcfd3a8ff37219515f0c9d67a2a674094002538ac6741702dca07c14d
+size 498
diff --git a/AutomatedTesting/sounds/wwise/test_bank7.bankdeps b/AutomatedTesting/sounds/wwise/test_bank7.bankdeps
index 02be60a544..56cf29c619 100644
--- a/AutomatedTesting/sounds/wwise/test_bank7.bankdeps
+++ b/AutomatedTesting/sounds/wwise/test_bank7.bankdeps
@@ -2,9 +2,9 @@
"version": "1.0",
"bankName": "test_bank7.bnk",
"dependencies": [
+ "656567798.wem",
"601903616.wem",
- "Init.bnk",
- "656567798.wem"
+ "Init.bnk"
],
"includedEvents": [
"test_event_11_bank7_streamed_target",
diff --git a/AutomatedTesting/sounds/wwise/test_bank7.bnk b/AutomatedTesting/sounds/wwise/test_bank7.bnk
index abc398d1f1..c01346fd58 100644
--- a/AutomatedTesting/sounds/wwise/test_bank7.bnk
+++ b/AutomatedTesting/sounds/wwise/test_bank7.bnk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:990538a33c72e79d63cab0c191b4e0f199688b923bb6bdcc8888aab375e7d11d
-size 226
+oid sha256:0de33094b9792d7f9ff8042e16b153dd76729e9010d6713e1824d2229c653042
+size 230
diff --git a/AutomatedTesting/sounds/wwise/test_bank7.txt b/AutomatedTesting/sounds/wwise/test_bank7.txt
index 033c2ea5b9..3bf2da686b 100644
--- a/AutomatedTesting/sounds/wwise/test_bank7.txt
+++ b/AutomatedTesting/sounds/wwise/test_bank7.txt
@@ -3,6 +3,6 @@ Event ID Name Wwise Object Path Notes
2110064689 test_event_11_bank7_streamed_target \Default Work Unit\test_event_11_bank7_streamed_target
Streamed Audio ID Name Audio source file Generated audio file Wwise Object Path Notes
- 601903616 test_sfx_8_bank7_streamed Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\gun_blaster_no_trigger_shot_1_56D34C19.wem 601903616.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_8_bank7_streamed
- 656567798 test_sfx_7_bank7_streamed Q:\audio\dev\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\impact_bot_hits_metalelement_56D34C19.wem 656567798.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_7_bank7_streamed
+ 601903616 test_sfx_8_bank7_streamed D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\gun_blaster_no_trigger_shot_1_56D34C19.wem 601903616.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_8_bank7_streamed
+ 656567798 test_sfx_7_bank7_streamed D:\code\o3de\AutomatedTesting\sounds\wwise_project\.cache\Windows\SFX\impact_bot_hits_metalelement_56D34C19.wem 656567798.wem \Actor-Mixer Hierarchy\Default Work Unit\test_sfx_7_bank7_streamed
diff --git a/AutomatedTesting/sounds/wwise_project/Actor-Mixer Hierarchy/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Actor-Mixer Hierarchy/Default Work Unit.wwu
index 8cc6eeecc2..33ac513281 100644
--- a/AutomatedTesting/sounds/wwise_project/Actor-Mixer Hierarchy/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Actor-Mixer Hierarchy/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
@@ -21,6 +21,7 @@
+
@@ -50,6 +51,7 @@
+
@@ -72,6 +74,7 @@
+
@@ -101,6 +104,7 @@
+
@@ -130,6 +134,7 @@
+
@@ -159,6 +164,7 @@
+
@@ -187,6 +193,7 @@
SFX
+
@@ -215,6 +222,7 @@
SFX
+
diff --git a/AutomatedTesting/sounds/wwise_project/Attenuations/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Attenuations/Default Work Unit.wwu
index 9034f07366..955c7d9e4a 100644
--- a/AutomatedTesting/sounds/wwise_project/Attenuations/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Attenuations/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Audio Devices/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Audio Devices/Default Work Unit.wwu
index 472e9b12d1..f56682b0bf 100644
--- a/AutomatedTesting/sounds/wwise_project/Audio Devices/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Audio Devices/Default Work Unit.wwu
@@ -1,11 +1,10 @@
-
+
-
diff --git a/AutomatedTesting/sounds/wwise_project/AutomatedTesting.wproj b/AutomatedTesting/sounds/wwise_project/AutomatedTesting.wproj
new file mode 100644
index 0000000000..1aead159ad
--- /dev/null
+++ b/AutomatedTesting/sounds/wwise_project/AutomatedTesting.wproj
@@ -0,0 +1,13491 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GeneratedSoundBanks\Windows
+
+
+
+
+ 256
+
+
+
+
+
+ ..\wwise\
+
+
+
+
+ Copy Streamed Files and Generate Dependency Info
+
+
+
+
+ "$(CopyStreamedFilesExePath)" -info "$(InfoFilePath)" -outputpath "$(SoundBankPath)" -banks "$(SoundBankListAsTextFile)" -languages "$(LanguageList)"
+"$(WwiseProjectPath)\..\..\..\python\python.cmd" "$(WwiseProjectPath)\..\..\..\Gems\AudioEngineWwise\Tools\WwiseAuthoringScripts\bank_info_parser.py" "$(InfoFilePath)" "$(SoundBankPath)"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -80
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 8
+
+
+
+
+ 0
+
+
+
+
+ -1
+
+
+
+
+ -1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ -1
+
+
+
+
+ -1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 2
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ 65535
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 60
+
+
+
+
+ 0
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 10000
+
+
+
+
+ 1
+
+
+
+
+ 400
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ -96
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 16
+
+
+
+
+ -96
+
+
+
+
+ 0
+
+
+
+
+ 48000
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 16
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+ 75
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 512
+
+
+
+
+ -50
+
+
+
+
+ -30
+
+
+
+
+ -40
+
+
+
+
+ 0
+
+
+
+
+ 24024
+
+
+
+
+ 0
+
+
+
+
+ 8
+
+
+
+
+ English(US)
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 256
+
+
+
+
+
+
+
+
+
+ 50
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ -80
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 64
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 64
+
+
+
+
+ 64
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ 0.1
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 20
+
+
+
+
+ 10000
+
+
+
+
+ 0.2
+
+
+
+
+ True
+
+
+
+
+ 80
+
+
+
+
+ 0.2
+
+
+
+
+ False
+
+
+
+
+ 200
+
+
+
+
+ 0.25
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 4
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 1
+
+
+
+
+ 200
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 1
+
+
+
+
+ 200
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 40
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 160
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+ 0.2
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+ 0.2
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0.2
+
+
+
+
+ 0
+
+
+
+
+ 0.2
+
+
+
+
+ 0.2
+
+
+
+
+ 3000
+
+
+
+
+ 0.2
+
+
+
+
+ 0
+
+
+
+
+ 6
+
+
+
+
+ 15000
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 20000
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+ 0.2
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+ 0.2
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ 65535
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 60
+
+
+
+
+ 0
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ 65535
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 60
+
+
+
+
+ 0
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 2
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ True
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 5000
+
+
+
+
+ 10000
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 3
+
+
+
+
+ 9
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ 65535
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 60
+
+
+
+
+ 0
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+ 5000
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 96
+
+
+
+
+ -100
+
+
+
+
+ -100
+
+
+
+
+ -100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 35
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 3
+
+
+
+
+ 9
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 64
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -96
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 50
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 4000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 120
+
+
+
+
+ 4
+
+
+
+
+ 4
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ 65535
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 60
+
+
+
+
+ 0
+
+
+
+
+ 127
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ -1
+
+
+
+
+ 0
+
+
+
+
+ -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 120
+
+
+
+
+ 4
+
+
+
+
+ 4
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 12
+
+
+
+
+ False
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+ False
+
+
+
+
+ -10
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 120
+
+
+
+
+ 4
+
+
+
+
+ 4
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 7
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ -6
+
+
+
+
+ 0
+
+
+
+
+ 90
+
+
+
+
+ 0
+
+
+
+
+ 245
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 8
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 0.2
+
+
+
+
+ False
+
+
+
+
+ 0.2
+
+
+
+
+ 0.5
+
+
+
+
+ True
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+ 440
+
+
+
+
+ -12
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -12
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ -12
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 10
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 4
+
+
+
+
+ 6
+
+
+
+
+ 5
+
+
+
+
+ 100
+
+
+
+
+ 1000
+
+
+
+
+ 12000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+ 15
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 25
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 1.5
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 3
+
+
+
+
+ 0.01
+
+
+
+
+ -40
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0.01
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 10
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 1
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 40
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 18000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 10
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ -40
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 40
+
+
+
+
+ 18000
+
+
+
+
+ -96
+
+
+
+
+ -20
+
+
+
+
+ 20
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 13.62
+
+
+
+
+ 26.09
+
+
+
+
+ 26.55
+
+
+
+
+ 26.91
+
+
+
+
+ 28.04
+
+
+
+
+ 29.09
+
+
+
+
+ 29.9
+
+
+
+
+ 30.86
+
+
+
+
+ 15.66
+
+
+
+
+ 17.52
+
+
+
+
+ 19.02
+
+
+
+
+ 20.83
+
+
+
+
+ 22.6
+
+
+
+
+ 24.05
+
+
+
+
+ 24.78
+
+
+
+
+ 25.6
+
+
+
+
+ -96.3
+
+
+
+
+ 2
+
+
+
+
+ True
+
+
+
+
+ 8
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 4
+
+
+
+
+ -35
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ -96.3
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 40
+
+
+
+
+ 1.2
+
+
+
+
+ 80
+
+
+
+
+ 50
+
+
+
+
+ 8
+
+
+
+
+ 2
+
+
+
+
+ 100
+
+
+
+
+ 15
+
+
+
+
+ 5
+
+
+
+
+ 66
+
+
+
+
+ -96.3
+
+
+
+
+ 0
+
+
+
+
+ -20
+
+
+
+
+ 23
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 10000
+
+
+
+
+ 0
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 2.25
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ -96.3
+
+
+
+
+ -96.3
+
+
+
+
+ False
+
+
+
+
+ 25
+
+
+
+
+ 8
+
+
+
+
+ 0
+
+
+
+
+ -20
+
+
+
+
+ 100
+
+
+
+
+ 50
+
+
+
+
+ 100
+
+
+
+
+ 0.8
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+ 180
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 5
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0.25
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 10
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 440
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 440
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 50
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -96.3
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -75
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 6
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 100
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ -96.3
+
+
+
+
+ 0
+
+
+
+
+ -60
+
+
+
+
+ -96.3
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1024
+
+
+
+
+ 48000
+
+
+
+
+ 48000
+
+
+
+
+ 48000
+
+
+
+
+ 180
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -48
+
+
+
+
+ False
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 2048
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 100
+
+
+
+
+ 1
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ Recorder.wav
+
+
+
+
+ -3
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+ -96.3
+
+
+
+
+ False
+
+
+
+
+ -3
+
+
+
+
+ -3
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ -100
+
+
+
+
+ True
+
+
+
+
+ -12
+
+
+
+
+ 0.1
+
+
+
+
+ -12
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ -12
+
+
+
+
+ 0.1
+
+
+
+
+ -12
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+ -96
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1024
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -96
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ -6
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ -6
+
+
+
+
+ 50
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 250
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ -96
+
+
+
+
+ 3
+
+
+
+
+ True
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0.5
+
+
+
+
+ 0
+
+
+
+
+ 2400
+
+
+
+
+ 345
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 32
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 10
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 20000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0.707
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 256
+
+
+
+
+ False
+
+
+
+
+ 100
+
+
+
+
+ 100
+
+
+
+
+ 100
+
+
+
+
+ 100
+
+
+
+
+ 1000
+
+
+
+
+ 1000
+
+
+
+
+ 1000
+
+
+
+
+ 1000
+
+
+
+
+ 20000
+
+
+
+
+ 20000
+
+
+
+
+ 20000
+
+
+
+
+ 20000
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 5
+
+
+
+
+ 5
+
+
+
+
+ 9
+
+
+
+
+ 9
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 16641
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 10
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 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
+
+
+
+
+ 60
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ 0.01
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+ 0.01
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+ 0.01
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+ 0.01
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0.1
+
+
+
+
+ 0
+
+
+
+
+ 150
+
+
+
+
+ 1000
+
+
+
+
+ 6000
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 4
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ 5
+
+
+
+
+ 100
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 3
+
+
+
+
+ 200
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 3
+
+
+
+
+ 500
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 4
+
+
+
+
+ 1000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 3
+
+
+
+
+ 3000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ False
+
+
+
+
+ 3
+
+
+
+
+ 6000
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+ -12
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ -12
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 6
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0.6
+
+
+
+
+ 0.6
+
+
+
+
+ 0.5
+
+
+
+
+ 0.3
+
+
+
+
+ 0.05
+
+
+
+
+ 0.25
+
+
+
+
+ 0.02
+
+
+
+
+ 1.5
+
+
+
+
+ 0.2
+
+
+
+
+ 0.3
+
+
+
+
+ True
+
+
+
+
+ 0.2
+
+
+
+
+ 8
+
+
+
+
+ 0.2
+
+
+
+
+ 12
+
+
+
+
+
+
+
+
+ 20
+
+
+
+
+ 0.7
+
+
+
+
+ 100
+
+
+
+
+ 0.1
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ True
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ 0.7
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 0.9
+
+
+
+
+ 0.1
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ 2
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1.4
+
+
+
+
+ -6
+
+
+
+
+ True
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ 0.5
+
+
+
+
+ 10000
+
+
+
+
+ -6
+
+
+
+
+ 7
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 7.25
+
+
+
+
+ 2.75
+
+
+
+
+ 3.25
+
+
+
+
+ 4.25
+
+
+
+
+ 4.75
+
+
+
+
+ 3.75
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 5
+
+
+ 100
+ -200
+ 37
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 5
+
+
+ 100
+ 100
+ 37
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 5
+
+
+ 100
+ 100
+ 37
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 5
+
+
+ 100
+ -200
+ 37
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 5
+
+
+ 100
+ 100
+ 37
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 5
+
+
+ 100
+ 100
+ 37
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/sounds/wwise_project/Control Surface Sessions/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Control Surface Sessions/Default Work Unit.wwu
index 1f7d254b46..4e13dee554 100644
--- a/AutomatedTesting/sounds/wwise_project/Control Surface Sessions/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Control Surface Sessions/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Conversion Settings/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Conversion Settings/Default Work Unit.wwu
index ac7c83d1db..236f5765db 100644
--- a/AutomatedTesting/sounds/wwise_project/Conversion Settings/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Conversion Settings/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Conversion Settings/Factory Conversion Settings.wwu b/AutomatedTesting/sounds/wwise_project/Conversion Settings/Factory Conversion Settings.wwu
index 9a94d81c32..7873f5135a 100644
--- a/AutomatedTesting/sounds/wwise_project/Conversion Settings/Factory Conversion Settings.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Conversion Settings/Factory Conversion Settings.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Dynamic Dialogue/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Dynamic Dialogue/Default Work Unit.wwu
index e6e033e251..5411c7d503 100644
--- a/AutomatedTesting/sounds/wwise_project/Dynamic Dialogue/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Dynamic Dialogue/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Effects/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Effects/Default Work Unit.wwu
index f938135d6b..ca63005f4b 100644
--- a/AutomatedTesting/sounds/wwise_project/Effects/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Effects/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Effects/Factory Effects.wwu b/AutomatedTesting/sounds/wwise_project/Effects/Factory Effects.wwu
index ac716afb97..5a545f5e61 100644
--- a/AutomatedTesting/sounds/wwise_project/Effects/Factory Effects.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Effects/Factory Effects.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Effects/Factory Reflect.wwu b/AutomatedTesting/sounds/wwise_project/Effects/Factory Reflect.wwu
index f2269dd2dc..2c0ebb6b67 100644
--- a/AutomatedTesting/sounds/wwise_project/Effects/Factory Reflect.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Effects/Factory Reflect.wwu
@@ -1,10 +1,9 @@
-
+
-
-
+
@@ -185,8 +184,7 @@
-
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Events/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Events/Default Work Unit.wwu
index c65c8adca1..73c2e8f028 100644
--- a/AutomatedTesting/sounds/wwise_project/Events/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Events/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Game Parameters/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Game Parameters/Default Work Unit.wwu
index e373885f46..a939ebe124 100644
--- a/AutomatedTesting/sounds/wwise_project/Game Parameters/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Game Parameters/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory Motion.wwu b/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory Motion.wwu
index b06d283012..3989d74308 100644
--- a/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory Motion.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory Motion.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory SoundSeed Air Game Syncs.wwu b/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory SoundSeed Air Game Syncs.wwu
index 049dacb51e..efe69cb1a8 100644
--- a/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory SoundSeed Air Game Syncs.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Game Parameters/Factory SoundSeed Air Game Syncs.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Interactive Music Hierarchy/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Interactive Music Hierarchy/Default Work Unit.wwu
index 1086c4511f..e8f4d23bb6 100644
--- a/AutomatedTesting/sounds/wwise_project/Interactive Music Hierarchy/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Interactive Music Hierarchy/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Master-Mixer Hierarchy/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Master-Mixer Hierarchy/Default Work Unit.wwu
index a627ce106e..b6c14df7af 100644
--- a/AutomatedTesting/sounds/wwise_project/Master-Mixer Hierarchy/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Master-Mixer Hierarchy/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
@@ -9,13 +9,15 @@
+
-
+
+
diff --git a/AutomatedTesting/sounds/wwise_project/Metadata/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Metadata/Default Work Unit.wwu
new file mode 100644
index 0000000000..0317c70b7c
--- /dev/null
+++ b/AutomatedTesting/sounds/wwise_project/Metadata/Default Work Unit.wwu
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/sounds/wwise_project/Mixing Sessions/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Mixing Sessions/Default Work Unit.wwu
index 8c62ef9009..c24440febd 100644
--- a/AutomatedTesting/sounds/wwise_project/Mixing Sessions/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Mixing Sessions/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Modulators/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Modulators/Default Work Unit.wwu
index 062f9f80df..dc16200be3 100644
--- a/AutomatedTesting/sounds/wwise_project/Modulators/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Modulators/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Presets/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Presets/Default Work Unit.wwu
index 2bed1c6613..07f7565980 100644
--- a/AutomatedTesting/sounds/wwise_project/Presets/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Presets/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Presets/Factory Reflect.wwu b/AutomatedTesting/sounds/wwise_project/Presets/Factory Reflect.wwu
index 53f828f459..8138f5bcdd 100644
--- a/AutomatedTesting/sounds/wwise_project/Presets/Factory Reflect.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Presets/Factory Reflect.wwu
@@ -1,5 +1,5 @@
-
+
@@ -19,6 +19,7 @@
+
diff --git a/AutomatedTesting/sounds/wwise_project/Presets/Factory Spatial Audio.wwu b/AutomatedTesting/sounds/wwise_project/Presets/Factory Spatial Audio.wwu
index 5b96bd3b29..d73cf8d8c3 100644
--- a/AutomatedTesting/sounds/wwise_project/Presets/Factory Spatial Audio.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Presets/Factory Spatial Audio.wwu
@@ -1,5 +1,5 @@
-
+
@@ -17,6 +17,7 @@
+
diff --git a/AutomatedTesting/sounds/wwise_project/Queries/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Queries/Default Work Unit.wwu
index f4e9f99aa4..ff80573330 100644
--- a/AutomatedTesting/sounds/wwise_project/Queries/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Queries/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Queries/Factory Queries.wwu b/AutomatedTesting/sounds/wwise_project/Queries/Factory Queries.wwu
index 527315de63..813983d789 100644
--- a/AutomatedTesting/sounds/wwise_project/Queries/Factory Queries.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Queries/Factory Queries.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/SoundBanks/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/SoundBanks/Default Work Unit.wwu
index da8fa90010..c12261ab5b 100644
--- a/AutomatedTesting/sounds/wwise_project/SoundBanks/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/SoundBanks/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Soundcaster Sessions/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Soundcaster Sessions/Default Work Unit.wwu
index d6b8329537..379bf37da9 100644
--- a/AutomatedTesting/sounds/wwise_project/Soundcaster Sessions/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Soundcaster Sessions/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/States/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/States/Default Work Unit.wwu
index f27a0d0310..b06937baa9 100644
--- a/AutomatedTesting/sounds/wwise_project/States/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/States/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Switches/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Switches/Default Work Unit.wwu
index 49c00bc378..37fb0b424c 100644
--- a/AutomatedTesting/sounds/wwise_project/Switches/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Switches/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Triggers/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Triggers/Default Work Unit.wwu
index 3b2e2634df..bb2a827d79 100644
--- a/AutomatedTesting/sounds/wwise_project/Triggers/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Triggers/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Default Work Unit.wwu b/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Default Work Unit.wwu
index 29c26cbbab..d10d9475dc 100644
--- a/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Default Work Unit.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Default Work Unit.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Factory Reflect Acoustic Textures.wwu b/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Factory Reflect Acoustic Textures.wwu
index 864f6ba959..ca4a1ae8f2 100644
--- a/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Factory Reflect Acoustic Textures.wwu
+++ b/AutomatedTesting/sounds/wwise_project/Virtual Acoustics/Factory Reflect Acoustic Textures.wwu
@@ -1,5 +1,5 @@
-
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ae8a7a05f8..2ee08a8d16 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,13 +25,37 @@ include(cmake/LySet.cmake)
include(cmake/Version.cmake)
include(cmake/OutputDirectory.cmake)
+# Set the engine_path and engine_json
+set(o3de_engine_path ${CMAKE_CURRENT_LIST_DIR})
+set(o3de_engine_json ${o3de_engine_path}/engine.json)
+
if(NOT PROJECT_NAME)
project(O3DE
LANGUAGES C CXX
VERSION ${LY_VERSION_STRING}
)
+
+ # o3de manifest
+ include(cmake/o3de_manifest.cmake)
endif()
+################################################################################
+# Resolve this engines name and restricted path
+################################################################################
+o3de_engine_name(${o3de_engine_json} o3de_engine_name)
+o3de_restricted_path(${o3de_engine_json} o3de_engine_restricted_path)
+message(STATUS "O3DE Engine Name: ${o3de_engine_name}")
+message(STATUS "O3DE Engine Path: ${o3de_engine_path}")
+if(o3de_engine_restricted_path)
+ message(STATUS "O3DE Engine Restricted Path: ${o3de_engine_restricted_path}")
+endif()
+
+# add the engines cmake folder to the CMAKE_MODULE_PATH
+list(APPEND CMAKE_MODULE_PATH "${o3de_engine_path}/cmake")
+
+################################################################################
+# Initialize
+################################################################################
include(cmake/GeneralSettings.cmake)
include(cmake/FileUtil.cmake)
include(cmake/PAL.cmake)
@@ -60,20 +84,19 @@ include(cmake/Projects.cmake)
if(NOT INSTALLED_ENGINE)
# Add the rest of the targets
add_subdirectory(Code)
- add_subdirectory(Gems)
else()
ly_find_o3de_packages()
endif()
+# Add external subdirectories listed in the manifest
+list(APPEND LY_EXTERNAL_SUBDIRS ${o3de_engine_external_subdirectories})
+
set(enabled_platforms
${PAL_PLATFORM_NAME}
${LY_PAL_TOOLS_ENABLED})
-foreach(restricted_platform ${PAL_RESTRICTED_PLATFORMS})
- if(restricted_platform IN_LIST enabled_platforms)
- add_subdirectory(restricted/${restricted_platform})
- endif()
-endforeach()
+# Add any engine restricted platforms as external subdirs
+o3de_add_engine_restricted_platform_external_subdirs()
if(NOT INSTALLED_ENGINE)
add_subdirectory(scripts)
diff --git a/Code/CryEngine/CryCommon/AnimTime.h b/Code/CryEngine/CryCommon/AnimTime.h
deleted file mode 100644
index 8bd0b9d442..0000000000
--- a/Code/CryEngine/CryCommon/AnimTime.h
+++ /dev/null
@@ -1,173 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-#ifndef __animtime_h__
-#define __animtime_h__
-
-#include
-#include
-#include
-
-struct SAnimTime
-{
- static const uint numTicksPerSecond = 6000;
-
- // List of possible frame rates (dividers of 6000). Most commonly used ones first.
- enum EFrameRate
- {
- // Common
- eFrameRate_30fps, eFrameRate_60fps, eFrameRate_120fps,
-
- // Possible
- eFrameRate_10fps, eFrameRate_12fps, eFrameRate_15fps, eFrameRate_24fps,
- eFrameRate_25fps, eFrameRate_40fps, eFrameRate_48fps, eFrameRate_50fps,
- eFrameRate_75fps, eFrameRate_80fps, eFrameRate_100fps, eFrameRate_125fps,
- eFrameRate_150fps, eFrameRate_200fps, eFrameRate_240fps, eFrameRate_250fps,
- eFrameRate_300fps, eFrameRate_375fps, eFrameRate_400fps, eFrameRate_500fps,
- eFrameRate_600fps, eFrameRate_750fps, eFrameRate_1000fps, eFrameRate_1200fps,
- eFrameRate_1500fps, eFrameRate_2000fps, eFrameRate_3000fps, eFrameRate_6000fps,
-
- eFrameRate_Num
- };
-
- SAnimTime()
- : m_ticks(0) {}
- explicit SAnimTime(int32 ticks)
- : m_ticks(ticks) {}
- explicit SAnimTime(float time)
- : m_ticks(aznumeric_caster(std::lround(static_cast(time) * numTicksPerSecond))) {}
-
- static uint GetFrameRateValue(EFrameRate frameRate)
- {
- const uint frameRateValues[eFrameRate_Num] =
- {
- // Common
- 30, 60, 120,
-
- // Possible
- 10, 12, 15, 24, 25, 40, 48, 50, 75, 80, 100, 125,
- 150, 200, 240, 250, 300, 375, 400, 500, 600, 750,
- 1000, 1200, 1500, 2000, 3000, 6000
- };
-
- return frameRateValues[frameRate];
- }
-
- static const char* GetFrameRateName(EFrameRate frameRate)
- {
- const char* frameRateNames[eFrameRate_Num] =
- {
- // Common
- "30 fps", "60 fps", "120 fps",
-
- // Possible
- "10 fps", "12 fps", "15 fps", "24 fps",
- "25 fps", "40 fps", "48 fps", "50 fps",
- "75 fps", "80 fps", "100 fps", "125 fps",
- "150 fps", "200 fps", "240 fps", "250 fps",
- "300 fps", "375 fps", "400 fps", "500 fps",
- "600 fps", "750 fps", "1000 fps", "1200 fps",
- "1500 fps", "2000 fps", "3000 fps", "6000 fps"
- };
-
- return frameRateNames[frameRate];
- }
-
- float ToFloat() const { return static_cast(m_ticks) / numTicksPerSecond; }
-
- void Serialize(Serialization::IArchive& ar)
- {
- ar(m_ticks, "ticks", "Ticks");
- }
-
- // Helper to serialize from ticks or old float time
- void Serialize(XmlNodeRef keyNode, bool bLoading, const char* pName, const char* pLegacyName)
- {
- if (bLoading)
- {
- int32 ticks;
- if (!keyNode->getAttr(pName, ticks))
- {
- // Backwards compatibility
- float time = 0.0f;
- keyNode->getAttr(pLegacyName, time);
- *this = SAnimTime(time);
- }
- else
- {
- m_ticks = ticks;
- }
- }
- else if (m_ticks > 0)
- {
- keyNode->setAttr(pName, m_ticks);
- }
- }
-
- int32 GetTicks() const { return m_ticks; }
-
- static SAnimTime Min() { SAnimTime minTime; minTime.m_ticks = std::numeric_limits::lowest(); return minTime; }
- static SAnimTime Max() { SAnimTime maxTime; maxTime.m_ticks = (std::numeric_limits::max)(); return maxTime; }
-
- SAnimTime operator-() const { return SAnimTime(-m_ticks); }
- SAnimTime operator-(SAnimTime r) const { SAnimTime temp = *this; temp.m_ticks -= r.m_ticks; return temp; }
- SAnimTime operator+(SAnimTime r) const { SAnimTime temp = *this; temp.m_ticks += r.m_ticks; return temp; }
- SAnimTime operator*(SAnimTime r) const { SAnimTime temp = *this; temp.m_ticks *= r.m_ticks; return temp; }
- SAnimTime operator/(SAnimTime r) const { SAnimTime temp; temp.m_ticks = static_cast((static_cast(m_ticks) * numTicksPerSecond) / r.m_ticks); return temp; }
- SAnimTime operator%(SAnimTime r) const { SAnimTime temp = *this; temp.m_ticks %= r.m_ticks; return temp; }
- SAnimTime operator*(float r) const { SAnimTime temp; temp.m_ticks = aznumeric_caster(std::lround(static_cast(m_ticks) * r)); return temp; }
- SAnimTime operator/(float r) const { SAnimTime temp; temp.m_ticks = aznumeric_caster(std::lround(static_cast(m_ticks) / r)); return temp; }
- SAnimTime& operator+=(SAnimTime r) { *this = *this + r; return *this; }
- SAnimTime& operator-=(SAnimTime r) { *this = *this - r; return *this; }
- SAnimTime& operator*=(SAnimTime r) { *this = *this * r; return *this; }
- SAnimTime& operator/=(SAnimTime r) { *this = *this / r; return *this; }
- SAnimTime& operator%=(SAnimTime r) { *this = *this % r; return *this; }
- SAnimTime& operator*=(float r) { *this = *this * r; return *this; }
- SAnimTime& operator/=(float r) { *this = *this / r; return *this; }
-
- bool operator<(SAnimTime r) const { return m_ticks < r.m_ticks; }
- bool operator<=(SAnimTime r) const { return m_ticks <= r.m_ticks; }
- bool operator>(SAnimTime r) const { return m_ticks > r.m_ticks; }
- bool operator>=(SAnimTime r) const { return m_ticks >= r.m_ticks; }
- bool operator==(SAnimTime r) const { return m_ticks == r.m_ticks; }
- bool operator!=(SAnimTime r) const { return m_ticks != r.m_ticks; }
-
- // Snap to nearest multiple of given frame rate
- SAnimTime SnapToNearest(const EFrameRate frameRate)
- {
- const int sign = sgn(m_ticks);
- const int32 absTicks = abs(m_ticks);
-
- const int framesMod = numTicksPerSecond / GetFrameRateValue(frameRate);
- const int32 remainder = absTicks % framesMod;
- const bool bNextMultiple = remainder >= (framesMod / 2);
- return SAnimTime(sign * ((absTicks - remainder) + (bNextMultiple ? framesMod : 0)));
- }
-
-private:
- int32 m_ticks;
-
- friend bool Serialize(Serialization::IArchive& ar, SAnimTime& animTime, const char* name, const char* label);
-};
-
-inline bool Serialize(Serialization::IArchive& ar, SAnimTime& animTime, const char* name, const char* label)
-{
- return ar(animTime.m_ticks, name, label);
-}
-
-inline SAnimTime abs(SAnimTime time)
-{
- return (time >= SAnimTime(0)) ? time : -time;
-}
-
-#endif
diff --git a/Code/CryEngine/CryCommon/Bezier.h b/Code/CryEngine/CryCommon/Bezier.h
deleted file mode 100644
index fa1cf60d49..0000000000
--- a/Code/CryEngine/CryCommon/Bezier.h
+++ /dev/null
@@ -1,321 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-#ifndef __BEZIER_H__
-#define __BEZIER_H__
-
-#include
-#include
-#include
-
-struct SBezierControlPoint
-{
- SBezierControlPoint()
- : m_value(0.0f)
- , m_inTangent(ZERO)
- , m_outTangent(ZERO)
- , m_inTangentType(eTangentType_Auto)
- , m_outTangentType(eTangentType_Auto)
- , m_bBreakTangents(false)
- {
- }
-
- enum ETangentType
- {
- eTangentType_Custom,
- eTangentType_Auto,
- eTangentType_Zero,
- eTangentType_Step,
- eTangentType_Linear,
- };
-
- void Serialize(Serialization::IArchive& ar)
- {
- ar(m_value, "value", "Value");
-
- if (ar.IsOutput())
- {
- bool breakTangents = m_bBreakTangents;
- ar(breakTangents, "breakTangents", "Break Tangents");
- }
- else
- {
- bool breakTangents = false;
- ar(breakTangents, "breakTangents", "Break Tangents");
- m_bBreakTangents = breakTangents;
- }
-
- if (ar.IsOutput())
- {
- ETangentType inTangentType = m_inTangentType;
- ar(inTangentType, "inTangentType", "Incoming tangent type");
- }
- else
- {
- ETangentType inTangentType = eTangentType_Auto;
- ar(inTangentType, "inTangentType", "Incoming tangent type");
- m_inTangentType = inTangentType;
- }
-
- ar(m_inTangent, "inTangent", (m_inTangentType == eTangentType_Custom) ? "Incoming Tangent" : NULL);
-
- if (ar.IsOutput())
- {
- ETangentType outTangentType = m_outTangentType;
- ar(outTangentType, "outTangentType", "Outgoing tangent type");
- }
- else
- {
- ETangentType outTangentType = eTangentType_Auto;
- ar(outTangentType, "outTangentType", "Outgoing tangent type");
- m_outTangentType = outTangentType;
- }
-
- ar(m_outTangent, "outTangent", (m_outTangentType == eTangentType_Custom) ? "Outgoing Tangent" : NULL);
- }
-
- float m_value;
-
- // For 1D Bezier only the Y component is used
- Vec2 m_inTangent;
- Vec2 m_outTangent;
-
- ETangentType m_inTangentType : 4;
- ETangentType m_outTangentType : 4;
- bool m_bBreakTangents : 1;
-};
-
-struct SBezierKey
-{
- SBezierKey()
- : m_time(0) {}
-
- void Serialize(Serialization::IArchive& ar)
- {
- ar(m_time, "time", "Time");
- ar(m_controlPoint, "controlPoint", "Control Point");
- }
-
- SAnimTime m_time;
- SBezierControlPoint m_controlPoint;
-};
-
-namespace Bezier
-{
- inline float Evaluate(float t, float p0, float p1, float p2, float p3)
- {
- const float a = 1 - t;
- const float aSq = a * a;
- const float tSq = t * t;
- return (aSq * a * p0) + (3.0f * aSq * t * p1) + (3.0f * a * tSq * p2) + (tSq * t * p3);
- }
-
- inline float EvaluateDeriv(float t, float p0, float p1, float p2, float p3)
- {
- const float a = 1 - t;
- const float ta = t * a;
- const float aSq = a * a;
- const float tSq = t * t;
- return 3.0f * ((-p2 * tSq) + (p3 * tSq) - (p0 * aSq) + (p1 * aSq) + 2.0f * ((-p1 * ta) + (p2 * ta)));
- }
-
- inline float EvaluateX(const float t, const float duration, const SBezierControlPoint& start, const SBezierControlPoint& end)
- {
- const float p0 = 0.0f;
- const float p1 = p0 + start.m_outTangent.x;
- const float p3 = duration;
- const float p2 = p3 + end.m_inTangent.x;
- return Evaluate(t, p0, p1, p2, p3);
- }
-
- inline float EvaluateY(const float t, const SBezierControlPoint& start, const SBezierControlPoint& end)
- {
- const float p0 = start.m_value;
- const float p1 = p0 + start.m_outTangent.y;
- const float p3 = end.m_value;
- const float p2 = p3 + end.m_inTangent.y;
- return Evaluate(t, p0, p1, p2, p3);
- }
-
- // Duration = (time at end key) - (time at start key)
- inline float EvaluateDerivX(const float t, const float duration, const SBezierControlPoint& start, const SBezierControlPoint& end)
- {
- const float p0 = 0.0f;
- const float p1 = p0 + start.m_outTangent.x;
- const float p3 = duration;
- const float p2 = p3 + end.m_inTangent.x;
- return EvaluateDeriv(t, p0, p1, p2, p3);
- }
-
- inline float EvaluateDerivY(const float t, const SBezierControlPoint& start, const SBezierControlPoint& end)
- {
- const float p0 = start.m_value;
- const float p1 = p0 + start.m_outTangent.y;
- const float p3 = end.m_value;
- const float p2 = p3 + end.m_inTangent.y;
- return EvaluateDeriv(t, p0, p1, p2, p3);
- }
-
- // Find interpolation factor where 2D bezier curve has the given x value. Works only for curves where x is monotonically increasing.
- // The passed x must be in range [0, duration]. Uses the Newton-Raphson root finding method. Usually takes 2 or 3 iterations.
- //
- // Note: This is for "1D" 2D bezier curves as used in TrackView. The curves are restricted by the curve editor to be monotonically increasing.
- //
- inline float InterpolationFactorFromX(const float x, const float duration, const SBezierControlPoint& start, const SBezierControlPoint& end)
- {
- float t = (x / duration);
-
- const float epsilon = 0.00001f;
- const uint maxSteps = 10;
-
- for (uint i = 0; i < maxSteps; ++i)
- {
- const float currentX = EvaluateX(t, duration, start, end) - x;
- if (fabs(currentX) <= epsilon)
- {
- break;
- }
-
- const float currentXDeriv = EvaluateDerivX(t, duration, start, end);
- t -= currentX / currentXDeriv;
- }
-
- return t;
- }
-
- inline SBezierControlPoint CalculateInTangent(
- float time, const SBezierControlPoint& point,
- float leftTime, const SBezierControlPoint* pLeftPoint,
- float rightTime, const SBezierControlPoint* pRightPoint)
- {
- SBezierControlPoint newPoint = point;
-
- // In tangent X can never be positive
- newPoint.m_inTangent.x = std::min(point.m_inTangent.x, 0.0f);
-
- if (pLeftPoint)
- {
- switch (point.m_inTangentType)
- {
- case SBezierControlPoint::eTangentType_Custom:
- {
- // Need to clamp tangent if it is reaching over last point
- const float deltaTime = time - leftTime;
- if (deltaTime < -newPoint.m_inTangent.x)
- {
- if (newPoint.m_inTangent.x == 0)
- {
- newPoint.m_inTangent = Vec2(ZERO);
- }
- else
- {
- float scaleFactor = deltaTime / -newPoint.m_inTangent.x;
- newPoint.m_inTangent.x = -deltaTime;
- newPoint.m_inTangent.y *= scaleFactor;
- }
- }
- }
- break;
- case SBezierControlPoint::eTangentType_Zero:
- // Fall through. Zero for y is same as Auto, x is set to 0.0f
- case SBezierControlPoint::eTangentType_Auto:
- {
- const SBezierControlPoint& rightPoint = pRightPoint ? *pRightPoint : point;
- const float deltaTime = (pRightPoint ? rightTime : time) - leftTime;
- if (deltaTime > 0.0f)
- {
- const float ratio = (time - leftTime) / deltaTime;
- const float deltaValue = rightPoint.m_value - pLeftPoint->m_value;
- const bool bIsZeroTangent = (point.m_inTangentType == SBezierControlPoint::eTangentType_Zero);
- newPoint.m_inTangent = Vec2(-(deltaTime * ratio) / 3.0f, bIsZeroTangent ? 0.0f : -(deltaValue * ratio) / 3.0f);
- }
- else
- {
- newPoint.m_inTangent = Vec2(ZERO);
- }
- }
- break;
- case SBezierControlPoint::eTangentType_Linear:
- newPoint.m_inTangent = Vec2((leftTime - time) / 3.0f,
- (pLeftPoint->m_value - point.m_value) / 3.0f);
- break;
- }
- }
-
- return newPoint;
- }
-
- inline SBezierControlPoint CalculateOutTangent(
- float time, const SBezierControlPoint& point,
- float leftTime, const SBezierControlPoint* pLeftPoint,
- float rightTime, const SBezierControlPoint* pRightPoint)
- {
- SBezierControlPoint newPoint = point;
-
- // Out tangent X can never be negative
- newPoint.m_outTangent.x = std::max(point.m_outTangent.x, 0.0f);
-
- if (pRightPoint)
- {
- switch (point.m_outTangentType)
- {
- case SBezierControlPoint::eTangentType_Custom:
- {
- // Need to clamp tangent if it is reaching over next point
- const float deltaTime = rightTime - time;
- if (deltaTime < newPoint.m_outTangent.x)
- {
- if (newPoint.m_outTangent.x == 0)
- {
- newPoint.m_outTangent = Vec2(ZERO);
- }
- else
- {
- float scaleFactor = deltaTime / newPoint.m_outTangent.x;
- newPoint.m_outTangent.x = deltaTime;
- newPoint.m_outTangent.y *= scaleFactor;
- }
- }
- }
- break;
- case SBezierControlPoint::eTangentType_Zero:
- // Fall through. Zero for y is same as Auto, x is set to 0.0f
- case SBezierControlPoint::eTangentType_Auto:
- {
- const SBezierControlPoint& leftPoint = pLeftPoint ? *pLeftPoint : point;
- const float deltaTime = rightTime - (pLeftPoint ? leftTime : time);
- if (deltaTime > 0.0f)
- {
- const float ratio = (rightTime - time) / deltaTime;
- const float deltaValue = pRightPoint->m_value - leftPoint.m_value;
- const bool bIsZeroTangent = (point.m_outTangentType == SBezierControlPoint::eTangentType_Zero);
- newPoint.m_outTangent = Vec2((deltaTime * ratio) / 3.0f, bIsZeroTangent ? 0.0f : (deltaValue * ratio) / 3.0f);
- }
- else
- {
- newPoint.m_outTangent = Vec2(ZERO);
- }
- }
- break;
- case SBezierControlPoint::eTangentType_Linear:
- newPoint.m_outTangent = Vec2((rightTime - time) / 3.0f,
- (pRightPoint->m_value - point.m_value) / 3.0f);
- break;
- }
- }
-
- return newPoint;
- }
-}
-
-#endif
diff --git a/Code/CryEngine/CryCommon/CryExtension/CryCreateClassInstance.h b/Code/CryEngine/CryCommon/CryExtension/CryCreateClassInstance.h
deleted file mode 100644
index 1d1a4805d4..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/CryCreateClassInstance.h
+++ /dev/null
@@ -1,96 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_CRYCREATECLASSINSTANCE_H
-#define CRYINCLUDE_CRYEXTENSION_CRYCREATECLASSINSTANCE_H
-#pragma once
-
-
-#include "ICryUnknown.h"
-#include "ICryFactory.h"
-#include "ICryFactoryRegistry.h"
-#include // <> required for Interfuscator
-
-
-template
-bool CryCreateClassInstance(const CryClassID& cid, AZStd::shared_ptr& p)
-{
- p = AZStd::shared_ptr();
- ICryFactoryRegistry* pFactoryReg = gEnv->pSystem->GetCryFactoryRegistry();
- if (pFactoryReg)
- {
- ICryFactory* pFactory = pFactoryReg->GetFactory(cid);
- if (pFactory && pFactory->ClassSupports(cryiidof()))
- {
- ICryUnknownPtr pUnk = pFactory->CreateClassInstance();
- AZStd::shared_ptr pT = cryinterface_cast(pUnk);
- if (pT)
- {
- p = pT;
- }
- }
- }
- return p.get() != NULL;
-}
-
-
-template
-bool CryCreateClassInstance(const char* cname, AZStd::shared_ptr& p)
-{
- p = AZStd::shared_ptr();
- ICryFactoryRegistry* pFactoryReg = gEnv->pSystem->GetCryFactoryRegistry();
- if (pFactoryReg)
- {
- ICryFactory* pFactory = pFactoryReg->GetFactory(cname);
- if (pFactory != NULL && pFactory->ClassSupports(cryiidof()))
- {
- ICryUnknownPtr pUnk = pFactory->CreateClassInstance();
- AZStd::shared_ptr pT = cryinterface_cast(pUnk);
- if (pT)
- {
- p = pT;
- }
- }
- }
- return p.get() != NULL;
-}
-
-
-template
-bool CryCreateClassInstanceForInterface(const CryInterfaceID& iid, AZStd::shared_ptr& p)
-{
- p = AZStd::shared_ptr();
- ICryFactoryRegistry* pFactoryReg = gEnv->pSystem->GetCryFactoryRegistry();
- if (pFactoryReg)
- {
- size_t numFactories = 1;
- ICryFactory* pFactory = 0;
- pFactoryReg->IterateFactories(iid, &pFactory, numFactories);
- if (numFactories == 1 && pFactory)
- {
- ICryUnknownPtr pUnk = pFactory->CreateClassInstance();
- AZStd::shared_ptr pT = cryinterface_cast(pUnk);
- if (pT)
- {
- p = pT;
- }
- }
- }
- return p.get() != NULL;
-}
-
-
-#endif // CRYINCLUDE_CRYEXTENSION_CRYCREATECLASSINSTANCE_H
diff --git a/Code/CryEngine/CryCommon/CryExtension/CryGUID.h b/Code/CryEngine/CryCommon/CryExtension/CryGUID.h
deleted file mode 100644
index a779e91bd2..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/CryGUID.h
+++ /dev/null
@@ -1,123 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_CRYGUID_H
-#define CRYINCLUDE_CRYEXTENSION_CRYGUID_H
-#pragma once
-
-#include "Serialization/IArchive.h"
-#include "Random.h"
-
-#include
-
-struct CryGUID
-{
- uint64 hipart;
- uint64 lopart;
-
- // !!! Do NOT turn CryGUID into a non-aggregate !!!
- // It will prevent inlining and type list unrolling opportunities within
- // cryinterface_cast() and cryiidof(). As such prevent constructors,
- // non-public members, base classes and virtual functions!
-
- //CryGUID() : hipart(0), lopart(0) {}
- //CryGUID(uint64 h, uint64 l) : hipart(h), lopart(l) {}
-
- static CryGUID Construct(const uint64& hipart, const uint64& lopart)
- {
- CryGUID guid = {hipart, lopart};
- return guid;
- }
-
- static CryGUID Create()
- {
- uint64 lopart = 0;
- uint64 hipart = 0;
- while (lopart == 0 || hipart == 0)
- {
- const uint32 a = cry_random_uint32();
- const uint32 b = cry_random_uint32();
- const uint32 c = cry_random_uint32();
- const uint32 d = cry_random_uint32();
- lopart = (uint64)a | ((uint64)b << 32);
- hipart = (uint64)c | ((uint64)d << 32);
- }
-
- return Construct(lopart, hipart);
- }
-
- static CryGUID Null()
- {
- return Construct(0, 0);
- }
-
- bool operator ==(const CryGUID& rhs) const {return hipart == rhs.hipart && lopart == rhs.lopart; }
- bool operator !=(const CryGUID& rhs) const {return hipart != rhs.hipart || lopart != rhs.lopart; }
- bool operator <(const CryGUID& rhs) const {return hipart == rhs.hipart ? lopart < rhs.lopart : hipart < rhs.hipart; }
-
- void Serialize(Serialization::IArchive& ar)
- {
- if (ar.IsInput())
- {
- uint32 dwords[4];
- ar(dwords, "guid");
- lopart = (((uint64)dwords[1]) << 32) | (uint64)dwords[0];
- hipart = (((uint64)dwords[3]) << 32) | (uint64)dwords[2];
- }
- else
- {
- uint32 guid[4] = {
- (uint32)(lopart & 0xFFFFFFFF), (uint32)((lopart >> 32) & 0xFFFFFFFF),
- (uint32)(hipart & 0xFFFFFFFF), (uint32)((hipart >> 32) & 0xFFFFFFFF)
- };
- ar(guid, "guid");
- }
- }
-};
-
-// This is only used by the editor where we use C++ 11.
-namespace std
-{
- template<>
- struct hash
- {
- public:
- size_t operator()(const CryGUID& guid) const
- {
- std::hash hasher;
- return hasher(guid.lopart) ^ hasher(guid.hipart);
- }
- };
-}
-
-namespace AZStd
-{
- template<>
- struct hash
- {
- public:
- size_t operator()(const CryGUID& guid) const
- {
- std::hash hasher;
- return hasher(guid);
- }
- };
-}
-
-#define MAKE_CRYGUID(high, low) CryGUID::Construct((uint64) high##LL, (uint64) low##LL)
-
-
-#endif // CRYINCLUDE_CRYEXTENSION_CRYGUID_H
diff --git a/Code/CryEngine/CryCommon/CryExtension/CryTypeID.h b/Code/CryEngine/CryCommon/CryExtension/CryTypeID.h
deleted file mode 100644
index 16ae05b448..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/CryTypeID.h
+++ /dev/null
@@ -1,29 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_CRYTYPEID_H
-#define CRYINCLUDE_CRYEXTENSION_CRYTYPEID_H
-#pragma once
-
-
-#include "CryGUID.h"
-
-
-typedef CryGUID CryInterfaceID;
-typedef CryGUID CryClassID;
-
-
-#endif // CRYINCLUDE_CRYEXTENSION_CRYTYPEID_H
diff --git a/Code/CryEngine/CryCommon/CryExtension/ICryFactory.h b/Code/CryEngine/CryCommon/CryExtension/ICryFactory.h
deleted file mode 100644
index a1a7344198..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/ICryFactory.h
+++ /dev/null
@@ -1,41 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_ICRYFACTORY_H
-#define CRYINCLUDE_CRYEXTENSION_ICRYFACTORY_H
-#pragma once
-
-
-#include "CryTypeID.h"
-#include
-
-struct ICryUnknown;
-DECLARE_SMART_POINTERS(ICryUnknown);
-
-struct ICryFactory
-{
- virtual const char* GetName() const = 0;
- virtual const CryClassID& GetClassID() const = 0;
- virtual bool ClassSupports(const CryInterfaceID& iid) const = 0;
- virtual void ClassSupports(const CryInterfaceID*& pIIDs, size_t& numIIDs) const = 0;
- virtual ICryUnknownPtr CreateClassInstance() const = 0;
-
-protected:
- // prevent explicit destruction from client side (delete, shared_ptr, etc)
- virtual ~ICryFactory() {}
-};
-
-#endif // CRYINCLUDE_CRYEXTENSION_ICRYFACTORY_H
diff --git a/Code/CryEngine/CryCommon/CryExtension/ICryFactoryRegistry.h b/Code/CryEngine/CryCommon/CryExtension/ICryFactoryRegistry.h
deleted file mode 100644
index f97c0780a1..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/ICryFactoryRegistry.h
+++ /dev/null
@@ -1,56 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_ICRYFACTORYREGISTRY_H
-#define CRYINCLUDE_CRYEXTENSION_ICRYFACTORYREGISTRY_H
-#pragma once
-
-
-#include "CryTypeID.h"
-
-
-struct ICryFactory;
-
-
-struct ICryFactoryRegistry
-{
- virtual ICryFactory* GetFactory(const char* cname) const = 0;
- virtual ICryFactory* GetFactory(const CryClassID& cid) const = 0;
- /**
- * Iterates all factories implementing the interface specified by \p iid.
- * \param[in] iid ID of the interface to iterate. Often procured using cryiidof<...>().
- * \param[out] pFactories A pointer of the array of factories to fill in. May be nullptr (see below).
- * \param[in] Size (in elements) of the pFactories array [out] Number of elements actually written to pFactories or, when pFactories is null, the number of elements that would be written if sufficient storage was available.
- *
- * Example:
- * \code{.cpp}
- * size_t factoryCount = 0;
- * // Assigns the number of found factories to factoryCount
- * factoryRegistry->IterateFactories(cryiidof(), 0, factoryCount);
- * // Allocate an array of the proper length on the stack
- * ICryFactory** factories = static_cast(alloca(sizeof(ICryFactory*) * factoryCount);
- * // Fill in factories with factoryCount results.
- * factoryRegistry->IterateFactories(cryiidof(), factories, factoryCount);
- * \endcode
- */
- virtual void IterateFactories(const CryInterfaceID& iid, ICryFactory** pFactories, size_t& numFactories) const = 0;
-
-protected:
- // prevent explicit destruction from client side (delete, shared_ptr, etc)
- virtual ~ICryFactoryRegistry() {}
-};
-
-#endif // CRYINCLUDE_CRYEXTENSION_ICRYFACTORYREGISTRY_H
diff --git a/Code/CryEngine/CryCommon/CryExtension/ICryUnknown.h b/Code/CryEngine/CryCommon/CryExtension/ICryUnknown.h
deleted file mode 100644
index 0de018305b..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/ICryUnknown.h
+++ /dev/null
@@ -1,224 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_ICRYUNKNOWN_H
-#define CRYINCLUDE_CRYEXTENSION_ICRYUNKNOWN_H
-#pragma once
-
-
-#include "CryTypeID.h"
-#include
-
-
-struct ICryFactory;
-struct ICryUnknown;
-
-namespace InterfaceCastSemantics
-{
- template
- const CryInterfaceID& cryiidof()
- {
- return T::IID();
- }
-
-#define _BEFRIEND_CRYIIDOF() \
- template \
- friend const CryInterfaceID&InterfaceCastSemantics::cryiidof();
-
-
- template
- Dst* cryinterface_cast(Src* p)
- {
- return static_cast(p ? p->QueryInterface(cryiidof()) : 0);
- }
-
- template
- Dst* cryinterface_cast(const Src* p)
- {
- return static_cast(p ? p->QueryInterface(cryiidof()) : 0);
- }
-
- namespace Internal
- {
- template
- struct cryinterface_cast_shared_ptr_helper;
-
- template
- struct cryinterface_cast_shared_ptr_helper
- {
- static AZStd::shared_ptr Op(const AZStd::shared_ptr& p)
- {
- Dst* dp = cryinterface_cast(p.get());
- return dp ? AZStd::shared_ptr(p, dp) : AZStd::shared_ptr();
- }
- };
-
- template
- struct cryinterface_cast_shared_ptr_helper
- {
- static AZStd::shared_ptr Op(const AZStd::shared_ptr& p)
- {
- ICryUnknown* dp = cryinterface_cast(p.get());
- return dp ? AZStd::shared_ptr(*((const AZStd::shared_ptr*) & p), dp) : AZStd::shared_ptr();
- }
- };
-
- template
- struct cryinterface_cast_shared_ptr_helper
- {
- static AZStd::shared_ptr Op(const AZStd::shared_ptr& p)
- {
- const ICryUnknown* dp = cryinterface_cast(p.get());
- return dp ? AZStd::shared_ptr(*((const AZStd::shared_ptr*) & p), dp) : AZStd::shared_ptr();
- }
- };
- } // namespace Internal
-
- template
- AZStd::shared_ptr cryinterface_cast(const AZStd::shared_ptr& p)
- {
- return Internal::cryinterface_cast_shared_ptr_helper::Op(p);
- }
-
-#define _BEFRIEND_CRYINTERFACE_CAST() \
- template \
- friend Dst * InterfaceCastSemantics::cryinterface_cast(Src*); \
- template \
- friend Dst * InterfaceCastSemantics::cryinterface_cast(const Src*); \
- template \
- friend AZStd::shared_ptr InterfaceCastSemantics::cryinterface_cast(const AZStd::shared_ptr&);
-} // namespace InterfaceCastSemantics
-
-using InterfaceCastSemantics::cryiidof;
-using InterfaceCastSemantics::cryinterface_cast;
-
-
-template
-bool CryIsSameClassInstance(S* p0, T* p1)
-{
- return static_cast(p0) == static_cast(p1) || cryinterface_cast(p0) == cryinterface_cast(p1);
-}
-
-template
-bool CryIsSameClassInstance(const AZStd::shared_ptr& p0, T* p1)
-{
- return CryIsSameClassInstance(p0.get(), p1);
-}
-
-template
-bool CryIsSameClassInstance(S* p0, const AZStd::shared_ptr& p1)
-{
- return CryIsSameClassInstance(p0, p1.get());
-}
-
-template
-bool CryIsSameClassInstance(const AZStd::shared_ptr& p0, const AZStd::shared_ptr& p1)
-{
- return CryIsSameClassInstance(p0.get(), p1.get());
-}
-
-
-namespace CompositeQuerySemantics
-{
- template
- AZStd::shared_ptr crycomposite_query(Src* p, const char* name, bool* pExposed = 0)
- {
- void* pComposite = p ? p->QueryComposite(name) : 0;
- pExposed ? *pExposed = pComposite != 0 : 0;
- return pComposite ? *static_cast*>(pComposite) : AZStd::shared_ptr();
- }
-
- template
- AZStd::shared_ptr crycomposite_query(const Src* p, const char* name, bool* pExposed = 0)
- {
- void* pComposite = p ? p->QueryComposite(name) : 0;
- pExposed ? *pExposed = pComposite != 0 : 0;
- return pComposite ? *static_cast*>(pComposite) : AZStd::shared_ptr();
- }
-
- template
- AZStd::shared_ptr crycomposite_query(const AZStd::shared_ptr& p, const char* name, bool* pExposed = 0)
- {
- return crycomposite_query(p.get(), name, pExposed);
- }
-
- template
- AZStd::shared_ptr crycomposite_query(const AZStd::shared_ptr& p, const char* name, bool* pExposed = 0)
- {
- return crycomposite_query(p.get(), name, pExposed);
- }
-
-#define _BEFRIEND_CRYCOMPOSITE_QUERY() \
- template \
- friend AZStd::shared_ptr CompositeQuerySemantics::crycomposite_query(Src*, const char*, bool*); \
- template \
- friend AZStd::shared_ptr CompositeQuerySemantics::crycomposite_query(const Src*, const char*, bool*); \
- template \
- friend AZStd::shared_ptr CompositeQuerySemantics::crycomposite_query(const AZStd::shared_ptr&, const char*, bool*); \
- template \
- friend AZStd::shared_ptr CompositeQuerySemantics::crycomposite_query(const AZStd::shared_ptr&, const char*, bool*);
-} // namespace CompositeQuerySemantics
-
-using CompositeQuerySemantics::crycomposite_query;
-
-
-#define _BEFRIEND_MAKE_SHARED() \
- template \
- friend class AZStd::Internal::sp_ms_deleter; \
- template \
- friend AZStd::shared_ptr AZStd::make_shared(); \
- template \
- friend AZStd::shared_ptr AZStd::allocate_shared(A const& a);
-
-// prevent explicit destruction from client side
-#define _PROTECTED_DTOR(iname) \
-protected: \
- virtual ~iname() {}
-
-
-// Befriending cryinterface_cast() and crycomposite_query() via CRYINTERFACE_DECLARE is actually only needed for ICryUnknown
-// since QueryInterface() and QueryComposite() are usually not redeclared in derived interfaces but it doesn't hurt either
-#define CRYINTERFACE_DECLARE(iname, iidHigh, iidLow) \
- _BEFRIEND_CRYIIDOF() \
- _BEFRIEND_CRYINTERFACE_CAST() \
- _BEFRIEND_CRYCOMPOSITE_QUERY() \
- _BEFRIEND_MAKE_SHARED() \
- _PROTECTED_DTOR(iname) \
- \
-private: \
- static const CryInterfaceID& IID() \
- { \
- static const CryInterfaceID iid = {(uint64) iidHigh##LL, (uint64) iidLow##LL}; \
- return iid; \
- } \
-public:
-
-
-struct ICryUnknown
-{
- CRYINTERFACE_DECLARE(ICryUnknown, 0x1000000010001000, 0x1000100000000000)
-
- virtual ICryFactory * GetFactory() const = 0;
-
-protected:
- virtual void* QueryInterface(const CryInterfaceID& iid) const = 0;
- virtual void* QueryComposite(const char* name) const = 0;
-};
-
-DECLARE_SMART_POINTERS(ICryUnknown);
-
-
-#endif // CRYINCLUDE_CRYEXTENSION_ICRYUNKNOWN_H
diff --git a/Code/CryEngine/CryCommon/CryExtension/Impl/ClassWeaver.h b/Code/CryEngine/CryCommon/CryExtension/Impl/ClassWeaver.h
deleted file mode 100644
index c3b5bb340c..0000000000
--- a/Code/CryEngine/CryCommon/CryExtension/Impl/ClassWeaver.h
+++ /dev/null
@@ -1,461 +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.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Part of CryEngine's extension framework.
-
-
-#ifndef CRYINCLUDE_CRYEXTENSION_IMPL_CLASSWEAVER_H
-#define CRYINCLUDE_CRYEXTENSION_IMPL_CLASSWEAVER_H
-#pragma once
-
-#include "TypeList.h"
-#include "Conversion.h"
-#include "RegFactoryNode.h"
-#include "../ICryUnknown.h"
-#include "../ICryFactory.h"
-#include
-
-namespace CW
-{
- namespace Internal
- {
- template
- struct InterfaceCast;
-
- template
- struct InterfaceCast
- {
- template
- static void* Op(T* p)
- {
- return (Dst*) p;
- }
- };
-
- template <>
- struct InterfaceCast
- {
- template
- static void* Op(T* p)
- {
- return const_cast(static_cast(static_cast(p)));
- }
- };
- }
-
- template
- struct InterfaceCast;
-
- template <>
- struct InterfaceCast
- {
- template
- static void* Op(T*, const CryInterfaceID&)
- {
- return 0;
- }
- };
-
- template
- struct InterfaceCast >
- {
- template
- static void* Op(T* p, const CryInterfaceID& iid)
- {
- if (cryiidof() == iid)
- {
- return Internal::InterfaceCast::Op(p);
- }
- return InterfaceCast::Op(p, iid);
- }
- };
-
- template